diff --git a/admin/php/classe_metaestat.php b/admin/php/classe_metaestat.php index 4ca7a6a..14baffb 100755 --- a/admin/php/classe_metaestat.php +++ b/admin/php/classe_metaestat.php @@ -223,7 +223,6 @@ class Metaestat{ else{ $colunageo = $dadosgeo["colunacentroide"]; } - if($todasascolunas == 0){ $sql = " SELECT d.".$dados["colunavalor"].",d.".$dados["colunaidgeo"]; if(!empty($agruparpor)){ @@ -240,6 +239,7 @@ class Metaestat{ $sqlgeo .= " FROM ".$dados["esquemadb"].".".$dados["tabela"]." as d,".$dadosgeo["esquemadb"].".".$dadosgeo["tabela"]." as g "; } else{ + $sqlagrupamento = " SELECT d.".$agruparpor." FROM ".$dados["esquemadb"].".".$dados["tabela"]." as d group by ".$agruparpor." order by ".$agruparpor; $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"; $sql .= " FROM (SELECT sum(".$dados["colunavalor"].") as ".$dados["colunavalor"].",".$dados["colunaidgeo"].",".$agruparpor." FROM ".$dados["esquemadb"].".".$dados["tabela"] ." group by ".$agruparpor.",".$dados["colunaidgeo"].") as d "; } @@ -259,7 +259,7 @@ class Metaestat{ //atencao: cuidado ao alterar essa string pois ') as foo' pode ser usado para replace em outras funcoes $sqlgeo = $colunageo." from ($sqlgeo) as foo using unique ".$dados["colunaidgeo"]." using srid=".$dadosgeo["srid"]; $colunas = $this->colunasTabela($dados["codigo_estat_conexao"],$dados["esquemadb"],$dados["tabela"]); - return array("sql"=>$sql,"sqlmapserver"=>$sqlgeo,"filtro"=>$filtro,"colunas"=>$colunas); + 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)){ @@ -406,6 +406,21 @@ class Metaestat{ } return false; } + function valorUnicoMedidaVariavel($id_medida_variavel,$coluna){ + $sqlf = $this->sqlMedidaVariavel($id_medida_variavel,0,$coluna); + $sqlf = $sqlf["sqlagrupamento"]; + $metaVariavel = $this->listaMedidaVariavel("",$id_medida_variavel); + if(!empty($metaVariavel["codigo_estat_conexao"])){ + $c = $this->listaConexao($metaVariavel["codigo_estat_conexao"],true); + $dbhold = $this->dbh; + $dbh = new PDO('pgsql:dbname='.$c["bancodedados"].';user='.$c["usuario"].';password='.$c["senha"].';host='.$c["host"].';port='.$c["porta"]); + $this->dbh = $dbh; + $res = $this->execSQL($sqlf); + $this->dbh = $dbhold; + return $res; + } + return false; + } function sumarioMedidaVariavel($id_medida_variavel,$filtro="",$agruparpor=""){ if(!empty($agruparpor)){ $dados = $this->dadosMedidaVariavel($id_medida_variavel,$filtro,1); @@ -961,7 +976,17 @@ class Metaestat{ //echo $sql;exit; return $this->execSQL($sql,$id_parametro_medida); } - + function listaValoresParametro($id_parametro_medida){ + $parametro = $this->listaParametro("",$id_parametro_medida); + //$medida = $this->listaMedidaVariavel("",$parametro["id_medida_variavel"]); + $sm = $this->valorUnicoMedidaVariavel($parametro["id_medida_variavel"],$parametro["coluna"]); + $nsm = array(); + foreach($sm as $s){ + $nsm[] = $s[$parametro["coluna"]]; + } + return $nsm; + exit; + } /* Function: listaTipoPeriodo diff --git a/admin/php/metaestat.php b/admin/php/metaestat.php index 1dc0bf1..aaef0cc 100644 --- a/admin/php/metaestat.php +++ b/admin/php/metaestat.php @@ -151,6 +151,11 @@ switch (strtoupper($funcao)) retornaJSON($m->listaParametro($id_medida_variavel,$id_parametro_medida)); exit; break; + case "LISTAVALORESPARAMETRO": + $m = new Metaestat(); + retornaJSON($m->listaValoresParametro($id_parametro_medida)); + exit; + break; /* Valor: LISTAUNIDADEMEDIDA diff --git a/classesjs/classe_cartograma.js b/classesjs/classe_cartograma.js index 4a618f3..22e784b 100644 --- a/classesjs/classe_cartograma.js +++ b/classesjs/classe_cartograma.js @@ -39,8 +39,8 @@ i3GEO.cartograma = { INTERFACE: "flutuante", TOP: 50, LEFT: 100, - LARGURA: 250, - ALTURA: 100, + LARGURA: 260, + ALTURA: 300, inicia: function(iddiv){ if(!iddiv){ iddiv = "i3geoCartoParametros_corpo"; @@ -58,9 +58,9 @@ i3GEO.cartograma = { var onde = $i("i3geoCartoVariaveis"), temp = function(dados){ var n = dados.length, - ins = "", + ins = '

'+$trad("x58")+'

', i; - ins = ""; for(i=0;i"+dados[i].nome+""; } @@ -73,11 +73,143 @@ i3GEO.cartograma = { i3GEO.cartograma.aguarde(onde); i3GEO.php.listaVariavel(temp); }, + comboVariaveisOnchange: function(combo){ + if(combo.value != ""){ + i3GEO.cartograma.comboMedidasVariavel(combo.value); + } + else{ + $i("i3geoCartoMedidasVariavel").innerHTML = ""; + $i("i3geoCartoParametrosMedidasVariavel").innerHTML = ""; + } + }, + comboMedidasVariavel: function(codigo_variavel){ + var onde = $i("i3geoCartoMedidasVariavel"), + temp = function(dados){ + var n = dados.length, + ins = '

'+$trad("x59")+'

', + i; + ins += ""; + if(onde){ + onde.innerHTML = ins; + } + return ins; + }; + i3GEO.cartograma.aguarde(onde); + i3GEO.php.listaMedidaVariavel(codigo_variavel,temp); + }, + comboMedidaVariavelOnchange: function(combo){ + if(combo.value != ""){ + i3GEO.cartograma.parametros.lista(combo.value); + } + else{ + $i("i3geoCartoParametrosMedidasVariavel").innerHTML = ""; + } + }, + parametros: { + //guarda a lista de parametros + dados: [], + //obtem a lista com os parametros da medida + //cria os combos para os parametros que sao pai de todos + lista: function(id_medida_variavel){ + var temp = function(dados){ + i3GEO.cartograma.parametros.dados = dados; + i3GEO.cartograma.parametros.combos("0"); + }; + i3GEO.php.listaParametrosMedidaVariavel(id_medida_variavel,temp); + }, + //cria um combo para escolher os valores de um parametro + combos: function(nivel){ + var dados = i3GEO.cartograma.parametros.dados, + n = dados.length, + onde = $i("i3geoCartoParametrosMedidasVariavel"), + idpar,idcombo,i,novoel,teste; + //cria o combo para o parametro cujo id_pai for do nivel escolhido + for(i=0;i"; + ins += ""; + novoel = document.createElement("div"); + novoel.className = "paragrafo"; + novoel.innerHTML = ins; + onde.appendChild(novoel); + }; + i3GEO.php.listaValoresParametroMedidaVariavel(id_parametro_medida,temp); + }, + //retorna o id do parametro que e filho de um outro parametro + retornaIdFilho:function(pai){ + var dados = i3GEO.cartograma.parametros.dados, + n = dados.length, + i; + for(i=0;i'+$trad("x58")+'

' + '
' + '
' + + '
' + + '
' + + '
' + + '
' + ''; return ins; }, diff --git a/classesjs/classe_php.js b/classesjs/classe_php.js index c78d176..d7a039e 100644 --- a/classesjs/classe_php.js +++ b/classesjs/classe_php.js @@ -1429,4 +1429,31 @@ i3GEO.php = { var p = i3GEO.configura.locaplic+"/admin/php/metaestat.php?funcao=listaVariavel&g_sid="+i3GEO.configura.sid; i3GEO.util.ajaxGet(p,funcao); }, + /* + Function: listaMedidaVariavel + + Obtém a lista medidas de uma variável do sistema de metadados estatísticos + */ + listaMedidaVariavel: function(codigo_variavel,funcao){ + var p = i3GEO.configura.locaplic+"/admin/php/metaestat.php?funcao=listaMedidaVariavel&codigo_variavel="+codigo_variavel+"&g_sid="+i3GEO.configura.sid; + i3GEO.util.ajaxGet(p,funcao); + }, + /* + Function: listaParametrosMedidaVariavel + + Obtém a lista de parâmetros de uma medida de uma variável do sistema de metadados estatísticos + */ + listaParametrosMedidaVariavel: function(id_medida_variavel,funcao){ + var p = i3GEO.configura.locaplic+"/admin/php/metaestat.php?funcao=listaParametro&id_medida_variavel="+id_medida_variavel+"&g_sid="+i3GEO.configura.sid; + i3GEO.util.ajaxGet(p,funcao); + }, + /* + Function: listaValoresParametroMedidaVariavel + + Obtém a lista de valores de um parâmetro de uma medida de uma variável do sistema de metadados estatísticos + */ + listaValoresParametroMedidaVariavel: function(id_parametro_medida,funcao){ + var p = i3GEO.configura.locaplic+"/admin/php/metaestat.php?funcao=listaValoresParametro&id_parametro_medida="+id_parametro_medida+"&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 f273a2c..0128dd1 100644 --- a/classesjs/dicionario.js +++ b/classesjs/dicionario.js @@ -1943,7 +1943,7 @@ it:"" }], "x59":[ { -pt:"", +pt:"Escolha uma medida da variável", en:"", es:"", it:"" diff --git a/interface/carto_ol.htm b/interface/carto_ol.htm index b612469..fc8134c 100644 --- a/interface/carto_ol.htm +++ b/interface/carto_ol.htm @@ -172,8 +172,8 @@ i3GEO.inicia(); i3GEO.cartograma.INTERFACE = "flutuante"; i3GEO.cartograma.TOP = 50; i3GEO.cartograma.LEFT = 100; -i3GEO.cartograma.LARGURA = 250; -i3GEO.cartograma.ALTURA = 100; +i3GEO.cartograma.LARGURA = 260; +i3GEO.cartograma.ALTURA = 300; i3GEO.cartograma.inicia(); -- libgit2 0.21.2