diff --git a/admin/admin.db b/admin/admin.db index 45923fa..628246d 100644 Binary files a/admin/admin.db and b/admin/admin.db differ diff --git a/admin/php/classe_metaestat.php b/admin/php/classe_metaestat.php index 6e0953f..7e6fc8d 100755 --- a/admin/php/classe_metaestat.php +++ b/admin/php/classe_metaestat.php @@ -41,6 +41,7 @@ class Metaestat{ protected $dbhw; protected $convUTF; public $dir_tmp; + public $nomecache; /* Function: __construct @@ -63,10 +64,14 @@ class Metaestat{ if(!empty($esquemaadmin)){ $this->esquemaadmin = $esquemaadmin."."; } + $this->nomecache = $this->nomeCache(); } function __destruct(){ $this->fechaConexao; } + function nomeCache(){ + return md5(implode("x",$_REQUEST)); + } function nomeRandomico($n=10){ $nomes = ""; $a = 'azertyuiopqsdfghjklmwxcvbnABCDEFGHIJKLMNOPQRSTUVWXYZ'; @@ -262,81 +267,83 @@ class Metaestat{ return array("sqlagrupamento"=>$sqlagrupamento,"sql"=>$sql,"sqlmapserver"=>$sqlgeo,"filtro"=>$filtro,"colunas"=>$colunas); } function mapfileMedidaVariavel($id_medida_variavel,$filtro="",$todasascolunas = 0,$tipolayer="polygon",$titulolayer="",$id_classificacao="",$agruparpor=""){ - if(empty($tipolayer)){ - $tipolayer = "polygon"; - } - $meta = $this->listaMedidaVariavel("",$id_medida_variavel); - if($titulolayer == ""){ - $titulolayer = $meta["nomemedida"]; - } - $titulolayer = mb_convert_encoding($titulolayer,"ISO-8859-1",mb_detect_encoding($titulolayer)); - $conexao = $this->listaConexao($meta["codigo_estat_conexao"],true); - $conexao = "user=".$conexao["usuario"]." password=".$conexao["senha"]." dbname=".$conexao["bancodedados"]." host=".$conexao["host"]." port=".$conexao["porta"].""; - //echo $conexao;exit; - $sql = $this->sqlMedidaVariavel($id_medida_variavel,$todasascolunas,$agruparpor,$tipolayer); - $sqlf = $sql["sqlmapserver"]; - if(!empty($filtro)){ - $sqlf = str_replace(") as foo"," AND ".$filtro." ) as foo",$sqlf); - } - $classes = ""; - if(!empty($id_classificacao)){ - $classes = $this->listaClasseClassificacao($id_classificacao); - } - $rand = $this->nomeRandomico(); - $arq = $this->dir_tmp."/".$rand.".map"; - $dados[] = "MAP"; - $dados[] = 'SYMBOLSET "'.$this->locaplic.'/symbols/simbolosv6.sym"'; - $dados[] = 'FONTSET "'.$this->locaplic.'/symbols/fontes.txt"'; - $dados[] = "LAYER"; - $dados[] = ' NAME "'.$rand.'"'; - $dados[] = " TYPE $tipolayer"; - $dados[] = ' DATA "'.$sqlf.'"'; - $dados[] = ' CONNECTION "'.$conexao.'"'; - $dados[] = ' CONNECTIONTYPE POSTGIS'; - $dados[] = ' STATUS OFF'; - $dados[] = ' METADATA'; - $dados[] = ' TEMA "'.$titulolayer.'"'; - $dados[] = ' CLASSE "SIM"'; - $dados[] = ' END'; - if($classes == ""){ - $dados[] = ' CLASS'; - $dados[] = ' NAME ""'; - $dados[] = ' STYLE'; - $dados[] = ' COLOR 200 0 0'; - $dados[] = ' END'; - $dados[] = ' END'; - } - else{ - foreach($classes as $classe){ - //var_dump($classe);exit; + //$rand = $this->nomeRandomico(); + $arq = $this->dir_tmp."/".$this->nomecache.".map"; + if(!file_exists($arq)){ + if(empty($tipolayer)){ + $tipolayer = "polygon"; + } + $meta = $this->listaMedidaVariavel("",$id_medida_variavel); + if($titulolayer == ""){ + $titulolayer = $meta["nomemedida"]; + } + $titulolayer = mb_convert_encoding($titulolayer,"ISO-8859-1",mb_detect_encoding($titulolayer)); + $conexao = $this->listaConexao($meta["codigo_estat_conexao"],true); + $conexao = "user=".$conexao["usuario"]." password=".$conexao["senha"]." dbname=".$conexao["bancodedados"]." host=".$conexao["host"]." port=".$conexao["porta"].""; + //echo $conexao;exit; + $sql = $this->sqlMedidaVariavel($id_medida_variavel,$todasascolunas,$agruparpor,$tipolayer); + $sqlf = $sql["sqlmapserver"]; + if(!empty($filtro)){ + $sqlf = str_replace(") as foo"," AND ".$filtro." ) as foo",$sqlf); + } + $classes = ""; + if(!empty($id_classificacao)){ + $classes = $this->listaClasseClassificacao($id_classificacao); + } + $dados[] = "MAP"; + $dados[] = 'SYMBOLSET "'.$this->locaplic.'/symbols/simbolosv6.sym"'; + $dados[] = 'FONTSET "'.$this->locaplic.'/symbols/fontes.txt"'; + $dados[] = "LAYER"; + $dados[] = ' NAME "'.$this->nomecache.'"'; + $dados[] = " TYPE $tipolayer"; + $dados[] = ' DATA "'.$sqlf.'"'; + $dados[] = ' CONNECTION "'.$conexao.'"'; + $dados[] = ' CONNECTIONTYPE POSTGIS'; + $dados[] = ' STATUS OFF'; + $dados[] = ' METADATA'; + $dados[] = ' TEMA "'.$titulolayer.'"'; + $dados[] = ' CLASSE "SIM"'; + $dados[] = ' END'; + if($classes == ""){ $dados[] = ' CLASS'; - $dados[] = ' NAME "'.mb_convert_encoding($classe["titulo"],"ISO-8859-1",mb_detect_encoding($titulolayer)).'"'; - $dados[] = ' EXPRESSION '.$classe["expressao"]; + $dados[] = ' NAME ""'; $dados[] = ' STYLE'; - $dados[] = ' COLOR '.$classe["vermelho"].' '.$classe["verde"].' '.$classe["azul"]; - if(!empty($classe["tamanho"])){ - $dados[] = ' SIZE '.$classe["tamanho"]; - } - if(!empty($classe["simbolo"])){ - $dados[] = ' SYMBOL '.$classe["simbolo"]; - } - if(!empty($classe["otamanho"])){ - $dados[] = ' OUTLINEWIDTH '.$classe["otamanho"]; - } - if(!empty($classe["overmelho"]) || $classe["overmelho"] == "0"){ - $dados[] = ' OUTLINECOLOR '.$classe["overmelho"].' '.$classe["overde"].' '.$classe["oazul"]; - } + $dados[] = ' COLOR 200 0 0'; $dados[] = ' END'; $dados[] = ' END'; } + else{ + foreach($classes as $classe){ + //var_dump($classe);exit; + $dados[] = ' CLASS'; + $dados[] = ' NAME "'.mb_convert_encoding($classe["titulo"],"ISO-8859-1",mb_detect_encoding($titulolayer)).'"'; + $dados[] = ' EXPRESSION '.$classe["expressao"]; + $dados[] = ' STYLE'; + $dados[] = ' COLOR '.$classe["vermelho"].' '.$classe["verde"].' '.$classe["azul"]; + if(!empty($classe["tamanho"])){ + $dados[] = ' SIZE '.$classe["tamanho"]; + } + if(!empty($classe["simbolo"])){ + $dados[] = ' SYMBOL '.$classe["simbolo"]; + } + if(!empty($classe["otamanho"])){ + $dados[] = ' OUTLINEWIDTH '.$classe["otamanho"]; + } + if(!empty($classe["overmelho"]) || $classe["overmelho"] == "0"){ + $dados[] = ' OUTLINECOLOR '.$classe["overmelho"].' '.$classe["overde"].' '.$classe["oazul"]; + } + $dados[] = ' END'; + $dados[] = ' END'; + } + } + $dados[] = "END"; + $dados[] = "END"; + $fp = fopen($arq,"w"); + foreach ($dados as $dado){ + fwrite($fp,$dado."\n"); + } } - $dados[] = "END"; - $dados[] = "END"; - $fp = fopen($arq,"w"); - foreach ($dados as $dado){ - fwrite($fp,$dado."\n"); - } - return array("mapfile"=>$arq,"layer"=>$rand,"titulolayer"=>$titulolayer); + return array("mapfile"=>$arq,"layer"=>$this->nomecache,"titulolayer"=>$titulolayer); } function mapfileCompleto($mapfile){ $f = $this->base; diff --git a/classesjs/classe_arvoredecamadas.js b/classesjs/classe_arvoredecamadas.js index 6f210d5..424703c 100644 --- a/classesjs/classe_arvoredecamadas.js +++ b/classesjs/classe_arvoredecamadas.js @@ -745,11 +745,14 @@ i3GEO.arvoreDeCamadas = { n = lista.length; for(i=0;i 0){ + i3GEO.arvoreDeCamadas.ligaDesligaTemas(i3GEO.cartograma.CAMADAS.join(","),false); + } + }, + adicionaCamada: function(){ + //function mapfileMedidaVariavel($id_medida_variavel,$filtro="",$todasascolunas = 0,$tipolayer="polygon",$titulolayer="",$id_classificacao="",$agruparpor=""){ + var v = i3GEO.cartograma.verificaParametros(), + temp = function(retorno){ + if(i3GEO.arvoreDeCamadas.pegaTema(retorno.layer) == ""){ + i3GEO.cartograma.desligaCamadas(); + i3GEO.php.adtema(i3GEO.atualiza,retorno.mapfile); + i3GEO.cartograma.CAMADAS.push(retorno.layer); + } + }; + if(v != true){ + alert("erro: "+v); + } + i3GEO.php.mapfileMedidaVariavel( + temp, + $i("i3geoCartoComboMedidasVariavel").value, + i3GEO.cartograma.defineFiltro(), + 0, + $i("i3geoCartoComboTipoRep").value, + i3GEO.cartograma.defineTitulo(), + $i("i3geoCartoComboTipoClassificacao").value, + i3GEO.cartograma.defineAgruparPor() + ); + }, + defineTitulo: function(){ + //se nao tiver parametros, filtro e vazio + if(i3GEO.cartograma.parametros.dados.length == 0){ + return ""; + } + //se tiver parametro e todos estiverem vazios, aborta + var i,n,c,titulo, + t=[], + dados = i3GEO.cartograma.parametros.dados; + titulo = $i("i3geoCartoComboVariavel").options[$i("i3geoCartoComboVariavel").selectedIndex].label +" - "+ + $i("i3geoCartoComboMedidasVariavel").options[$i("i3geoCartoComboMedidasVariavel").selectedIndex].label +" - "+ + $i("i3geoCartoComboTipoRep").options[$i("i3geoCartoComboTipoRep").selectedIndex].label +" - "+ + $i("i3geoCartoComboTipoClassificacao").options[$i("i3geoCartoComboTipoClassificacao").selectedIndex].label; + n = dados.length; + for(i=0;i 0){ + return t.join(","); + } + else{ + return ""; + } + }, + verificaParametros: function(){ + var ok = true, + combos = ["i3geoCartoComboVariavel","i3geoCartoComboMedidasVariavel","i3geoCartoComboTipoRep","i3geoCartoComboTipoClassificacao"], + n = combos.length, + i,temp; + for(i=0;i


'+$trad("x58")+'

', + ins = '


'+$trad("x58")+'

', i; ins += ""; + ins += ""; + ins += "

' + + '

'+$trad("x65")+'

' + + ""; + if(onde){ + onde.innerHTML = ins; + new YAHOO.widget.Button( + "i3GEOcartoBotaoAdicionarCamada", + {onclick:{fn: i3GEO.cartograma.adicionaCamada}} + ); + $i("i3GEOcartoBotaoAdicionarCamada-button").style.width = i3GEO.cartograma.LARGURA - 25 + "px"; + } + return ins; + }, + comboTipoClassificacao: function(){ + var onde = $i("i3geoCartoTipoClassificacao"), + combo = $i("i3geoCartoComboMedidasVariavel"), + temp = function(dados){ + var n = dados.length, + ins = '

'+$trad("x66")+'

', + i; + ins += ""; + //{"id_classificacao":"1","nome":"Pela media","id_medida_variavel":"1","observacao":""} + if(onde){ + onde.innerHTML = ins; + } + return ins; + }; + i3GEO.cartograma.aguarde(onde); + i3GEO.php.listaClassificacaoMedida(combo.value,temp); + }, + comboTipoClassificacaoOnchange: function(){ + } } diff --git a/classesjs/classe_php.js b/classesjs/classe_php.js index a289da9..07c13f4 100644 --- a/classesjs/classe_php.js +++ b/classesjs/classe_php.js @@ -1464,5 +1464,23 @@ i3GEO.php = { relatorioVariavel: function(codigo_variavel,funcao){ var p = i3GEO.configura.locaplic+"/admin/php/metaestat.php?funcao=relatorioCompleto&codigo_variavel="+codigo_variavel+"&g_sid="+i3GEO.configura.sid; i3GEO.util.ajaxGet(p,funcao); + }, + /* + Function: listaClassificacaoMedida + + Lista as classificacoes de uma medida de variavel do sistema de metadados estatísticos + */ + listaClassificacaoMedida: function(id_medida_variavel,funcao){ + var p = i3GEO.configura.locaplic+"/admin/php/metaestat.php?funcao=listaClassificacaoMedida&id_medida_variavel="+id_medida_variavel+"&g_sid="+i3GEO.configura.sid; + i3GEO.util.ajaxGet(p,funcao); + }, + /* + Function: mapfileMedidaVariavel + + Adiciona uma camada ao mapa baseado no sistema de metadados estatísticos + */ + mapfileMedidaVariavel: function(funcao,id_medida_variavel,filtro,todasascolunas,tipolayer,titulolayer,id_classificacao,agruparpor){ + var p = i3GEO.configura.locaplic+"/admin/php/metaestat.php?funcao=mapfileMedidaVariavel&formato=json&id_medida_variavel="+id_medida_variavel+"&filtro="+filtro+"&todasascolunas="+todasascolunas+"&tipolayer="+tipolayer+"&titulolayer="+titulolayer+"&id_classificacao="+id_classificacao+"&agruparpor="+agruparpor+"&g_sid="+i3GEO.configura.sid; + i3GEO.util.ajaxGet(p,funcao); } }; \ No newline at end of file diff --git a/classesjs/dicionario.js b/classesjs/dicionario.js index f3c66fe..e3643b2 100644 --- a/classesjs/dicionario.js +++ b/classesjs/dicionario.js @@ -1978,6 +1978,27 @@ it:"" }], "x64":[ { +pt:"Adicionar camada ao mapa", +en:"", +es:"", +it:"" +}], +"x65":[ +{ +pt:"Como os dados serão representados", +en:"", +es:"", +it:"" +}], +"x66":[ +{ +pt:"Escolha um tipo de classificação", +en:"", +es:"", +it:"" +}], +"x67":[ +{ pt:"", en:"", es:"", -- libgit2 0.21.2