Commit c2dea8ae31c51d1f57ed3610b99c66c242b58cb4

Authored by Edmar Moretti
1 parent 3892bacd

Inclusão de formulário para seleção de variáveis na interface carto_ol.htm

admin/php/classe_metaestat.php
@@ -223,7 +223,6 @@ class Metaestat{ @@ -223,7 +223,6 @@ class Metaestat{
223 else{ 223 else{
224 $colunageo = $dadosgeo["colunacentroide"]; 224 $colunageo = $dadosgeo["colunacentroide"];
225 } 225 }
226 -  
227 if($todasascolunas == 0){ 226 if($todasascolunas == 0){
228 $sql = " SELECT d.".$dados["colunavalor"].",d.".$dados["colunaidgeo"]; 227 $sql = " SELECT d.".$dados["colunavalor"].",d.".$dados["colunaidgeo"];
229 if(!empty($agruparpor)){ 228 if(!empty($agruparpor)){
@@ -240,6 +239,7 @@ class Metaestat{ @@ -240,6 +239,7 @@ class Metaestat{
240 $sqlgeo .= " FROM ".$dados["esquemadb"].".".$dados["tabela"]." as d,".$dadosgeo["esquemadb"].".".$dadosgeo["tabela"]." as g "; 239 $sqlgeo .= " FROM ".$dados["esquemadb"].".".$dados["tabela"]." as d,".$dadosgeo["esquemadb"].".".$dadosgeo["tabela"]." as g ";
241 } 240 }
242 else{ 241 else{
  242 + $sqlagrupamento = " SELECT d.".$agruparpor." FROM ".$dados["esquemadb"].".".$dados["tabela"]." as d group by ".$agruparpor." order by ".$agruparpor;
243 $sqlgeo .= " FROM (SELECT sum(".$dados["colunavalor"].") as ".$dados["colunavalor"].",".$dados["colunaidgeo"].",".$agruparpor." FROM ".$dados["esquemadb"].".".$dados["tabela"] ." group by ".$agruparpor.",".$dados["colunaidgeo"].") as d, ".$dadosgeo["esquemadb"].".".$dadosgeo["tabela"]." as g"; 243 $sqlgeo .= " FROM (SELECT sum(".$dados["colunavalor"].") as ".$dados["colunavalor"].",".$dados["colunaidgeo"].",".$agruparpor." FROM ".$dados["esquemadb"].".".$dados["tabela"] ." group by ".$agruparpor.",".$dados["colunaidgeo"].") as d, ".$dadosgeo["esquemadb"].".".$dadosgeo["tabela"]." as g";
244 $sql .= " FROM (SELECT sum(".$dados["colunavalor"].") as ".$dados["colunavalor"].",".$dados["colunaidgeo"].",".$agruparpor." FROM ".$dados["esquemadb"].".".$dados["tabela"] ." group by ".$agruparpor.",".$dados["colunaidgeo"].") as d "; 244 $sql .= " FROM (SELECT sum(".$dados["colunavalor"].") as ".$dados["colunavalor"].",".$dados["colunaidgeo"].",".$agruparpor." FROM ".$dados["esquemadb"].".".$dados["tabela"] ." group by ".$agruparpor.",".$dados["colunaidgeo"].") as d ";
245 } 245 }
@@ -259,7 +259,7 @@ class Metaestat{ @@ -259,7 +259,7 @@ class Metaestat{
259 //atencao: cuidado ao alterar essa string pois ') as foo' pode ser usado para replace em outras funcoes 259 //atencao: cuidado ao alterar essa string pois ') as foo' pode ser usado para replace em outras funcoes
260 $sqlgeo = $colunageo." from ($sqlgeo) as foo using unique ".$dados["colunaidgeo"]." using srid=".$dadosgeo["srid"]; 260 $sqlgeo = $colunageo." from ($sqlgeo) as foo using unique ".$dados["colunaidgeo"]." using srid=".$dadosgeo["srid"];
261 $colunas = $this->colunasTabela($dados["codigo_estat_conexao"],$dados["esquemadb"],$dados["tabela"]); 261 $colunas = $this->colunasTabela($dados["codigo_estat_conexao"],$dados["esquemadb"],$dados["tabela"]);
262 - return array("sql"=>$sql,"sqlmapserver"=>$sqlgeo,"filtro"=>$filtro,"colunas"=>$colunas); 262 + return array("sqlagrupamento"=>$sqlagrupamento,"sql"=>$sql,"sqlmapserver"=>$sqlgeo,"filtro"=>$filtro,"colunas"=>$colunas);
263 } 263 }
264 function mapfileMedidaVariavel($id_medida_variavel,$filtro="",$todasascolunas = 0,$tipolayer="polygon",$titulolayer="",$id_classificacao="",$agruparpor=""){ 264 function mapfileMedidaVariavel($id_medida_variavel,$filtro="",$todasascolunas = 0,$tipolayer="polygon",$titulolayer="",$id_classificacao="",$agruparpor=""){
265 if(empty($tipolayer)){ 265 if(empty($tipolayer)){
@@ -406,6 +406,21 @@ class Metaestat{ @@ -406,6 +406,21 @@ class Metaestat{
406 } 406 }
407 return false; 407 return false;
408 } 408 }
  409 + function valorUnicoMedidaVariavel($id_medida_variavel,$coluna){
  410 + $sqlf = $this->sqlMedidaVariavel($id_medida_variavel,0,$coluna);
  411 + $sqlf = $sqlf["sqlagrupamento"];
  412 + $metaVariavel = $this->listaMedidaVariavel("",$id_medida_variavel);
  413 + if(!empty($metaVariavel["codigo_estat_conexao"])){
  414 + $c = $this->listaConexao($metaVariavel["codigo_estat_conexao"],true);
  415 + $dbhold = $this->dbh;
  416 + $dbh = new PDO('pgsql:dbname='.$c["bancodedados"].';user='.$c["usuario"].';password='.$c["senha"].';host='.$c["host"].';port='.$c["porta"]);
  417 + $this->dbh = $dbh;
  418 + $res = $this->execSQL($sqlf);
  419 + $this->dbh = $dbhold;
  420 + return $res;
  421 + }
  422 + return false;
  423 + }
409 function sumarioMedidaVariavel($id_medida_variavel,$filtro="",$agruparpor=""){ 424 function sumarioMedidaVariavel($id_medida_variavel,$filtro="",$agruparpor=""){
410 if(!empty($agruparpor)){ 425 if(!empty($agruparpor)){
411 $dados = $this->dadosMedidaVariavel($id_medida_variavel,$filtro,1); 426 $dados = $this->dadosMedidaVariavel($id_medida_variavel,$filtro,1);
@@ -961,7 +976,17 @@ class Metaestat{ @@ -961,7 +976,17 @@ class Metaestat{
961 //echo $sql;exit; 976 //echo $sql;exit;
962 return $this->execSQL($sql,$id_parametro_medida); 977 return $this->execSQL($sql,$id_parametro_medida);
963 } 978 }
964 - 979 + function listaValoresParametro($id_parametro_medida){
  980 + $parametro = $this->listaParametro("",$id_parametro_medida);
  981 + //$medida = $this->listaMedidaVariavel("",$parametro["id_medida_variavel"]);
  982 + $sm = $this->valorUnicoMedidaVariavel($parametro["id_medida_variavel"],$parametro["coluna"]);
  983 + $nsm = array();
  984 + foreach($sm as $s){
  985 + $nsm[] = $s[$parametro["coluna"]];
  986 + }
  987 + return $nsm;
  988 + exit;
  989 + }
965 /* 990 /*
966 Function: listaTipoPeriodo 991 Function: listaTipoPeriodo
967 992
admin/php/metaestat.php
@@ -151,6 +151,11 @@ switch (strtoupper($funcao)) @@ -151,6 +151,11 @@ switch (strtoupper($funcao))
151 retornaJSON($m->listaParametro($id_medida_variavel,$id_parametro_medida)); 151 retornaJSON($m->listaParametro($id_medida_variavel,$id_parametro_medida));
152 exit; 152 exit;
153 break; 153 break;
  154 + case "LISTAVALORESPARAMETRO":
  155 + $m = new Metaestat();
  156 + retornaJSON($m->listaValoresParametro($id_parametro_medida));
  157 + exit;
  158 + break;
154 /* 159 /*
155 Valor: LISTAUNIDADEMEDIDA 160 Valor: LISTAUNIDADEMEDIDA
156 161
classesjs/classe_cartograma.js
@@ -39,8 +39,8 @@ i3GEO.cartograma = { @@ -39,8 +39,8 @@ i3GEO.cartograma = {
39 INTERFACE: "flutuante", 39 INTERFACE: "flutuante",
40 TOP: 50, 40 TOP: 50,
41 LEFT: 100, 41 LEFT: 100,
42 - LARGURA: 250,  
43 - ALTURA: 100, 42 + LARGURA: 260,
  43 + ALTURA: 300,
44 inicia: function(iddiv){ 44 inicia: function(iddiv){
45 if(!iddiv){ 45 if(!iddiv){
46 iddiv = "i3geoCartoParametros_corpo"; 46 iddiv = "i3geoCartoParametros_corpo";
@@ -58,9 +58,9 @@ i3GEO.cartograma = { @@ -58,9 +58,9 @@ i3GEO.cartograma = {
58 var onde = $i("i3geoCartoVariaveis"), 58 var onde = $i("i3geoCartoVariaveis"),
59 temp = function(dados){ 59 temp = function(dados){
60 var n = dados.length, 60 var n = dados.length,
61 - ins = "", 61 + ins = '<p class="paragrafo" >'+$trad("x58")+'</p>',
62 i; 62 i;
63 - ins = "<select style='width:"+(i3GEO.cartograma.LARGURA - 10)+"px' onchange=''><option value=''>---</option>"; 63 + ins += "<select style='width:"+(i3GEO.cartograma.LARGURA - 20)+"px' onchange='i3GEO.cartograma.comboVariaveisOnchange(this)'><option value=''>---</option>";
64 for(i=0;i<n;i++){ 64 for(i=0;i<n;i++){
65 ins += "<option title='"+dados[i].descricao+"' value='"+dados[i].codigo_variavel+"'>"+dados[i].nome+"</option>"; 65 ins += "<option title='"+dados[i].descricao+"' value='"+dados[i].codigo_variavel+"'>"+dados[i].nome+"</option>";
66 } 66 }
@@ -73,11 +73,143 @@ i3GEO.cartograma = { @@ -73,11 +73,143 @@ i3GEO.cartograma = {
73 i3GEO.cartograma.aguarde(onde); 73 i3GEO.cartograma.aguarde(onde);
74 i3GEO.php.listaVariavel(temp); 74 i3GEO.php.listaVariavel(temp);
75 }, 75 },
  76 + comboVariaveisOnchange: function(combo){
  77 + if(combo.value != ""){
  78 + i3GEO.cartograma.comboMedidasVariavel(combo.value);
  79 + }
  80 + else{
  81 + $i("i3geoCartoMedidasVariavel").innerHTML = "";
  82 + $i("i3geoCartoParametrosMedidasVariavel").innerHTML = "";
  83 + }
  84 + },
  85 + comboMedidasVariavel: function(codigo_variavel){
  86 + var onde = $i("i3geoCartoMedidasVariavel"),
  87 + temp = function(dados){
  88 + var n = dados.length,
  89 + ins = '<p class="paragrafo" >'+$trad("x59")+'</p>',
  90 + i;
  91 + ins += "<select style='width:"+(i3GEO.cartograma.LARGURA - 20)+"px' onchange='i3GEO.cartograma.comboMedidaVariavelOnchange(this)'><option value=''>---</option>";
  92 + for(i=0;i<n;i++){
  93 + ins += "<option value='"+dados[i].id_medida_variavel+"'>"+dados[i].nomemedida+"</option>";
  94 + }
  95 + ins += "</select>";
  96 + if(onde){
  97 + onde.innerHTML = ins;
  98 + }
  99 + return ins;
  100 + };
  101 + i3GEO.cartograma.aguarde(onde);
  102 + i3GEO.php.listaMedidaVariavel(codigo_variavel,temp);
  103 + },
  104 + comboMedidaVariavelOnchange: function(combo){
  105 + if(combo.value != ""){
  106 + i3GEO.cartograma.parametros.lista(combo.value);
  107 + }
  108 + else{
  109 + $i("i3geoCartoParametrosMedidasVariavel").innerHTML = "";
  110 + }
  111 + },
  112 + parametros: {
  113 + //guarda a lista de parametros
  114 + dados: [],
  115 + //obtem a lista com os parametros da medida
  116 + //cria os combos para os parametros que sao pai de todos
  117 + lista: function(id_medida_variavel){
  118 + var temp = function(dados){
  119 + i3GEO.cartograma.parametros.dados = dados;
  120 + i3GEO.cartograma.parametros.combos("0");
  121 + };
  122 + i3GEO.php.listaParametrosMedidaVariavel(id_medida_variavel,temp);
  123 + },
  124 + //cria um combo para escolher os valores de um parametro
  125 + combos: function(nivel){
  126 + var dados = i3GEO.cartograma.parametros.dados,
  127 + n = dados.length,
  128 + onde = $i("i3geoCartoParametrosMedidasVariavel"),
  129 + idpar,idcombo,i,novoel,teste;
  130 + //cria o combo para o parametro cujo id_pai for do nivel escolhido
  131 + for(i=0;i<n;i++){
  132 + if(dados[i].id_pai == nivel){
  133 + idpar = "parametro_"+dados[i].id_parametro_medida;
  134 + idcombo = "parametro_"+dados[i].id_parametro_medida+"_"+nivel;
  135 + teste = i3GEO.cartograma.parametros.retornaIdPai(dados[i].id_parametro_medida);
  136 + if(teste != false){
  137 + idpar = "parametro_"+teste;
  138 + }
  139 + if(!$i(idpar)){
  140 + novoel = document.createElement("div");
  141 + novoel.id = idpar;
  142 + novoel.className = "paragrafo";
  143 + onde.appendChild(novoel);
  144 + onde = novoel;
  145 + }
  146 + onde = $i(idpar);
  147 + if(!$i(idcombo)){
  148 + novoel = document.createElement("div");
  149 + novoel.id = idcombo;
  150 + novoel.className = "paragrafo";
  151 + onde.appendChild(novoel);
  152 + i3GEO.cartograma.parametros.valoresCombo(dados[i].id_parametro_medida,dados[i].nome,nivel,onde);
  153 + }
  154 + }
  155 + }
  156 + },
  157 + valoresCombo: function(id_parametro_medida,titulo,nivel,onde){
  158 + var temp = function(dados){
  159 + var n = dados.length,
  160 + ins = "",
  161 + oc = "'i3GEO.cartograma.parametros.combos(\""+id_parametro_medida+"\")'",
  162 + filho = i3GEO.cartograma.parametros.retornaIdFilho(id_parametro_medida),
  163 + i,novoel;
  164 + if(filho == false){
  165 + oc = "";
  166 + }
  167 + ins = "<p class=paragrafo >"+titulo+"</p>";
  168 + ins += "<select style='background:beige;width:"+(i3GEO.cartograma.LARGURA - 20)+"px' onchange="+oc+" ><option value=''>---</option>";
  169 + for(i=0;i<n;i++){
  170 + ins += "<option value='"+dados[i]+"'>"+dados[i]+"</option>";
  171 + }
  172 + ins += "</select>";
  173 + novoel = document.createElement("div");
  174 + novoel.className = "paragrafo";
  175 + novoel.innerHTML = ins;
  176 + onde.appendChild(novoel);
  177 + };
  178 + i3GEO.php.listaValoresParametroMedidaVariavel(id_parametro_medida,temp);
  179 + },
  180 + //retorna o id do parametro que e filho de um outro parametro
  181 + retornaIdFilho:function(pai){
  182 + var dados = i3GEO.cartograma.parametros.dados,
  183 + n = dados.length,
  184 + i;
  185 + for(i=0;i<n;i++){
  186 + if(dados[i].id_pai == pai){
  187 + return dados[i].id_parametro_medida;
  188 + }
  189 + }
  190 + return false;
  191 + },
  192 + //retorna o id do parametro que e pai de um outro parametro
  193 + retornaIdPai:function(filho){
  194 + var dados = i3GEO.cartograma.parametros.dados,
  195 + n = dados.length,
  196 + i;
  197 + for(i=0;i<n;i++){
  198 + if(dados[i].id_parametro_medida == filho){
  199 + return dados[i].id_pai;
  200 + }
  201 + }
  202 + return false;
  203 + }
  204 + },
76 html: function(){ 205 html: function(){
77 var ins = '<div id="i3geoCartoVariaveisContainer" >' + 206 var ins = '<div id="i3geoCartoVariaveisContainer" >' +
78 - '<p class="paragrafo" >'+$trad("x58")+'</p>' +  
79 '<div class="paragrafo" id="i3geoCartoVariaveis" >' + 207 '<div class="paragrafo" id="i3geoCartoVariaveis" >' +
80 '</div>' + 208 '</div>' +
  209 + '<div class="paragrafo" id="i3geoCartoMedidasVariavel" >' +
  210 + '</div>' +
  211 + '<div class="paragrafo" id="i3geoCartoParametrosMedidasVariavel" >' +
  212 + '</div>' +
81 '</div>'; 213 '</div>';
82 return ins; 214 return ins;
83 }, 215 },
classesjs/classe_php.js
@@ -1429,4 +1429,31 @@ i3GEO.php = { @@ -1429,4 +1429,31 @@ i3GEO.php = {
1429 var p = i3GEO.configura.locaplic+"/admin/php/metaestat.php?funcao=listaVariavel&g_sid="+i3GEO.configura.sid; 1429 var p = i3GEO.configura.locaplic+"/admin/php/metaestat.php?funcao=listaVariavel&g_sid="+i3GEO.configura.sid;
1430 i3GEO.util.ajaxGet(p,funcao); 1430 i3GEO.util.ajaxGet(p,funcao);
1431 }, 1431 },
  1432 + /*
  1433 + Function: listaMedidaVariavel
  1434 +
  1435 + Obt&eacute;m a lista medidas de uma vari&aacute;vel do sistema de metadados estat&iacute;sticos
  1436 + */
  1437 + listaMedidaVariavel: function(codigo_variavel,funcao){
  1438 + var p = i3GEO.configura.locaplic+"/admin/php/metaestat.php?funcao=listaMedidaVariavel&codigo_variavel="+codigo_variavel+"&g_sid="+i3GEO.configura.sid;
  1439 + i3GEO.util.ajaxGet(p,funcao);
  1440 + },
  1441 + /*
  1442 + Function: listaParametrosMedidaVariavel
  1443 +
  1444 + Obt&eacute;m a lista de par&acirc;metros de uma medida de uma vari&aacute;vel do sistema de metadados estat&iacute;sticos
  1445 + */
  1446 + listaParametrosMedidaVariavel: function(id_medida_variavel,funcao){
  1447 + var p = i3GEO.configura.locaplic+"/admin/php/metaestat.php?funcao=listaParametro&id_medida_variavel="+id_medida_variavel+"&g_sid="+i3GEO.configura.sid;
  1448 + i3GEO.util.ajaxGet(p,funcao);
  1449 + },
  1450 + /*
  1451 + Function: listaValoresParametroMedidaVariavel
  1452 +
  1453 + Obt&eacute;m a lista de valores de um par&acirc;metro de uma medida de uma vari&aacute;vel do sistema de metadados estat&iacute;sticos
  1454 + */
  1455 + listaValoresParametroMedidaVariavel: function(id_parametro_medida,funcao){
  1456 + var p = i3GEO.configura.locaplic+"/admin/php/metaestat.php?funcao=listaValoresParametro&id_parametro_medida="+id_parametro_medida+"&g_sid="+i3GEO.configura.sid;
  1457 + i3GEO.util.ajaxGet(p,funcao);
  1458 + }
1432 }; 1459 };
1433 \ No newline at end of file 1460 \ No newline at end of file
classesjs/dicionario.js
@@ -1943,7 +1943,7 @@ it:&quot;&quot; @@ -1943,7 +1943,7 @@ it:&quot;&quot;
1943 }], 1943 }],
1944 "x59":[ 1944 "x59":[
1945 { 1945 {
1946 -pt:"", 1946 +pt:"Escolha uma medida da vari&aacute;vel",
1947 en:"", 1947 en:"",
1948 es:"", 1948 es:"",
1949 it:"" 1949 it:""
interface/carto_ol.htm
@@ -172,8 +172,8 @@ i3GEO.inicia(); @@ -172,8 +172,8 @@ i3GEO.inicia();
172 i3GEO.cartograma.INTERFACE = "flutuante"; 172 i3GEO.cartograma.INTERFACE = "flutuante";
173 i3GEO.cartograma.TOP = 50; 173 i3GEO.cartograma.TOP = 50;
174 i3GEO.cartograma.LEFT = 100; 174 i3GEO.cartograma.LEFT = 100;
175 -i3GEO.cartograma.LARGURA = 250;  
176 -i3GEO.cartograma.ALTURA = 100; 175 +i3GEO.cartograma.LARGURA = 260;
  176 +i3GEO.cartograma.ALTURA = 300;
177 i3GEO.cartograma.inicia(); 177 i3GEO.cartograma.inicia();
178 </script> 178 </script>
179 </body> 179 </body>