From 92de253a75eafd793ec91fbd9bd37ba8e987bffd Mon Sep 17 00:00:00 2001 From: Edmar Moretti Date: Wed, 22 Oct 2014 18:16:57 +0000 Subject: [PATCH] inclusão de opção para reiniciar o mapa no SAIKU --- ferramentas/saiku/cartograma.php | 362 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ferramentas/saiku/saiku-server/tomcat/webapps/ROOT/js/saiku/plugins/i3GeoMap/plugin.js | 8 +++++++- 2 files changed, 195 insertions(+), 175 deletions(-) diff --git a/ferramentas/saiku/cartograma.php b/ferramentas/saiku/cartograma.php index 7b07b2c..3522918 100644 --- a/ferramentas/saiku/cartograma.php +++ b/ferramentas/saiku/cartograma.php @@ -15,200 +15,214 @@ session_id($_POST["g_sid"]); session_start(); //obtem os layers que sao do sistema metaestat, sao regioes e que possuem selecao $map_file = $_SESSION["map_file"]; -$dados = (array) json_decode($_POST["dados"],true); -$opcoes = (array) json_decode($_POST["opcoes"],true); -$metadados = (array) json_decode($_POST["metadados"],true); -$nmetadados = count($metadados); -//pega o id da regiao (busca pelo posfixo geocod) -$codigo_tipo_regiao = $metadados[0]["colName"]; -$codigo_tipo_regiao = explode("#",$codigo_tipo_regiao); -$codigo_tipo_regiao = $codigo_tipo_regiao[1]; -/* -echo "
";
-var_dump($metadados);
-echo $codigo_tipo_regiao;exit;
-*/
-if(empty($codigo_tipo_regiao)){
-	echo "Nao foi possivel determinar o codigo da regiao ou localidade no sistema Metaestat";
-	exit;
+//remove as camadas do SAIKU
+if($_POST["opcoes"] == ""){
+	$mapa = ms_newMapObj($map_file);
+	$nlayers = $mapa->numlayers;
+	for($i=0;$i<$nlayers;$i++){
+		$ll = $mapa->getlayer($i);
+		if($ll->getmetadata("SAIKU") != ""){
+			$ll->set("status",MS_DELETE);
+		}
+	}
+	$mapa->save($map_file);
 }
-$m = new Metaestat();
+else{
+	$dados = (array) json_decode($_POST["dados"],true);
+	$opcoes = (array) json_decode($_POST["opcoes"],true);
+	$metadados = (array) json_decode($_POST["metadados"],true);
+	$nmetadados = count($metadados);
+	//pega o id da regiao (busca pelo posfixo geocod)
+	$codigo_tipo_regiao = $metadados[0]["colName"];
+	$codigo_tipo_regiao = explode("#",$codigo_tipo_regiao);
+	$codigo_tipo_regiao = $codigo_tipo_regiao[1];
+	/*
+	echo "
";
+	var_dump($metadados);
+	echo $codigo_tipo_regiao;exit;
+	*/
+	if(empty($codigo_tipo_regiao)){
+		echo "Nao foi possivel determinar o codigo da regiao ou localidade no sistema Metaestat";
+		exit;
+	}
+	$m = new Metaestat();
 
-$meta = $m->listaTipoRegiao($codigo_tipo_regiao);
-$titulolayer = $meta["nome_tipo_regiao"];
-if(empty($titulolayer)){
-	echo "Nao foi possivel encontrar a regiao ou localidade no sistema Metaestat";
-	exit;
-}
-$titulolayer = mb_convert_encoding($titulolayer,"ISO-8859-1",mb_detect_encoding($titulolayer));
-$conexao = $m->listaConexao($meta["codigo_estat_conexao"],true);
-$conexao = "user=".$conexao["usuario"]." password=".$conexao["senha"]." dbname=".$conexao["bancodedados"]." host=".$conexao["host"]." port=".$conexao["porta"]."";
-$colunageo = $meta["colunageo"];
-$sqlColunaGeo = $meta["colunageo"];
-$srid = $meta["srid"];
-$colunastabela = $m->colunasTabela($meta["codigo_estat_conexao"],$meta["esquemadb"],$meta["tabela"],"geometry","!=");
-$tipoLayer = "POLYGON";
-//define a coluna geo correta
-if($opcoes["tipo"] == "calor" || $opcoes["tipo"] == "mapaPizzas" || $opcoes["tipo"] == "mapaBarras" || $opcoes["tipo"] == "raiosProporcionais" || $opcoes["tipo"] == "circulosProporcionais"){
-	if($meta["colunacentroide"] != ""){
-		$colunageo = $meta["colunacentroide"];
-		$sqlColunaGeo = $meta["colunacentroide"];
+	$meta = $m->listaTipoRegiao($codigo_tipo_regiao);
+	$titulolayer = $meta["nome_tipo_regiao"];
+	if(empty($titulolayer)){
+		echo "Nao foi possivel encontrar a regiao ou localidade no sistema Metaestat";
+		exit;
 	}
-	$sqlColunaGeo = "st_centroid(".$colunageo.")";
-	$tipoLayer = "POINT";
-	if($opcoes["tipo"] == "mapaBarras" || $opcoes["tipo"] == "mapaPizzas"){
-		$tipoLayer = "CHART";
+	$titulolayer = mb_convert_encoding($titulolayer,"ISO-8859-1",mb_detect_encoding($titulolayer));
+	$conexao = $m->listaConexao($meta["codigo_estat_conexao"],true);
+	$conexao = "user=".$conexao["usuario"]." password=".$conexao["senha"]." dbname=".$conexao["bancodedados"]." host=".$conexao["host"]." port=".$conexao["porta"]."";
+	$colunageo = $meta["colunageo"];
+	$sqlColunaGeo = $meta["colunageo"];
+	$srid = $meta["srid"];
+	$colunastabela = $m->colunasTabela($meta["codigo_estat_conexao"],$meta["esquemadb"],$meta["tabela"],"geometry","!=");
+	$tipoLayer = "POLYGON";
+	//define a coluna geo correta
+	if($opcoes["tipo"] == "calor" || $opcoes["tipo"] == "mapaPizzas" || $opcoes["tipo"] == "mapaBarras" || $opcoes["tipo"] == "raiosProporcionais" || $opcoes["tipo"] == "circulosProporcionais"){
+		if($meta["colunacentroide"] != ""){
+			$colunageo = $meta["colunacentroide"];
+			$sqlColunaGeo = $meta["colunacentroide"];
+		}
+		$sqlColunaGeo = "st_centroid(".$colunageo.")";
+		$tipoLayer = "POINT";
+		if($opcoes["tipo"] == "mapaBarras" || $opcoes["tipo"] == "mapaPizzas"){
+			$tipoLayer = "CHART";
+		}
 	}
-}
-//var_dump($metadados);exit;
-//constroi um sql que retorna os dados na forma de uma tabela inline
-$nomesColunas = array();
-$valores = array();
-for($i=0;$i<$nmetadados;$i++){
-	if($metadados[$i]["colName"] != ""){
-		$nomesColunas[] = $metadados[$i]["colName"];
+	//var_dump($metadados);exit;
+	//constroi um sql que retorna os dados na forma de uma tabela inline
+	$nomesColunas = array();
+	$valores = array();
+	for($i=0;$i<$nmetadados;$i++){
+		if($metadados[$i]["colName"] != ""){
+			$nomesColunas[] = $metadados[$i]["colName"];
+		}
 	}
-}
-$nomesColunas[0] = "geocodigo";
-$codigosRegioes = array();
-//select * from (values (1000,2),(5,6)) as teste ("a","b") where
+	$nomesColunas[0] = "geocodigo";
+	$codigosRegioes = array();
+	//select * from (values (1000,2),(5,6)) as teste ("a","b") where
 
-foreach($dados as $dado){
-	//$codigosRegioes[] = $dado[0];
-	$linha = array();
-	for($i=0;$i<$nmetadados;$i++){
-		$linha[] = $dado[$i];
+	foreach($dados as $dado){
+		//$codigosRegioes[] = $dado[0];
+		$linha = array();
+		for($i=0;$i<$nmetadados;$i++){
+			$linha[] = $dado[$i];
+		}
+		$valores[] = "(".implode(",",$linha).")";
 	}
-	$valores[] = "(".implode(",",$linha).")";
-}
-//
-//o nome da coluna com os dados e acentuado em alguns casos
-//por isso, camadas baseadas em plugins precisam mudar isso
-if($opcoes["tipo"] == "calor" && count($nomesColunas) > 1){
-	$nomesColunas[count($nomesColunas) - 1] = "colunaCalor";
-}
-$sqldados = "
-	select st_setsrid(".$sqlColunaGeo.",".$srid.") as $colunageo, ".implode(",",$colunastabela).",dataset.*
-	from ".$meta["esquemadb"].".".$meta["tabela"]." INNER JOIN
-	(values ".implode(",",$valores).') as dataset ("'.implode('","',$nomesColunas).'") ON geocodigo = '.$meta["identificador"];
-$sqlmapa = $colunageo." from ($sqldados) as foo using unique gid using srid=$srid";
+	//
+	//o nome da coluna com os dados e acentuado em alguns casos
+	//por isso, camadas baseadas em plugins precisam mudar isso
+	if($opcoes["tipo"] == "calor" && count($nomesColunas) > 1){
+		$nomesColunas[count($nomesColunas) - 1] = "colunaCalor";
+	}
+	$sqldados = "
+		select st_setsrid(".$sqlColunaGeo.",".$srid.") as $colunageo, ".implode(",",$colunastabela).",dataset.*
+		from ".$meta["esquemadb"].".".$meta["tabela"]." INNER JOIN
+		(values ".implode(",",$valores).') as dataset ("'.implode('","',$nomesColunas).'") ON geocodigo = '.$meta["identificador"];
+	$sqlmapa = $colunageo." from ($sqldados) as foo using unique ".$meta["identificador"]." using srid=$srid";
 
-//para o tema com o outline caso o saiku tenha sido aberto de fora do i3Geo
-$sqldados1 = "
-select st_setsrid(".$meta["colunageo"].",".$srid.") as ".$meta["colunageo"].", ".implode(",",$colunastabela).",dataset.*
-from ".$meta["esquemadb"].".".$meta["tabela"]." INNER JOIN
-(values ".implode(",",$valores).') as dataset ("'.implode('","',$nomesColunas).'") ON geocodigo = '.$meta["identificador"];
+	//para o tema com o outline caso o saiku tenha sido aberto de fora do i3Geo
+	$sqldados1 = "
+	select st_setsrid(".$meta["colunageo"].",".$srid.") as ".$meta["colunageo"].", ".implode(",",$colunastabela).",dataset.*
+	from ".$meta["esquemadb"].".".$meta["tabela"]." INNER JOIN
+	(values ".implode(",",$valores).') as dataset ("'.implode('","',$nomesColunas).'") ON geocodigo = '.$meta["identificador"];
 
-$sqlmapa1 = $meta["colunageo"]." from ($sqldados1) as foo using unique gid using srid=$srid";
+	$sqlmapa1 = $meta["colunageo"]." from ($sqldados1) as foo using unique ".$meta["identificador"]." using srid=$srid";
 
-$mapa = ms_newMapObj($map_file);
-$nlayers = $mapa->numlayers;
-for($i=0;$i<$nlayers;$i++){
-	$ll = $mapa->getlayer($i);
-	if($ll->getmetadata("SAIKU") == $opcoes["tipo"]){
-		$ll->set("status",MS_DELETE);
-	}
-	else{
-		if($ll->getmetadata("SAIKU") != ""){
-			$ll->set("status",MS_OFF);
+	$mapa = ms_newMapObj($map_file);
+	$nlayers = $mapa->numlayers;
+	for($i=0;$i<$nlayers;$i++){
+		$ll = $mapa->getlayer($i);
+		if($ll->getmetadata("SAIKU") == $opcoes["tipo"]){
+			$ll->set("status",MS_DELETE);
+		}
+		else{
+			if($ll->getmetadata("SAIKU") != ""){
+				$ll->set("status",MS_OFF);
+			}
+		}
+		if($ll->getmetadata("tema") == "Limites"){
+			$ll->set("status",MS_DELETE);
 		}
 	}
-	if($ll->getmetadata("tema") == "Limites"){
-		$ll->set("status",MS_DELETE);
-	}
-}
-
-$layer = ms_newLayerObj($mapa);
-$nomeLayer = nomeRandomico();
-$l = array();
-$l[] = "LAYER";
-$l[] = '	NAME "'.$nomeLayer.'"';
-$l[] = "	TYPE $tipoLayer";
-$l[] = "	DATA '".$sqlmapa."'";
-$l[] = '	CONNECTION "'.$conexao.'"';
-$l[] = '	CONNECTIONTYPE POSTGIS';
-$l[] = '	TEMPLATE "none.htm"';
-$l[] = '	STATUS DEFAULT';
-$l[] = '	METADATA';
-$l[] = '		TEMA "'.$titulolayer.' - '.$nomesColunas[1].' - '.$opcoes["tipo"].'"';
-$l[] = '		CLASSE "SIM"';
-$l[] = '		SAIKU "'.$opcoes["tipo"].'"';
-$l[] = '		TIP "'.$meta["colunanomeregiao"].','.implode(',',$nomesColunas).'"';
-$l[] = '		METAESTAT_CODIGO_TIPO_REGIAO "'.$codigo_tipo_regiao.'"';
-$l[] = '	END	';
 
-$l = implode(PHP_EOL,$l);
+	$layer = ms_newLayerObj($mapa);
+	$nomeLayer = nomeRandomico();
+	$l = array();
+	$l[] = "LAYER";
+	$l[] = '	NAME "'.$nomeLayer.'"';
+	$l[] = "	TYPE $tipoLayer";
+	$l[] = "	DATA '".$sqlmapa."'";
+	$l[] = '	CONNECTION "'.$conexao.'"';
+	$l[] = '	CONNECTIONTYPE POSTGIS';
+	$l[] = '	TEMPLATE "none.htm"';
+	$l[] = '	STATUS DEFAULT';
+	$l[] = '	METADATA';
+	$l[] = '		TEMA "'.$titulolayer.' - '.$nomesColunas[1].' - '.$opcoes["tipo"].'"';
+	$l[] = '		CLASSE "SIM"';
+	$l[] = '		SAIKU "'.$opcoes["tipo"].'"';
+	$l[] = '		TIP "'.$meta["colunanomeregiao"].','.implode(',',$nomesColunas).'"';
+	$l[] = '		METAESTAT_CODIGO_TIPO_REGIAO "'.$codigo_tipo_regiao.'"';
+	$l[] = '	END	';
 
-if($opcoes["tipo"] == "raiosProporcionais"){
-	$l .= implode(PHP_EOL,raiosProporcionais(1,$nomesColunas[1]));
-}
-if($opcoes["tipo"] == "circulosProporcionais"){
-	$l .= '	OPACITY 50';
-	$l .= implode(PHP_EOL,circulosProporcionais(1,$nomesColunas[1]));
-}
-if($opcoes["tipo"] == "coresChapadas"){
-	$l .= '	OPACITY 50';
-	$l .= implode(PHP_EOL,coresChapadas(1,$nomesColunas[1]));
-}
-if($opcoes["tipo"] == "mapaBarras"){
-	$l .= PHP_EOL.' PROCESSING "CHART_SIZE='.$opcoes["size"].' '.$opcoes["size"].'"';
-	$l .= PHP_EOL.' PROCESSING "CHART_TYPE=bar"';
-	$l .= implode(PHP_EOL,mapaBarras($nomesColunas));
-}
-if($opcoes["tipo"] == "mapaPizzas"){
-	$l .= PHP_EOL.' PROCESSING "CHART_SIZE='.$opcoes["size"].' '.$opcoes["size"].'"';
-	$l .= PHP_EOL.' PROCESSING "CHART_TYPE=pie"';
-	$l .= implode(PHP_EOL,mapaBarras($nomesColunas));
-}
-$l .= PHP_EOL.'END';
+	$l = implode(PHP_EOL,$l);
 
-//echo $l;exit;
-$layer->updateFromString($l);
+	if($opcoes["tipo"] == "raiosProporcionais"){
+		$l .= implode(PHP_EOL,raiosProporcionais(1,$nomesColunas[1]));
+	}
+	if($opcoes["tipo"] == "circulosProporcionais"){
+		$l .= '	OPACITY 50';
+		$l .= implode(PHP_EOL,circulosProporcionais(1,$nomesColunas[1]));
+	}
+	if($opcoes["tipo"] == "coresChapadas"){
+		$l .= '	OPACITY 50';
+		$l .= implode(PHP_EOL,coresChapadas(1,$nomesColunas[1]));
+	}
+	if($opcoes["tipo"] == "mapaBarras"){
+		$l .= PHP_EOL.' PROCESSING "CHART_SIZE='.$opcoes["size"].' '.$opcoes["size"].'"';
+		$l .= PHP_EOL.' PROCESSING "CHART_TYPE=bar"';
+		$l .= implode(PHP_EOL,mapaBarras($nomesColunas));
+	}
+	if($opcoes["tipo"] == "mapaPizzas"){
+		$l .= PHP_EOL.' PROCESSING "CHART_SIZE='.$opcoes["size"].' '.$opcoes["size"].'"';
+		$l .= PHP_EOL.' PROCESSING "CHART_TYPE=pie"';
+		$l .= implode(PHP_EOL,mapaBarras($nomesColunas));
+	}
+	$l .= PHP_EOL.'END';
 
-//inclui o layer com o contorno se for o caso
-if($opcoes["tipo"] != "calor" && empty($_GET["origem"]) && ($tipoLayer == "CHART" || $tipoLayer == "POINT")){
-	$layer = ms_newLayerObj($mapa);
-	$nomeLayer = nomeRandomico();
-	$l = array();
-	$l[] = "LAYER";
-	$l[] = '	NAME "'.$nomeLayer.'"';
-	$l[] = "	TYPE POLYGON";
-	$l[] = "	DATA '".$sqlmapa1."'";
-	$l[] = '	CONNECTION "'.$conexao.'"';
-	$l[] = '	CONNECTIONTYPE POSTGIS';
-	$l[] = '	TEMPLATE "none.htm"';
-	$l[] = '	STATUS DEFAULT';
-	$l[] = '	METADATA';
-	$l[] = '		TEMA "Limites"';
-	$l[] = '		CLASSE "SIM"';
-	$l[] = '		SAIKU "'.$opcoes["tipo"].'"';
-	$l[] = '		METAESTAT_CODIGO_TIPO_REGIAO "'.$codigo_tipo_regiao.'"';
-	$l[] = '	END	';
-	$l[] = '	CLASS	';
-	$l[] = '	OUTLINECOLOR 255 255 255	';
-	$l[] = '	END	';
-	$l[] = 'END	';
-	$l = implode(PHP_EOL,$l);
+	//echo $l;exit;
 	$layer->updateFromString($l);
-}
 
-$mapa->save($map_file);
+	//inclui o layer com o contorno se for o caso
+	if($opcoes["tipo"] != "calor" && empty($_GET["origem"]) && ($tipoLayer == "CHART" || $tipoLayer == "POINT")){
+		$layer = ms_newLayerObj($mapa);
+		$nomeLayer = nomeRandomico();
+		$l = array();
+		$l[] = "LAYER";
+		$l[] = '	NAME "'.$nomeLayer.'"';
+		$l[] = "	TYPE POLYGON";
+		$l[] = "	DATA '".$sqlmapa1."'";
+		$l[] = '	CONNECTION "'.$conexao.'"';
+		$l[] = '	CONNECTIONTYPE POSTGIS';
+		$l[] = '	TEMPLATE "none.htm"';
+		$l[] = '	STATUS DEFAULT';
+		$l[] = '	METADATA';
+		$l[] = '		TEMA "Limites"';
+		$l[] = '		CLASSE "SIM"';
+		$l[] = '		SAIKU "'.$opcoes["tipo"].'"';
+		$l[] = '		METAESTAT_CODIGO_TIPO_REGIAO "'.$codigo_tipo_regiao.'"';
+		$l[] = '	END	';
+		$l[] = '	CLASS	';
+		$l[] = '	OUTLINECOLOR 255 255 255	';
+		$l[] = '	END	';
+		$l[] = 'END	';
+		$l = implode(PHP_EOL,$l);
+		$layer->updateFromString($l);
+	}
 
-if($opcoes["tipo"] == "coresChapadas"){
-	include(dirname(__FILE__)."/../../classesphp/classe_alteraclasse.php");
-	$m = new Alteraclasse($map_file,$nomeLayer);
-	$cor = $opcoes["cores"][0];
-	$cori = $cor["red"].','.$cor["green"].','.$cor["blue"];
-	$cor = $opcoes["cores"][1];
-	$corf = $cor["red"].','.$cor["green"].','.$cor["blue"];
-	$retorno = $m->alteraCoresClasses($cori,$corf);
-	$m->salva();
-}
-if($opcoes["tipo"] == "calor"){
-	$parametros = '{"plugin":"heatmap","parametros":{"tipoGradiente":"default","opacity":".8","valorPonto":'.$opcoes["valorPonto"].',"coluna":"'.$nomesColunas[1].'","radius":"'.$opcoes["raio"].'"}}';
-	$layer->setmetadata("PLUGINI3GEO",$parametros);
-	$layer->setmetadata("SAIKU",$opcoes["tipo"]);
 	$mapa->save($map_file);
+
+	if($opcoes["tipo"] == "coresChapadas"){
+		include(dirname(__FILE__)."/../../classesphp/classe_alteraclasse.php");
+		$m = new Alteraclasse($map_file,$nomeLayer);
+		$cor = $opcoes["cores"][0];
+		$cori = $cor["red"].','.$cor["green"].','.$cor["blue"];
+		$cor = $opcoes["cores"][1];
+		$corf = $cor["red"].','.$cor["green"].','.$cor["blue"];
+		$retorno = $m->alteraCoresClasses($cori,$corf);
+		$m->salva();
+	}
+	if($opcoes["tipo"] == "calor"){
+		$parametros = '{"plugin":"heatmap","parametros":{"tipoGradiente":"default","opacity":".8","valorPonto":'.$opcoes["valorPonto"].',"coluna":"'.$nomesColunas[1].'","radius":"'.$opcoes["raio"].'"}}';
+		$layer->setmetadata("PLUGINI3GEO",$parametros);
+		$layer->setmetadata("SAIKU",$opcoes["tipo"]);
+		$mapa->save($map_file);
+	}
 }
 header("Location:".$opcoes["locaplic"]."/mashups/openlayers.php?temas=".$map_file."&DESLIGACACHE=sim&botoes=legenda,pan,zoombox,zoomtot,zoomin,zoomout,distancia,area,identifica&controles=navigation,layerswitcher,scaleline,mouseposition,overviewmap,keyboarddefaults&tiles=false&mapext=".$opcoes["mapext"]);
 
diff --git a/ferramentas/saiku/saiku-server/tomcat/webapps/ROOT/js/saiku/plugins/i3GeoMap/plugin.js b/ferramentas/saiku/saiku-server/tomcat/webapps/ROOT/js/saiku/plugins/i3GeoMap/plugin.js
index 306f985..acab38d 100644
--- a/ferramentas/saiku/saiku-server/tomcat/webapps/ROOT/js/saiku/plugins/i3GeoMap/plugin.js
+++ b/ferramentas/saiku/saiku-server/tomcat/webapps/ROOT/js/saiku/plugins/i3GeoMap/plugin.js
@@ -53,7 +53,8 @@ var i3GeoMap = Backbone.View.extend({
 						" "+
 						" "+
 						" "+
-						" "+
+						" "+
+						" "+
 					//""+
 				""+
 			""+
@@ -97,6 +98,11 @@ var i3GeoMap = Backbone.View.extend({
 	atualizarMapa: function(){
 		document.getElementById('formi3GeoMap').submit();
 	},
+	reiniciarMapa: function(){
+		document.getElementById('formi3GeoMapOpcoes').value = "reinicia";
+		document.getElementById('formi3GeoMapdados').value = "";
+		document.getElementById('formi3GeoMap').submit();
+	},
 	show: function(event, ui) {
 		//$(this.workspace.el).find('.workspace_results table').toggle();
 		$(this.el).toggle();
--
libgit2 0.21.2