From dbffb28b47bb9ca9c6d6715b2429e65e801b630c Mon Sep 17 00:00:00 2001 From: edmarmoretti Date: Wed, 23 Aug 2017 10:25:59 -0300 Subject: [PATCH] Cria ção da opção Junção de Tabelas, mostrada na lista de funções que operam sobre camadas. Essa opção afeta apenas os temas que são advindos do sistema Metaestat e permite a junção de tabelas e criação dinâmica de colunas calculadas --- admin/admin.db | Bin 340992 -> 0 bytes classesphp/classe_mapa.php | 6 ++++-- ferramentas/atalhoscamada/dicionario.js | 10 +++++++++- ferramentas/atalhoscamada/index.js | 5 +++++ ferramentas/atalhoscamada/template_mst.html | 1 + ferramentas/juntamedidasvariavel/dependencias.php | 24 ++++++++++++++++++++++++ ferramentas/juntamedidasvariavel/dicionario.js | 47 +++++++++++++++++++++++++++++++++++++++++++++++ ferramentas/juntamedidasvariavel/index.js | 168 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ferramentas/juntamedidasvariavel/template_mst.html | 17 +++++++++++++++++ ferramentas/metaestat/index.js | 429 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ferramentas/metaestat/template_analise_mst.html | 7 +++++-- ferramentas/metaestat/template_mst.html | 2 +- js/analise.js | 15 +++++++++++++++ 13 files changed, 296 insertions(+), 435 deletions(-) create mode 100755 ferramentas/juntamedidasvariavel/dependencias.php create mode 100755 ferramentas/juntamedidasvariavel/dicionario.js create mode 100755 ferramentas/juntamedidasvariavel/index.js create mode 100755 ferramentas/juntamedidasvariavel/template_mst.html diff --git a/admin/admin.db b/admin/admin.db index 44620cc..b775db8 100755 Binary files a/admin/admin.db and b/admin/admin.db differ diff --git a/classesphp/classe_mapa.php b/classesphp/classe_mapa.php index b307705..9ba208a 100755 --- a/classesphp/classe_mapa.php +++ b/classesphp/classe_mapa.php @@ -275,7 +275,8 @@ class Mapa "ferramentas", "legendaimg", "offsite", - "numclasses" + "numclasses", + "id_medida_variavel" ); foreach ($this->layers as $oLayer){ $sel = "nao"; @@ -510,7 +511,8 @@ class Mapa $ferramentas, $oLayer->getmetadata("legendaimg"), $oLayer->offsite->red.",".$oLayer->offsite->green.",".$oLayer->offsite->blue, - $oLayer->numclasses + $oLayer->numclasses, + $oLayer->getmetadata("METAESTAT_ID_MEDIDA_VARIAVEL") ); } } diff --git a/ferramentas/atalhoscamada/dicionario.js b/ferramentas/atalhoscamada/dicionario.js index 3ba0bd7..59d744c 100755 --- a/ferramentas/atalhoscamada/dicionario.js +++ b/ferramentas/atalhoscamada/dicionario.js @@ -54,5 +54,13 @@ i3GEOF.atalhoscamada.dicionario = { es : "", it : "" } - ] + ], + "juncao" : [ + { + pt : "Junção de camadas", + en : "", + es : "", + it : "" + } + ] }; diff --git a/ferramentas/atalhoscamada/index.js b/ferramentas/atalhoscamada/index.js index b8d776c..9356e42 100755 --- a/ferramentas/atalhoscamada/index.js +++ b/ferramentas/atalhoscamada/index.js @@ -72,6 +72,7 @@ i3GEOF.atalhoscamada = dicionario["noPolygonHidden"] = (ltema.type === 2) ? "":"hidden"; dicionario["destacaHidden"] = (i3GEO.Interface.ATUAL == "openlayers") ? "":"hidden"; dicionario["wmsHidden"] = (ltema.permiteogc.toLowerCase() !== "nao") ? "":"hidden"; + dicionario["metaestatHidden"] = (parseInt(ltema.id_medida_variavel,10) > 0) ? "":"hidden"; return dicionario; }, @@ -228,5 +229,9 @@ i3GEOF.atalhoscamada = cp.set_response_type("JSON"); cp.call(p, "foo", temp, "cores=" + cores); } + }, + //juncao de tabelas advindas do sistema de metadados + juncao: function(idjanela){ + i3GEO.analise.dialogo.juntamedidasvariavel(i3GEOF.atalhoscamada.propJanelas[idjanela].tema); } }; \ No newline at end of file diff --git a/ferramentas/atalhoscamada/template_mst.html b/ferramentas/atalhoscamada/template_mst.html index 519301e..e3a6757 100755 --- a/ferramentas/atalhoscamada/template_mst.html +++ b/ferramentas/atalhoscamada/template_mst.html @@ -34,6 +34,7 @@ {{{destaca}}} {{{contorno}}} {{{wms}}} + {{{juncao}}} {{{tme}}} StoryMap diff --git a/ferramentas/juntamedidasvariavel/dependencias.php b/ferramentas/juntamedidasvariavel/dependencias.php new file mode 100755 index 0000000..8404e14 --- /dev/null +++ b/ferramentas/juntamedidasvariavel/dependencias.php @@ -0,0 +1,24 @@ + ou com a funcao scripttag do i3Geo + * Alem de carregar os scripts, carrega tambem o template no formato MUSTACHE, definindo a variavel + * javascript i3GEOF.mmscale.MUSTACHE + * O template e substituido pelos valores definidos em index.js no momento da inicializacao da ferramenta + */ +if(extension_loaded('zlib')){ + ob_start('ob_gzhandler'); +} +header("Content-type: text/javascript"); +include("index.js"); +include("dicionario.js"); +echo "\n"; + +if(extension_loaded('zlib')){ + ob_end_flush(); +} +?> \ No newline at end of file diff --git a/ferramentas/juntamedidasvariavel/dicionario.js b/ferramentas/juntamedidasvariavel/dicionario.js new file mode 100755 index 0000000..a2cce56 --- /dev/null +++ b/ferramentas/juntamedidasvariavel/dicionario.js @@ -0,0 +1,47 @@ +i3GEOF.juntamedidasvariavel.dicionario = { + 'titulo' : [ { + pt : "Junção de tabelas", + en : "", + es : "" + } ], + 'ajuda' : [ { + pt : "Os cálculos são fórmulas que utilizam as colunas que forem juntadas e que serão incluídas na nova camada. Cada uma dessas colunas receberá um nome sequencial, por exemplo valortema0,valortema1, valortema2...

