From 6a0c4499551bbe5d7114c3939eb0432eac10976c Mon Sep 17 00:00:00 2001 From: Edmar Moretti Date: Sun, 1 Dec 2013 21:54:18 +0000 Subject: [PATCH] $1 --- admin/js/estat_variavel.js | 17 ++++++++++++++++- admin/php/classe_metaestat.php | 32 +++++++++++++++++++++++++++++--- classesphp/classe_atributos.php | 19 +++++++++---------- classesphp/funcoes_gerais.php | 19 +++++++++++++++++++ ferramentas/carregamapa/index.js | 2 -- ferramentas/carregamapa/upload.php | 1 + ferramentas/editortema/exec.php | 148 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ferramentas/identifica/index.js | 38 ++++++++++++++++---------------------- ferramentas/upload/index.js | 1 - 9 files changed, 238 insertions(+), 39 deletions(-) create mode 100755 ferramentas/editortema/exec.php diff --git a/admin/js/estat_variavel.js b/admin/js/estat_variavel.js index 5c498a5..6ed95be 100755 --- a/admin/js/estat_variavel.js +++ b/admin/js/estat_variavel.js @@ -425,10 +425,25 @@ i3GEOadmin.variaveis = { } if(redesenha){tree.draw();} }, + sturges: function(id_medida_variavel,objid){ + var p = i3GEO.configura.locaplic+'/admin/php/metaestat.php?funcao=sumarioMedidaVariavel&formato=json&id_medida_variavel='+id_medida_variavel, + callback = { + success:function(o){ + try { + $i(objid).value = parseInt(YAHOO.lang.JSON.parse(o.responseText).sturges,10); + } + catch(e){core_handleFailure(e,o.responseText);} + }, + failure:core_handleFailure, + argument: { foo:"foo", bar:"bar" } + }; + core_makeRequest(p,callback); + }, classesAuto: function(id_classificacao,id_medida_variavel){ core_montaEditor("","450px","230px","","Criar classes"); var ins = "" + - "

 Número de intervalos de classes:

" + + "

 Número de intervalos de classes: " + + "

" + " " + "

Utilize um dos métodos abaixo para gerar as classes que serão utilizadas para representar os dados no cartograma

" + " " + diff --git a/admin/php/classe_metaestat.php b/admin/php/classe_metaestat.php index b61df66..29ec78c 100755 --- a/admin/php/classe_metaestat.php +++ b/admin/php/classe_metaestat.php @@ -661,7 +661,10 @@ class Metaestat{ $dados[] = ' METAESTAT_ID_MEDIDA_VARIAVEL "'.$id_medida_variavel.'"'; //marca se a tabela e editavel, verificando se esta no esquema padrao if($meta["esquemadb"] == "i3geo_metaestat"){ - $dados[] = ' METAESTATEDITAVEL "SIM"'; + $dados[] = ' EDITAVEL "SIM"'; + $dados[] = ' COLUNAIDUNICO "'.$meta["colunaidunico"].'"'; + $dados[] = ' TABELAEDITAVEL "'.$meta["tabela"].'"'; + $dados[] = ' ESQUEMATABELAEDITAVEL "'.$meta["esquemadb"].'"'; } if(count($sql["alias"]) > 0){ $dados[] = ' ITENS "'.implode(",",$sql["colunas"]).'"'; @@ -830,7 +833,14 @@ class Metaestat{ $dados[] = ' METAESTAT "SIM"'; $dados[] = ' METAESTAT_CODIGO_TIPO_REGIAO "'.$codigo_tipo_regiao.'"'; if($meta["esquemadb"] == "i3geo_metaestat"){ - $dados[] = ' METAESTATEDITAVEL "SIM"'; + $colunaSerial = $this->listaTipoRegiaoSerial($codigo_tipo_regiao); + if(!empty($colunaSerial)){ + $dados[] = ' EDITAVEL "SIM"'; + $dados[] = ' COLUNAIDUNICO "'.$colunaSerial.'"'; + $dados[] = ' TABELAEDITAVEL "'.$meta["tabela"].'"'; + $dados[] = ' ESQUEMATABELAEDITAVEL "'.$meta["esquemadb"].'"'; + $dados[] = ' COLUNAGEOMETRIA "'.$colunageo.'"'; + } } $dados[] = ' TIP "'.$meta["colunanomeregiao"].'"'; if(count($itens) == count($apelidos)){ @@ -1051,6 +1061,7 @@ class Metaestat{ $min = ""; $max = ""; $quantidade = count($valores); + $sturges = 1 + (3.322 * (log10($quantidade))); $quartis = array(); if($un["permitesoma"] == "1"){ $soma = array_sum($valores); @@ -1102,7 +1113,8 @@ class Metaestat{ "histograma"=>$histograma, "grupos"=>$agrupamento, "unidademedida"=>$un, - "quartis"=>$quartis + "quartis"=>$quartis, + "sturges"=>$sturges ); } return false; @@ -1983,6 +1995,20 @@ class Metaestat{ $sql .= "ORDER BY nome_tipo_regiao"; return $this->execSQL($sql,$codigo_tipo_regiao); } + /** + * Obtem de um tipo de regiao a coluna do tipo serial + * @param codigo do tipo de regiao + */ + function listaTipoRegiaoSerial($codigo_tipo_regiao){ + $sql = "select * from ".$this->esquemaadmin."i3geoestat_tipo_regiao WHERE codigo_tipo_regiao = $codigo_tipo_regiao "; + $regiao = $this->execSQL($sql,$codigo_tipo_regiao); + $nome_esquema = $regiao["esquemadb"]; + $nome_tabela = $regiao["tabela"]; + $sql = "SELECT a.attname as coluna FROM pg_class s JOIN pg_depend d ON d.objid = s.oid JOIN pg_class t ON d.objid = s.oid AND d.refobjid = t.oid JOIN pg_attribute a ON (d.refobjid, d.refobjsubid) = (a.attrelid, a.attnum) JOIN pg_namespace n ON n.oid = s.relnamespace WHERE s.relkind = 'S' AND n.nspname = '$nome_esquema' AND t.relname = '$nome_tabela'"; + $colunas = $this->execSQLDB($regiao["codigo_estat_conexao"],$sql); + $colunas = $colunas[0]; + return $colunas["coluna"]; + } /** * Lista os dados de agregacao de uma regiao pai * @param codigo da regiao diff --git a/classesphp/classe_atributos.php b/classesphp/classe_atributos.php index 80b6d06..3dc95b2 100644 --- a/classesphp/classe_atributos.php +++ b/classesphp/classe_atributos.php @@ -1312,7 +1312,7 @@ class Atributos //identificador que marca o tipo de dados que podem ser salvos $tiposalva = ""; //verifica se e editavel no metaestat - if($layer->getmetadata("METAESTATEDITAVEL") == "SIM"){ + if($layer->getmetadata("EDITAVEL") == "SIM"){ //verifica login session_write_close(); session_name("i3GeoLogin"); @@ -1334,31 +1334,30 @@ class Atributos if($editavel == "sim"){ $editavel = "nao"; $id_medida_variavel = $layer->getMetaData("METAESTAT_ID_MEDIDA_VARIAVEL"); + $colunaidunico = $layer->getMetaData("COLUNAIDUNICO"); + $codigo_tipo_regiao = $layer->getMetaData("METAESTAT_CODIGO_TIPO_REGIAO"); + if($id_medida_variavel != ""){ include_once(dirname(__FILE__)."/../admin/php/classe_metaestat.php"); $m = new Metaestat(); $medidaVariavel = $m->listaMedidaVariavel("",$id_medida_variavel); $editavel = $medidaVariavel["colunavalor"]; - $colunaidunico = $medidaVariavel["colunaidunico"]; - $codigo_tipo_regiao = $medidaVariavel["codigo_tipo_regiao"]; $tiposalva = "medida_variavel"; } - $codigo_tipo_regiao = $layer->getMetaData("METAESTAT_CODIGO_TIPO_REGIAO"); + if($codigo_tipo_regiao != ""){ include_once(dirname(__FILE__)."/../admin/php/classe_metaestat.php"); $m = new Metaestat(); $regiao = $m->listaTipoRegiao($codigo_tipo_regiao); - $editavel = "todos";//$regiao["colunanomeregiao"]; - $colunaidunico = $regiao["identificador"]; - $codigo_tipo_regiao = $codigo_tipo_regiao; + //todas as colunas podem ser alteradas + $editavel = "todos"; $tiposalva = "regiao"; } } } } - } - $final[] = array("tiposalva"=>$tiposalva,"nome"=>$nometmp,"resultado"=>$resultados[$tema],"editavel"=>$editavel,"colunaidunico"=>$colunaidunico,"id_medida_variavel"=>$id_medida_variavel,"codigo_tipo_regiao"=>$codigo_tipo_regiao); + $final[] = array("tema"=>$tema,"tiposalva"=>$tiposalva,"nome"=>$nometmp,"resultado"=>$resultados[$tema],"editavel"=>$editavel,"colunaidunico"=>$colunaidunico,"id_medida_variavel"=>$id_medida_variavel,"codigo_tipo_regiao"=>$codigo_tipo_regiao); } return $final; } @@ -2156,7 +2155,7 @@ class Atributos } //se o usuario estiver logado e o tema for editavel, a lista de itens //nao usa os alias para permitir a edicao dos dados - if(!empty($_COOKIE["i3geocodigologin"]) && $layer->getmetadata("METAESTATEDITAVEL") == "SIM"){ + if(!empty($_COOKIE["i3geocodigologin"]) && $layer->getmetadata("EDITAVEL") == "SIM"){ $itens = ""; $itensdesc = ""; $lks = ""; diff --git a/classesphp/funcoes_gerais.php b/classesphp/funcoes_gerais.php index 7c0f9e4..7b89458 100644 --- a/classesphp/funcoes_gerais.php +++ b/classesphp/funcoes_gerais.php @@ -2726,4 +2726,23 @@ function restauraMapaAdmin($id_mapa,$dir_tmp){ $dbhw = null; return $base; } +// +//converte uma string de conexao do mapserver em um array com os componentes da conexao +// +function stringCon2Array($stringCon){ + $lista = explode(" ",$stringCon); + $con = array(); + foreach($lista as $l){ + $teste = explode("=",$l); + $con[trim($teste[0])] = trim($teste[1]); + } + $c = array( + "dbname" => $con["dbname"], + "host" => $con["host"], + "port" => $con["port"], + "user" => $con["user"], + "password" => $con["password"] + ); + return $c; +} ?> diff --git a/ferramentas/carregamapa/index.js b/ferramentas/carregamapa/index.js index b6cacc8..1bf2d4f 100644 --- a/ferramentas/carregamapa/index.js +++ b/ferramentas/carregamapa/index.js @@ -1,5 +1,3 @@ - -/*jslint plusplus:false,white:false,undef: false, rhino: true, onevar: true, evil: true */ /* Title: Carrega mapa salvo diff --git a/ferramentas/carregamapa/upload.php b/ferramentas/carregamapa/upload.php index 2cff0f3..cf884e8 100644 --- a/ferramentas/carregamapa/upload.php +++ b/ferramentas/carregamapa/upload.php @@ -68,6 +68,7 @@ if (isset($_FILES['i3GEOcarregamapafilemap']['name'])) $layertemp->setmetadata("permitekml","nao"); $layertemp->setmetadata("permiteogc","nao"); $layertemp->setmetadata("editorsql","nao"); + $layertemp->setmetadata("EDITAVEL","nao"); if ($testa == 1) { echo "

Problemas em ".($layer->name).". Removido.


"; diff --git a/ferramentas/editortema/exec.php b/ferramentas/editortema/exec.php new file mode 100755 index 0000000..491b7ed --- /dev/null +++ b/ferramentas/editortema/exec.php @@ -0,0 +1,148 @@ +getlayerbyname($tema); + if(strtolower($layer->getmetadata("EDITAVEL")) != "sim"){ + $retorno = "erro"; + } + else{ + $tabela = $layer->getmetadata("TABELAEDITAVEL"); + $esquema = $layer->getmetadata("ESQUEMATABELAEDITAVEL"); + $colunaidunico = $layer->getmetadata("COLUNAIDUNICO"); + $colunageometria = $layer->getmetadata("COLUNAGEOMETRIA"); + if($colunageometria == ""){ + $retorno = "erro"; + } + $c = stringCon2Array($layer->connection); + try { + $dbh = new PDO('pgsql:dbname='.$c["dbname"].';user='.$c["user"].';password='.$c["password"].';host='.$c["host"].';port='.$c["port"]); + //pega o SRID + $sql = "select ST_SRID($colunageometria) as srid from $esquema"."."."$tabela LIMIT 1"; + //echo $sql;exit; + $q = $dbh->query($sql,PDO::FETCH_ASSOC); + $r = $q->fetchAll(); + $srid = $r[0]["srid"]; + + $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + $dbh->beginTransaction(); + + $sql = "INSERT INTO ".$esquema.".".$tabela." (".$colunageometria.")"; + $sql .= " VALUES (ST_GeomFromText('SRID=$srid;".$wkt."'))"; + + $sth = $dbh->exec($sql); + $dbh->commit(); + } catch (Exception $e) { + $dbh->rollBack(); + $retorno = array("Falhou: " . $e->getMessage()); + } + } + $retorno = "ok"; + break; + case "EXCLUIREGISTRO": + $mapa = ms_newMapObj($map_file); + $layer = $mapa->getlayerbyname($tema); + if(strtolower($layer->getmetadata("EDITAVEL")) != "sim"){ + $retorno = "erro"; + } + else{ + $tabela = $layer->getmetadata("TABELAEDITAVEL"); + $esquema = $layer->getmetadata("ESQUEMATABELAEDITAVEL"); + $colunaidunico = $layer->getmetadata("COLUNAIDUNICO"); + $colunageometria = $layer->getmetadata("COLUNAGEOMETRIA"); + if($colunageometria == ""){ + $retorno = "erro"; + } + $c = stringCon2Array($layer->connection); + try { + $dbh = new PDO('pgsql:dbname='.$c["dbname"].';user='.$c["user"].';password='.$c["password"].';host='.$c["host"].';port='.$c["port"]); + $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + $dbh->beginTransaction(); + $sql = "DELETE from ".$esquema.".".$tabela." where ".$colunaidunico."::text = '$identificador' "; + $sth = $dbh->exec($sql); + $dbh->commit(); + } catch (Exception $e) { + $dbh->rollBack(); + $retorno = array("Falhou: " . $e->getMessage()); + } + } + $retorno = "ok"; + break; + case "SALVAREGISTRO": + $mapa = ms_newMapObj($map_file); + $layer = $mapa->getlayerbyname($tema); + if(strtolower($layer->getmetadata("EDITAVEL")) != "sim"){ + $retorno = "erro"; + } + else{ + $tabela = $layer->getmetadata("TABELAEDITAVEL"); + $esquema = $layer->getmetadata("ESQUEMATABELAEDITAVEL"); + $colunaidunico = $layer->getmetadata("COLUNAIDUNICO"); + if($colunageometria == ""){ + $retorno = "erro"; + } + $c = stringCon2Array($layer->connection); + try { + $dbh = new PDO('pgsql:dbname='.$c["dbname"].';user='.$c["user"].';password='.$c["password"].';host='.$c["host"].';port='.$c["port"]); + $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + $dbh->beginTransaction(); + $sql = "UPDATE ".$esquema.".".$tabela." SET $coluna = '$valor' where ".$colunaidunico."::text = '$identificador' "; + $sth = $dbh->exec($sql); + $dbh->commit(); + } catch (Exception $e) { + $dbh->rollBack(); + $retorno = array("Falhou: " . $e->getMessage()); + } + } + $retorno = "ok"; + break; +} +if (!connection_aborted()){ + if(isset($map_file) && isset($postgis_mapa) && $map_file != "") + restauraCon($map_file,$postgis_mapa); + cpjson($retorno); +} +else +{exit();} +?> \ No newline at end of file diff --git a/ferramentas/identifica/index.js b/ferramentas/identifica/index.js index ec895a3..eaaca97 100644 --- a/ferramentas/identifica/index.js +++ b/ferramentas/identifica/index.js @@ -678,7 +678,7 @@ i3GEOF.identifica = { } //opcao para apagar o registro if(idreg != "" && retorno[i].editavel == "todos"){ - res += ""+$trad(19,i3GEOF.identifica.dicionario)+"
"; + res += ""+$trad(19,i3GEOF.identifica.dicionario)+"
"; } for(k=0;k" + "" + ""; @@ -725,7 +725,7 @@ i3GEOF.identifica = { if(retorno[i].tiposalva == "regiao" && parseInt(camada.type,10) == 0){ //opcao para adicionar um ponto res += $trad(17,i3GEOF.identifica.dicionario) + - "
"+$trad(18,i3GEOF.identifica.dicionario)+""; + "
"+$trad(18,i3GEOF.identifica.dicionario)+""; } else{ res += $trad(17,i3GEOF.identifica.dicionario); @@ -737,9 +737,9 @@ i3GEOF.identifica = { $i("i3GEOidentificaocorrencia").innerHTML=res; } }, - adicionaPontoRegiao: function(codigo_tipo_regiao){ + adicionaPontoRegiao: function(tema){ // - var p = i3GEO.configura.locaplic+"/admin/php/metaestat.php?funcao=mantemDadosRegiao", + var p = i3GEO.configura.locaplic+"/ferramentas/editortema/exec.php?funcao=adicionaGeometria&g_sid="+i3GEO.configura.sid, temp = function(retorno){ i3GEO.janela.fechaAguarde("aguardeSalvaPonto"); i3GEO.Interface.atualizaTema("",i3GEO.temaAtivo); @@ -748,26 +748,26 @@ i3GEOF.identifica = { i3GEO.janela.AGUARDEMODAL = true; i3GEO.janela.abreAguarde("aguardeSalvaPonto","Adicionando..."); i3GEO.janela.AGUARDEMODAL = false; - cpJSON.call(p,"foo",temp,"&codigo_tipo_regiao="+codigo_tipo_regiao+"&wkt=POINT("+i3GEOF.identifica.x+" "+i3GEOF.identifica.y+")"); + cpJSON.call(p,"foo",temp,"&tema="+tema+"&wkt=POINT("+i3GEOF.identifica.x+" "+i3GEOF.identifica.y+")"); }, - apagaRegiao: function(codigo_tipo_regiao,idreg){ + apagaRegiao: function(tema,idreg){ var excluir = function(){ - var p = i3GEO.configura.locaplic+"/admin/php/metaestat.php?funcao=mantemDadosRegiao&tipo=excluir", + var p = i3GEO.configura.locaplic+"/ferramentas/editortema/exec.php?funcao=excluiRegistro&g_sid="+i3GEO.configura.sid, temp = function(){ - i3GEO.janela.fechaAguarde("aguardeRmovendoPonto"); + i3GEO.janela.fechaAguarde("aguardeRemovendo"); i3GEO.Interface.atualizaTema("",i3GEO.temaAtivo); i3GEOF.identifica.buscaDadosTema(i3GEO.temaAtivo); }; i3GEO.janela.AGUARDEMODAL = true; - i3GEO.janela.abreAguarde("aguardeRmovendoPonto","Excluindo..."); + i3GEO.janela.abreAguarde("aguardeRemovendo","Excluindo..."); i3GEO.janela.AGUARDEMODAL = false; - cpJSON.call(p,"foo",temp,"&codigo_tipo_regiao="+codigo_tipo_regiao+"&identificador="+idreg); + cpJSON.call(p,"foo",temp,"&tema="+tema+"&identificador="+idreg); }; i3GEO.janela.confirma($trad(20,i3GEOF.identifica.dicionario),"",$trad(21,i3GEOF.identifica.dicionario),$trad(22,i3GEOF.identifica.dicionario),excluir); }, - salvaDados: function(id_medida_variavel,idreg,coluna,codigo_tipo_regiao,tema,tiposalva){ - var p = i3GEO.configura.locaplic+"/admin/php/metaestat.php?funcao=salvaAtributosMedidaVariavel", - idvalor = $i("idsalva"+coluna+tiposalva+codigo_tipo_regiao+"_"+id_medida_variavel+"_"+idreg), + salvaDados: function(tema,idreg,coluna,tiposalva){ + var p = i3GEO.configura.locaplic+"/ferramentas/editortema/exec.php?funcao=salvaRegistro&g_sid="+i3GEO.configura.sid, + idvalor = $i("idsalva"+tema+"_"+idreg+"_"+coluna+"_"+tiposalva), temp = function(retorno){ i3GEO.janela.fechaAguarde("aguardeSalvaAtributos"); i3GEO.Interface.atualizaTema("",i3GEOF.identifica.tema); @@ -777,13 +777,7 @@ i3GEOF.identifica = { i3GEO.janela.AGUARDEMODAL = true; i3GEO.janela.abreAguarde("aguardeSalvaAtributos","Salvando..."); i3GEO.janela.AGUARDEMODAL = false; - if(tiposalva === "regiao"){ - p = i3GEO.configura.locaplic+"/admin/php/metaestat.php?funcao=salvaAtributosTipoRegiao"; - cpJSON.call(p,"foo",temp,"&codigo_tipo_regiao="+codigo_tipo_regiao+"&identificador_regiao="+idreg+"&colunas="+coluna+"&valores="+idvalor.value); - } - else{ - cpJSON.call(p,"foo",temp,"&codigo_tipo_regiao="+codigo_tipo_regiao+"&identificador_regiao=&id_medida_variavel="+id_medida_variavel+"&colunas="+coluna+"&valores="+idvalor.value+"&idsunicos="+idreg); - } + cpJSON.call(p,"foo",temp,"&tema="+tema+"&coluna="+coluna+"&valor="+idvalor.value+"&identificador="+idreg); } else{ alert("ocorreu um erro"); diff --git a/ferramentas/upload/index.js b/ferramentas/upload/index.js index fe58a0c..1821f84 100644 --- a/ferramentas/upload/index.js +++ b/ferramentas/upload/index.js @@ -1,5 +1,4 @@ -/*jslint plusplus:false,white:false,undef: false, rhino: true, onevar: true, evil: true */ /* Title: Upload de arquivo shapefile -- libgit2 0.21.2