From 08cf2a604b9f91ff370a4412fae8d13a72b0ec03 Mon Sep 17 00:00:00 2001 From: edmarmoretti Date: Mon, 3 Apr 2017 23:07:16 -0300 Subject: [PATCH] Inclusão de formulário para definição dos parâmetros de construção automática de classes na ferramenta legenda. --- admin/admin.db | Bin 340992 -> 0 bytes admin1/catalogo/mapfile/conexao/ogc/exec.php | 8 +------- admin1/catalogo/mapfile/editor/funcoes.php | 13 ++++++++----- admin1/catalogo/mapfile/editor/index.php | 5 +++-- ferramentas/legenda/dicionario.js | 47 ++++++++++++++++++++++++++++++++++++++++++++++- ferramentas/legenda/exec.php | 33 +++++++++++++++++++++++++++++++++ ferramentas/legenda/index.js | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- ferramentas/legenda/template_mst.html | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ temas/_lautolegenda_exemplo.map | 92 ++++++++++++++++++++++++++++++++++++++------------------------------------------------------ 9 files changed, 246 insertions(+), 70 deletions(-) diff --git a/admin/admin.db b/admin/admin.db index 6e1cf2e..b2638a9 100755 Binary files a/admin/admin.db and b/admin/admin.db differ diff --git a/admin1/catalogo/mapfile/conexao/ogc/exec.php b/admin1/catalogo/mapfile/conexao/ogc/exec.php index b489994..ab8c263 100755 --- a/admin1/catalogo/mapfile/conexao/ogc/exec.php +++ b/admin1/catalogo/mapfile/conexao/ogc/exec.php @@ -61,13 +61,7 @@ switch ($funcao) { outros - $dados["classesitem"] = $layer->getmetadata("classesitem"); - $dados["classesnome"] = $layer->getmetadata("classesnome"); - $dados["classescor"] = $layer->getmetadata("classescor"); - $dados["classessimbolo"] = $layer->getmetadata("classessimbolo"); - $dados["classestamanho"] = $layer->getmetadata("classestamanho"); - $dados["palletefile"] = $layer->getmetadata("palletefile"); - $dados["palletestep"] = $layer->getmetadata("palletestep"); + $dados["description_template"] = $layer->getmetadata("description_template"); $dados["editorsql"] = $layer->getmetadata("editorsql"); */ diff --git a/admin1/catalogo/mapfile/editor/funcoes.php b/admin1/catalogo/mapfile/editor/funcoes.php index 7f5f261..1d8151e 100755 --- a/admin1/catalogo/mapfile/editor/funcoes.php +++ b/admin1/catalogo/mapfile/editor/funcoes.php @@ -23,9 +23,10 @@ function textoMapfile($codigo) { // isso e necessario para manter a consistencia caso o usuario altere manualmente os valores // cria o objeto map $mapa = ms_newMapObj ( $mapfile ); - $layer = $mapa->getlayerbyname ( $codigo ); + $layer = @$mapa->getlayerbyname ( $codigo ); + $erro = ""; if ($layer == "") { - return "
Atenção: não existe nenhum LAYER com NAME igual a " . $codigo . "
"; + $erro = "Atenção: não existe nenhum LAYER com NAME igual a " . $codigo; } else { // pega o metadata $meta = $layer->getmetadata ( "permitedownload" ); @@ -53,10 +54,12 @@ function textoMapfile($codigo) { } $texto = file_get_contents ( $mapfile ); if (mb_detect_encoding ( $texto, 'UTF-8, ISO-8859-1' ) == "ISO-8859-1") { - return utf8_encode ( $texto ); - } else { - return $texto; + $texto = utf8_encode ( $texto ); } + return array ( + "texto" => $texto, + "erro"=> $erro + ); } function salvaMapfile() { global $dbhw, $codigo, $gravarTexto; diff --git a/admin1/catalogo/mapfile/editor/index.php b/admin1/catalogo/mapfile/editor/index.php index 817a7ad..5765775 100755 --- a/admin1/catalogo/mapfile/editor/index.php +++ b/admin1/catalogo/mapfile/editor/index.php @@ -94,13 +94,14 @@ $textoMapfile = \admin\catalogo\mapfile\editor\textoMapfile ( $codigo );
+
- +
diff --git a/ferramentas/legenda/dicionario.js b/ferramentas/legenda/dicionario.js index 9a64108..023224c 100755 --- a/ferramentas/legenda/dicionario.js +++ b/ferramentas/legenda/dicionario.js @@ -856,5 +856,50 @@ i3GEOF.legenda.dicionario = en : "", es : "" } - ] + ], + 'autoClasses' : [ { + pt : "É possível a geração de classes automaticamente por meio da definição de colunas na tabela de atributos do tema que armazenam as informações sobre cor, tamanho, etc.", + en : "", + es : "" + } ], + 'classesitem' : [ { + pt : "Qual a coluna da tabela que identifica unicamente cada classe. Para cada valor será criada uma classe. O tema que utiliza a geração de classes de forma automática, deve ter definido apenas uma classe. Essa classe será utilizada como padrão para geração das demais.", + en : "", + es : "" + } ], + 'classesnome' : [ { + pt : "Nome da coluna que será utilizada para compor o nome das classes geradas automaticamente.", + en : "", + es : "" + } ], + 'classescor' : [ { + pt : "Nome da coluna que definirá a cor do símbolo utilizado em cada classe. As cores devem ser definidas em RGB.", + en : "", + es : "" + } ], + 'classessimbolo' : [ { + pt : "Nome da coluna que definirá o símbolo utilizado em cada classe.", + en : "", + es : "" + } ], + 'classestamanho' : [ { + pt : "Nome da coluna que definirá o tamanho de cada símbolo.", + en : "", + es : "" + } ], + 'palletefile' : [ { + pt : "Palete de cores. Endereço do arquivo no servidor (opcional)", + en : "", + es : "" + } ], + 'palletestep' : [ { + pt : "Quantas cores em cada nível da palete (opcional)", + en : "", + es : "" + } ], + "colunasTxt" : [ { + pt : "Itens disponíveis", + en : "", + es : "" + } ] }; diff --git a/ferramentas/legenda/exec.php b/ferramentas/legenda/exec.php index b4bd37f..f48a1b5 100755 --- a/ferramentas/legenda/exec.php +++ b/ferramentas/legenda/exec.php @@ -7,6 +7,39 @@ verificaBlFerramentas(basename(dirname(__FILE__)),$i3geoBlFerramentas,false); $retorno = ""; //string que será retornada ao browser via JSON switch (strtoupper($funcao)) { + case "PARAMETROSAUTO": + $map = ms_newMapObj($map_file); + $layer = $map->getlayerbyname($tema); + $retorno = array(); + $retorno["classesitem"] = $layer->getmetadata("classesitem"); + $retorno["classesnome"] = $layer->getmetadata("classesnome"); + $retorno["classescor"] = $layer->getmetadata("classescor"); + $retorno["classessimbolo"] = $layer->getmetadata("classessimbolo"); + $retorno["classestamanho"] = $layer->getmetadata("classestamanho"); + $retorno["palletefile"] = $layer->getmetadata("palletefile"); + $retorno["palletestep"] = $layer->getmetadata("palletestep"); + $sopen = $layer->open(); + if($sopen != MS_FAILURE){ + $items = $layer->getItems(); + } + else{ + $items = array(); + } + $retorno["colunas"] = implode(",",$items); + break; + case "SALVAPARAMETROSAUTO": + $map = ms_newMapObj($map_file); + $layer = $map->getlayerbyname($tema); + $layer->setmetadata("classesitem",$_GET["classesitem"]); + $layer->setmetadata("classesnome",$_GET["classesnome"]); + $layer->setmetadata("classescor",$_GET["classescor"]); + $layer->setmetadata("classessimbolo",$_GET["classessimbolo"]); + $layer->setmetadata("classestamanho",$_GET["classestamanho"]); + $layer->setmetadata("palletefile",$_GET["palletefile"]); + $layer->setmetadata("palletestep",$_GET["palletestep"]); + $map->save($map_file); + $retorno = "ok"; + break; /* Valor: TEMA2SLD diff --git a/ferramentas/legenda/index.js b/ferramentas/legenda/index.js index 690236a..54409d9 100755 --- a/ferramentas/legenda/index.js +++ b/ferramentas/legenda/index.js @@ -135,6 +135,11 @@ i3GEOF.legenda = $i(iddiv).innerHTML += i3GEOF.legenda.html(); i3GEO.guias.mostraGuiaFerramenta("i3GEOlegendaguia1", "i3GEOlegendaguia"); // eventos das guias + $i("i3GEOlegendaguia8").onclick = function() { + i3GEOF.legenda.ativaAplicar("none"); + i3GEO.guias.mostraGuiaFerramenta("i3GEOlegendaguia8", "i3GEOlegendaguia"); + i3GEOF.legenda.parametrosAuto(); + }; $i("i3GEOlegendaguia7").onclick = function() { i3GEOF.legenda.ativaAplicar("none"); i3GEO.guias.mostraGuiaFerramenta("i3GEOlegendaguia7", "i3GEOlegendaguia"); @@ -192,6 +197,13 @@ i3GEOF.legenda = }); b.addClass("rodar"); + var b = new YAHOO.widget.Button("i3GEOlegendabotaoAplicarAuto", { + onclick : { + fn : i3GEOF.legenda.salvaParametrosAuto + } + }); + b.addClass("rodar"); + var b = new YAHOO.widget.Button("i3GEOlegendabotao1", { onclick : { fn : i3GEOF.legenda.mudaLegenda @@ -456,7 +468,7 @@ i3GEOF.legenda = + i3GEO.configura.locaplic + "/ajuda_usuario.php?idcategoria=5&idajuda=41' > "; janela = - i3GEO.janela.cria("540px", "350px", "", "", "", titulo, "i3GEOF.legenda", false, "hd", cabecalho, minimiza, function() { + i3GEO.janela.cria("590px", "350px", "", "", "", titulo, "i3GEOF.legenda", false, "hd", cabecalho, minimiza, function() { i3GEO.guias.ajustaGuiaFerramenta("i3GEOF.legenda", "i3GEOlegenda"); }, true, "", "", "nao"); divid = janela[2].id; @@ -2429,5 +2441,55 @@ i3GEOF.legenda = $i("i3GEOlegendaitensValorQuartil").innerHTML = retorno.dados; } }); + }, + parametrosAuto : function() { + i3GEOF.legenda.aguarde.visibility = "visible"; + var p = i3GEO.configura.locaplic+"/ferramentas/legenda/exec.php?g_sid="+i3GEO.configura.sid+"&funcao=parametrosauto&tema=" + i3GEOF.legenda.tema, + cp = new cpaint(), + temp = function(retorno){ + try{ + if(retorno.data !== ""){ + $i("i3GEOlegendaAutocolunas").innerHTML = retorno.data.colunas; + $i("i3GEOlegendaAutoclassesitem").value = retorno.data.classesitem; + $i("i3GEOlegendaAutoclassesnome").value = retorno.data.classesnome; + $i("i3GEOlegendaAutoclassescor").value = retorno.data.classescor; + $i("i3GEOlegendaAutoclassessimbolo").value = retorno.data.classessimbolo; + $i("i3GEOlegendaAutoclassestamanho").value = retorno.data.classestamanho; + $i("i3GEOlegendaAutopalletefile").value = retorno.data.palletefile; + $i("i3GEOlegendaAutopalletestep").value = retorno.data.palletestep; + } + i3GEOF.legenda.aguarde.visibility = "hidden"; + }catch(e){ + i3GEO.janela.tempoMsg("Erro. "+e); + i3GEOF.legenda.aguarde.visibility = "hidden"; + } + }; + cp.set_response_type("JSON"); + cp.call(p,"foo",temp); + }, + salvaParametrosAuto: function(){ + if(i3GEOF.legenda.aguarde.visibility === "visible"){ + return; + } + i3GEOF.legenda.aguarde.visibility = "visible"; + var temp, + p, + cp; + temp = function(){ + i3GEOF.legenda.aguarde.visibility = "hidden"; + i3GEOF.legenda.aposAlterarLegenda(); + }; + p = i3GEO.configura.locaplic+"/ferramentas/legenda/exec.php?g_sid="+i3GEO.configura.sid+"&funcao=salvaparametrosauto&tema=" + i3GEOF.legenda.tema + + "&classesitem=" + $i("i3GEOlegendaAutoclassesitem").value + + "&classesnome=" + $i("i3GEOlegendaAutoclassesnome").value + + "&classescor=" + $i("i3GEOlegendaAutoclassescor").value + + "&classessimbolo=" + $i("i3GEOlegendaAutoclassessimbolo").value + + "&classestamanho=" + $i("i3GEOlegendaAutoclassestamanho").value + + "&palletefile=" + $i("i3GEOlegendaAutopalletefile").value + + "&palletestep=" + $i("i3GEOlegendaAutopalletestep").value; + + cp = new cpaint(); + cp.set_response_type("JSON"); + cp.call(p,"foo",temp); } }; \ No newline at end of file diff --git a/ferramentas/legenda/template_mst.html b/ferramentas/legenda/template_mst.html index ebbc844..b794709 100755 --- a/ferramentas/legenda/template_mst.html +++ b/ferramentas/legenda/template_mst.html @@ -50,9 +50,63 @@ +
  • + +

  • +
    +

    {{{colunasTxt}}}:

    +
    +
    +
    +

    {{{autoClasses}}}

    +
    +

    {{{classesitem}}}:

    +
    + +
    +
    +

    {{{classesnome}}}:

    +
    + +
    +
    +

    {{{classescor}}}:

    +
    + +
    +
    +

    {{{classessimbolo}}}:

    +
    + +
    +
    +

    {{{classestamanho}}}:

    +
    + +
    +
    +

    {{{palletefile}}}:

    +
    + +
    +
    +

    {{{palletestep}}}:

    +
    + +
    +
    +

    + +

    +
    +

    {{{ClusterMaxdistance}}}:

    diff --git a/temas/_lautolegenda_exemplo.map b/temas/_lautolegenda_exemplo.map index 6dcbff2..2c19b9f 100755 --- a/temas/_lautolegenda_exemplo.map +++ b/temas/_lautolegenda_exemplo.map @@ -1,54 +1,38 @@ -MAP - FONTSET "../symbols/fontes.txt" - SYMBOLSET "../symbols/simbolos.sym" - LAYER - DATA "/var/www/i3geo/aplicmap/dados/biomas.shp" - METADATA - "METAESTAT_ID_MEDIDA_VARIAVEL" "" - "ltempoitemimagem" "" - "cache" "SIM" - "ltempoitemdescricao" "" - "CLASSE" "SIM" - "ltempoiteminicio" "" - "palletestep" "" - "ltempoitemtip" "" - "permitekmz" "nao" - "iconetema" "" - "ltempoitemtitulo" "" - "description_template" "" - "ITENSDESC" "Nome" - "ltempoitemlink" "" - "CLASSESNOME" "CD_LEGENDA" - "METAESTAT_CODIGO_TIPO_REGIAO" "" - "palletefile" "" - "ltempoformatodata" "" - "permitedownload" "sim" - "ltempoitemicone" "" - "CLASSESITEM" "ID" - "metaestat" "" - "CLASSESCOR" "COR" - "arquivodownload" "" - "ITENS" "CD_LEGENDA" - "permiteogc" "sim" - "permitekml" "sim" - "TEMA" "_Teste de geração automática de classes em dados vetoriais" - "editorsql" "" - "ltempoitemfim" "" - END # METADATA - NAME "_wautolegenda_exemplo" - STATUS OFF - TEMPLATE "none.htm" - TILEITEM "location" - TYPE POLYGON - UNITS METERS - CLASS - STYLE - ANGLE 0 - OFFSET 0 0 - OUTLINECOLOR 250 50 50 - END # STYLE - END # CLASS - END # LAYER - -END # MAP - + MAP + FONTSET "../symbols/fontes.txt" + SYMBOLSET "../symbols/simbolos.sym" + LAYER + DATA "/var/www/i3geo/aplicmap/dados/biomas.shp" + METADATA + "cache" "SIM" + "ltempoitemdescricao" "" + "CLASSE" "SIM" + "ltempoiteminicio" "" + "ltempoitemtip" "" + "permitekmz" "nao" + "ITENSDESC" "Nome" + "CLASSESNOME" "CD_LEGENDA" + "permitedownload" "sim" + "CLASSESITEM" "ID" + "CLASSESCOR" "COR" + "ITENS" "CD_LEGENDA" + "permiteogc" "sim" + "permitekml" "sim" + "TEMA" "_Teste de geração automática de classes em dados vetoriais" + END # METADATA + NAME "_lautolegenda_exemplo" + STATUS OFF + TEMPLATE "none.htm" + TILEITEM "location" + TYPE POLYGON + UNITS METERS + CLASS + STYLE + ANGLE 0 + OFFSET 0 0 + OUTLINECOLOR 250 50 50 + END # STYLE + END # CLASS + END # LAYER +END # MAP + \ No newline at end of file -- libgit2 0.21.2