As colunas calculadas podem utilizar esses nomes como entrada em fórmulas. Cada fórmula irá gerar uma nova coluna na tabela e deve utilizar a sintaxe SQL (SQL no Postgres)

Exemplos de uso:

coluna de nome: soma
valortema0 + valortema1

coluna de nome: taxa
(valortema0 * 100) / valortema1", + en : "", + es : "" + } ], + 'escolha' : [ { + pt : "Escolha as camadas de mesmo tipo e região", + en : "", + es : "" + } ], + 'nome' : [ { + pt : "Nome da nova camada", + en : "", + es : "" + } ], + 'aplicar' : [ { + pt : "Aplicar", + en : "", + es : "" + } ], + 'colunas' : [ { + pt : "Colunas calculadas (opcional)", + en : "", + es : "" + } ], + 'addno' : [ { + pt : "Adiciona entrada de formulario", + en : "", + es : "" + } ], + 'tituloform' : [ { + pt : "Nome (apenas letras e números)", + en : "", + es : "" + } ], + 'titulosql' : [ { + pt : "Digite a fórmula (padrão sql)", + en : "", + es : "" + } ] +}; diff --git a/ferramentas/juntamedidasvariavel/index.js b/ferramentas/juntamedidasvariavel/index.js new file mode 100755 index 0000000..5884651 --- /dev/null +++ b/ferramentas/juntamedidasvariavel/index.js @@ -0,0 +1,168 @@ +if(typeof(i3GEOF) === 'undefined'){ + var i3GEOF = {}; +} + +i3GEOF.juntamedidasvariavel = { + tema : "", + /* + Variavel: aguarde + + Estilo do objeto DOM com a imagem de aguarde existente no cabeçalho da janela. + */ + aguarde: "", + /** + * Template no formato mustache. E preenchido na carga do javascript com o programa dependencias.php + */ + MUSTACHE : "", + /** + * Susbtitutos para o template + */ + mustacheHash : function() { + var dicionario = i3GEO.idioma.objetoIdioma(i3GEOF.juntamedidasvariavel.dicionario); + return dicionario; + }, + /* + Function: inicia + + Inicia a ferramenta. É chamado por criaJanelaFlutuante + + Parametro: + + iddiv {String} - id do div que receberá o conteudo HTML da ferramenta + */ + inicia: function(iddiv){ + if(i3GEOF.juntamedidasvariavel.MUSTACHE == ""){ + $.get(i3GEO.configura.locaplic + "/ferramentas/juntamedidasvariavel/template_mst.html", function(template) { + i3GEOF.juntamedidasvariavel.MUSTACHE = template; + i3GEOF.juntamedidasvariavel.inicia(iddiv); + }); + return; + } + $i(iddiv).innerHTML = i3GEOF.juntamedidasvariavel.html(); + var temp = function(retorno){ + i3GEOF.juntamedidasvariavel.aguarde.visibility = "hidden"; + + var n = retorno.length, i, lista = ""; + + for(i=0;i' + + '' + + retorno[i].tema + ''; + } + $i("i3GEOFjuntaLista").innerHTML = lista; + i3GEOF.juntamedidasvariavel.noNovoCalculo(); + }; + var p = i3GEO.configura.locaplic+"/ferramentas/metaestat/analise.php?g_sid="+i3GEO.configura.sid + + "&funcao=listaLayersAgrupados"; + i3GEOF.juntamedidasvariavel.aguarde.visibility = "visible"; + i3GEO.util.ajaxGet(p,temp); + }, + /* + Function: html + + Gera o código html para apresentação das opções da ferramenta + + Retorno: + + String com o código html + */ + html:function() { + var ins = Mustache.render(i3GEOF.juntamedidasvariavel.MUSTACHE, i3GEOF.juntamedidasvariavel.mustacheHash()); + return ins; + }, + /* + Function: iniciaJanelaFlutuante + + Cria a janela flutuante para controle da ferramenta. + */ + iniciaJanelaFlutuante: function(tema){ + var janela,divid,titulo; + if($i("i3GEOF.juntamedidasvariavel")){ + i3GEOF.juntamedidasvariavel.tema = tema; + i3GEOF.juntamedidasvariavel.inicia("i3GEOF.juntamedidasvariavel_corpo"); + return; + } + //cria a janela flutuante + titulo = ""+$trad("titulo",i3GEOF.juntamedidasvariavel.dicionario)+""; + + janela = i3GEO.janela.cria( + "330px", + "260px", + "", + "", + "", + titulo, + "i3GEOF.juntamedidasvariavel", + false, + "hd", + "", + "", + "", + true, + "", + "", + "", + "" + ); + divid = janela[2].id; + i3GEOF.juntamedidasvariavel.aguarde = $i("i3GEOF.juntamedidasvariavel_imagemCabecalho").style; + i3GEOF.juntamedidasvariavel.inicia(divid); + }, + noNovoCalculo: function(){ + var no = document.createElement("div"); + no.innerHTML = '
' + + '' + + '
' + + '
' + $trad("titulosql",i3GEOF.juntamedidasvariavel.dicionario) + '
' + + '
'; + + $i("i3GEOFjuntaColunasCalculadas").appendChild(no); + }, + pegaCalculos: function(){ + var div = $i("i3GEOFjuntaColunasCalculadas"), + nomes = div.getElementsByTagName("input"), + formulas = div.getElementsByTagName("textarea"), + n = nomes.length, + parnomes = [], + parformulas = [], + i; + for(i=0;i +
{{{escolha}}}
+
+
+ + +
+ +
+
{{{colunas}}}
+ +
+ +
+ {{{ajuda}}} +
+ \ No newline at end of file diff --git a/ferramentas/metaestat/index.js b/ferramentas/metaestat/index.js index d216aaa..bad671e 100755 --- a/ferramentas/metaestat/index.js +++ b/ferramentas/metaestat/index.js @@ -252,433 +252,6 @@ i3GEOF.metaestat = { i3GEOF.metaestat.comum.aguarde("hidden"); }; i3GEO.php.listaCamadasMetaestat(temp); - }, - /** - * Abre a janela da ferramenta que permite adicionar labels - * Executa i3GEO.util.dialogoFerramenta() mas com a funcao i3GEOF.metaestat.analise.abreToponimia() - * isso permite a obtencao dos parametros necessarios, como a lista de itens que o usuario podera escolher - */ - toponimia: function(){ - if($i("i3geoCartoAnaliseCamadasCombo").value == ""){ - i3GEO.janela.tempoMsg("Ative uma camada primeiro"); - return; - } - i3GEO.mapa.ativaTema($i("i3geoCartoAnaliseCamadasCombo").value); - i3GEO.util.dialogoFerramenta("i3GEO.tema.dialogo.toponimia()","toponimia","toponimia","dependencias.php","i3GEOF.metaestat.analise.abreToponimia()"); - }, - /** - * Obtem os parametros necessarios ao funcionamento de i3GEOF.metaestat.analise.toponimia() - * Abre a janela de opcoes de i3GEOF.toponimia.iniciaJanelaFlutuante() - */ - abreToponimia: function(){ - if(typeof(i3GEOF.toponimia.dicionario) === 'undefined'){ - i3GEO.util.scriptTag( - i3GEO.configura.locaplic+"/ferramentas/toponimia/dicionario.js", - "i3GEOF.metaestat.analise.janelaToponimia()", - "i3GEOF.toponimia.dicionario_script" - ); - } - else{ - i3GEOF.metaestat.analise.janelaToponimia(); - } - }, - janelaToponimia: function(){ - var p = i3GEO.configura.locaplic+"/ferramentas/metaestat/analise.php?g_sid="+i3GEO.configura.sid + - "&funcao=pegaDadosTME&tema="+i3GEO.temaAtivo, - temp = function(retorno){ - i3GEO.janela.fechaAguarde("aguardeAnalise"); - i3GEOF.toponimia.ATIVAITEM = retorno.data.itemDados; - i3GEOF.toponimia.iniciaJanelaFlutuante(); - }; - i3GEO.janela.abreAguarde("aguardeAnalise","Aguarde..."); - i3GEO.util.ajaxGet(p,temp); - }, - /** - * Junta camadas em uma nova, contendo as colunas das medidas - */ - juntaMedidasVariaveis: { - inicia: function(){ - if($i("aguardeAnalise_c") && $i("aguardeAnalise_c").style.visibility == "visible"){ - return; - }; - var p = i3GEO.configura.locaplic+"/ferramentas/metaestat/analise.php?g_sid="+i3GEO.configura.sid + - "&funcao=listaLayersAgrupados"; - i3GEO.janela.abreAguarde("aguardeAnalise","Aguarde..."); - i3GEO.util.ajaxGet(p,i3GEOF.metaestat.analise.juntaMedidasVariaveis.janelaFlutuante); - }, - janelaFlutuante: function(retorno){ - i3GEO.janela.fechaAguarde("aguardeAnalise"); - if($i("i3GEOF.junta_corpo")){ - return; - } - var minimiza,cabecalho,titulo,ins,n,i,lista = ""; - cabecalho = function(){ - }; - minimiza = function(){ - i3GEO.janela.minimiza("i3GEOF.junta"); - }; - //cria a janela flutuante - titulo = "
Junção de medidas
"; - i3GEO.janela.cria( - "260px", - "300px", - "", - "", - "", - titulo, - "i3GEOF.junta", - false, - "hd", - cabecalho, - minimiza, - "", - false - ); - $i("i3GEOF.junta_corpo").style.backgroundColor = "white"; - n = retorno.data.length; - for(i=0;i"; - } - lista += "
"+retorno.data[i].tema+"
"; - ins = "" + - '

Escolha as camadas de mesmo tipo e região:

' + - lista + - '

Nome da nova camada

' + - $inputText("","","i3GEOFjuntaNovoNome","",30,'') + - '

' + - '
' + - '

Colunas calculadas (opcional) 

' + - '
' ; - $i("i3GEOF.junta_corpo").innerHTML = ins; - new YAHOO.widget.Button( - "i3geojuntaAplica", - {onclick:{fn: i3GEOF.metaestat.analise.juntaMedidasVariaveis.aplica}} - ); - i3GEOF.metaestat.analise.juntaMedidasVariaveis.noNovoCalculo(); - //ajuda para o calculo - i3GEO.util.mensagemAjuda("i3GEOFjuntaColunasCalculadasMensagemAjuda", - "Os cálculos são fórmulas que utilizam as colunas que forem juntadas e que serão incluídas "+ - "na nova camada. Cada uma dessas colunas receberá um nome sequencial, por exemplo valortema0,valortema1,"+ - "valortema2...

As colunas calculadas podem utilizar esses nomes como entrada em fórmulas. "+ - "Cada fórmula irá gerar uma nova coluna na tabela e deve utilizar a sintaxe SQL (SQL no Postgres)"+ - "

Exemplos de uso:

" + - "coluna de nome: soma
" + - "valortema0 + valortema1

" + - "coluna de nome: taxa
" + - "(valortema0 * 100) / valortema1" - ); - }, - noNovoCalculo: function(){ - var no = document.createElement("div"); - no.style.margin = "10px"; - no.style.padding = "5px"; - no.style.backgroundColor = "beige"; - no.style.width = "210px"; - no.innerHTML = '

Nome (apenas letras e números)
' + - '' + - '
Fórmula (padrão sql)
' + - '

'; - $i("i3GEOFjuntaColunasCalculadas").appendChild(no); - }, - pegaCalculos: function(){ - var div = $i("i3GEOFjuntaColunasCalculadas"), - nomes = div.getElementsByTagName("input"), - formulas = div.getElementsByTagName("textarea"), - n = nomes.length, - parnomes = [], - parformulas = [], - i; - for(i=0;i" + - "

Coluna: "+item+"

"; - } - if(retorno.data.indices !== undefined){ - if (retorno.data.indices){ - n = retorno.data.indices.length; - for (i=0;i"+valor+"

"; - } - } - } - else{ - ins = retorno.data; - } - i3GEO.janela.mensagemSimples(ins,"Estatísticas"); - }; - i3GEO.util.ajaxGet(p,monta); - } - else{ - i3GEO.janela.fechaAguarde("aguardeAnalise"); - i3GEO.janela.tempoMsg("Ocorreu algum erro"); - } - }; - if($i("aguardeAnalise_c") && $i("aguardeAnalise_c").style.visibility == "visible"){ - return; - }; - i3GEO.janela.abreAguarde("aguardeAnalise","Aguarde..."); - i3GEO.util.ajaxGet(p,temp); - }, - /** - * Abre a ferramenta que permite realizar uma animacao baseada nas camadas existentes no mapa - * executa i3GEO.mapa.dialogo.animacao() com a funcao i3GEOF.metaestat.analise.listaCamadasAnimacao() - */ - ativaAnimacao: function(){ - i3GEO.util.dialogoFerramenta("i3GEO.mapa.dialogo.animacao()","animacao","animacao","dependencias.php","i3GEOF.metaestat.analise.listaCamadasAnimacao()"); - }, - /** - * Lista as camadas que podem ser usadas na ferramenta de animacao - * Preenche o div com a lista usando i3GEOF.animacao.listaDeCamadas() - * Marca os checkbox das camadas que sao oriundas do sistema metaestat e que estao no mapa - */ - listaCamadasAnimacao: function(){ - i3GEOF.animacao.iniciaJanelaFlutuante(); - i3GEOF.animacao.listaDeCamadas(); - var temp = function(retorno){ - var temas = retorno.data, - n = temas.length, - cs = $i("i3GEOFanimacaoLista").getElementsByTagName("input"), - ns = cs.length, - i,j; - for(i=0;i --> + + + Valores + --> Junção de dados diff --git a/ferramentas/metaestat/template_mst.html b/ferramentas/metaestat/template_mst.html index 0fe19d8..1b675ad 100755 --- a/ferramentas/metaestat/template_mst.html +++ b/ferramentas/metaestat/template_mst.html @@ -10,7 +10,7 @@ {{{10}}} {{{edicao}}} - {{{analise}}} + refresh diff --git a/js/analise.js b/js/analise.js index 17bc33b..5344ed3 100755 --- a/js/analise.js +++ b/js/analise.js @@ -435,6 +435,21 @@ i3GEO.analise = "area", "dependencias.php", "i3GEOF.area.iniciaJanelaFlutuante()"); + }, + juntamedidasvariavel : function(tema) { + if(!tema){ + tema = i3GEO.temaAtivo; + } + var temp = function(){ + i3GEOF.juntamedidasvariavel.iniciaJanelaFlutuante(tema); + }; + i3GEO.util.dialogoFerramenta( + "i3GEO.analise.dialogo.juntamedidasvariavel()", + "juntamedidasvariavel", + "juntamedidasvariavel", + "dependencias.php", + temp + ); } } }; \ No newline at end of file -- libgit2 0.21.2