From 6433c01e62bf4d104fe3480f6bb4a3a9221924f1 Mon Sep 17 00:00:00 2001 From: Edmar Moretti Date: Wed, 30 Sep 2009 14:22:25 +0000 Subject: [PATCH] adaptação da ferramenta agrupaelementos para uso de script tag #133 --- classesjs/classe_analise.js | 8 ++++++-- classesjs/classe_util.js | 51 ++++++++++++++++++++++++++++++++++++++++++++++++++- ferramentas/agrupaelementos/index.htm | 16 ---------------- ferramentas/agrupaelementos/index.js | 93 --------------------------------------------------------------------------------------------- ferramentas/agrupaelementos/index.js.php | 224 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ferramentas/buffer/index.js.php | 2 +- ferramentas/funcoes.js | 1 + menutemas/admin.db | Bin 53248 -> 0 bytes 8 files changed, 282 insertions(+), 113 deletions(-) delete mode 100644 ferramentas/agrupaelementos/index.htm delete mode 100644 ferramentas/agrupaelementos/index.js create mode 100644 ferramentas/agrupaelementos/index.js.php diff --git a/classesjs/classe_analise.js b/classesjs/classe_analise.js index 2923002..373706f 100644 --- a/classesjs/classe_analise.js +++ b/classesjs/classe_analise.js @@ -158,8 +158,12 @@ i3GEO.analise = { Abre a janela que gera um tema poligonal agrupando elementos de um tema. */ - agrupaElementos: function() - {i3GEO.janela.cria("400px","230px",i3GEO.configura.locaplic+"/ferramentas/agrupaelementos/index.htm","","","Agrupa    ");} + agrupaElementos: function(){ + if(typeof(i3GEOF.agrupaElementos) === 'undefined'){ + var js = i3GEO.configura.locaplic+"/ferramentas/agrupaelementos/index.js.php"; + i3GEO.util.scriptTag(js,"i3GEOF.agrupaElementos.criaJanelaFlutuante()","i3GEOF.agrupaElementos_script"); + } + } }, /* Classe: i3GEO.analise.medeDistancia diff --git a/classesjs/classe_util.js b/classesjs/classe_util.js index 301618e..7e5b39b 100644 --- a/classesjs/classe_util.js +++ b/classesjs/classe_util.js @@ -1207,7 +1207,7 @@ i3GEO.util = { /* Function: comboTemas - Cria um combo (caixa de seleção) com a lista de temas que estão visíveis no mapa + Cria um combo (caixa de seleção) com a lista de temas existentes no mapa e de determinado tipo Parametros: @@ -1292,6 +1292,55 @@ i3GEO.util = { } }, /* + Function: comboItens + + Cria um combo (caixa de seleção) com a lista de itens de um layer + + Parametros: + + id {String} - id do elemento select que será criado + + tema {String} - código do tema (layer) + + funcao {Function} - função que será executada ao terminar a montagem do combo. Essa função receberá + como parâmetros um Array associativo contendo os dados em HTML gerados e o tipo de resultado. P.ex.: + {dados:comboTemas,tipo:"dados"} + tipo será uma string que pode ser "dados"|"mensagem"|"erro" indicando o tipo de retorno. + + onde {String} - id do elemento HTML que receberá o combo. É utilizado apenas para inserir uma mensagem de aguarde. + + nome {String} - valor que será incluido no parametro "name" do elemento "select". + */ + comboItens: function(id,tema,funcao,onde,nome){ + if (arguments.length > 3) + {$i(onde).innerHTML="buscando itens...";} + if (arguments.length != 5) + {nome = "";} + + var monta = function(retorno) + { + var ins,temp,i; + if (retorno.data != undefined){ + ins = []; + ins.push(""); + ins = ins.join(''); + temp = {dados:ins,tipo:"dados"}; + } + else{ + temp = {dados:'
Ocorreu um erro
',tipo:"erro"}; + } + eval("funcao(temp)"); + } + i3GEO.php.listaItensTema(monta,tema); + }, + /* Function: proximoAnterior Cria uma sequência de opções com botão de anterior e próximo. É utilizado principalmente pelas diff --git a/ferramentas/agrupaelementos/index.htm b/ferramentas/agrupaelementos/index.htm deleted file mode 100644 index 2dc0132..0000000 --- a/ferramentas/agrupaelementos/index.htm +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - -
-
-
-
- - - - \ No newline at end of file diff --git a/ferramentas/agrupaelementos/index.js b/ferramentas/agrupaelementos/index.js deleted file mode 100644 index f305069..0000000 --- a/ferramentas/agrupaelementos/index.js +++ /dev/null @@ -1,93 +0,0 @@ -/* -About: Licença - -I3Geo Interface Integrada de Ferramentas de Geoprocessamento para Internet - -Direitos Autorais Reservados (c) 2006 Ministério do Meio Ambiente Brasil -Desenvolvedor: Edmar Moretti edmar.moretti@mma.gov.br - -Este programa é software livre; você pode redistribuí-lo -e/ou modificá-lo sob os termos da Licença Pública Geral -GNU conforme publicada pela Free Software Foundation; -tanto a versão 2 da Licença. -Este programa é distribuído na expectativa de que seja útil, -porém, SEM NENHUMA GARANTIA; nem mesmo a garantia implícita -de COMERCIABILIDADE OU ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. -Consulte a Licença Pública Geral do GNU para mais detalhes. -Você deve ter recebido uma cópia da Licença Pública Geral do -GNU junto com este programa; se não, escreva para a -Free Software Foundation, Inc., no endereço -59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. -*/ -//inicializa -parametrosURL() -ins = "" -tema = "" -comboTemasSel("temasComSel",function(retorno){comboTemas = retorno.dados}) -t0() - -function t0() -{ - ins = "

Essa ferramenta transforma vários elementos selecionados de um tema em um só criando polígonos agrupados." - ins += "Para definir quais elementos devem ser unidos uns com os outros é preciso escolher um item da tabela de atributos do tema." - ins += "Os elementos que possuírem o mesmo valor serão considerados no mesmo grupo e suas divisas eliminadas. Caso nã tenha sido escolhido nenhum item, todas os elementos serão agrupados em um só" - ins += "

O resultado final será um novo tema com polígonos diferentes dos originais e cuja tabela de atributos conterá apenas o item escolhido." - mostraOpcao("","t1()",ins,"t0") -} -function t1() -{ - ins = "Tema que contém os elementos (pelo menos um elemento deve estar selecionado):
" - ins += comboTemas - mostraOpcao("t0()","t2()",ins,"t1") -} -function t2() -{ - ins = "Escolha o item da tabela de atributos do tema que será utilizado para agregar. (opcional)" - var tema = $i("temasComSel").value - comboitens("selItem",tema,function(retorno) - { - var combo = retorno.dados - if(retorno.tipo == "erro") - {ins += "

erro ao ler os itens do tema de origem

";} - else - { - ins += "

"+combo; - mostraOpcao("t1()","t4()",ins,"t3") - } - }) -} -function t4() -{ - ins = "O tema com os polígonos novos será adicionado ao mapa atual." - ins += "

" - mostraOpcao("t3()","",ins,"t4") - YAHOO.example.init = function () - { - function onPushButtonsMarkupReady() - {new YAHOO.widget.Button("botao1");} - YAHOO.util.Event.onContentReady("botao1", onPushButtonsMarkupReady); - }() -} -function calcula() -{ - $i("fim").innerHTML =""; - var tema = $i("temasComSel").value - var item = $i("selItem").value - if(tema == ""){alert("Escolha um tema.");return;} - //if(item == ""){alert("Escolha um item.");return;} - aguarde("block") - var fim = function(retorno) - { - aguarde("none"); - if (retorno.data==undefined ) - {$i("fim").innerHTML = "Erro. A operação demorou muito.";} - else - {window.parent.i3GEO.atualiza("");} - } - var p = g_locaplic+"/classesphp/mapa_controle.php?g_sid="+g_sid+"&funcao=agrupaElementos&tema="+tema+"&item="+item - var cp = new cpaint(); - //cp.set_debug(2); - cp.set_response_type("JSON"); - //cp.set_persistent_connection(true); - cp.call(p,"agrupaElementos",fim); -} diff --git a/ferramentas/agrupaelementos/index.js.php b/ferramentas/agrupaelementos/index.js.php new file mode 100644 index 0000000..1b1cbc6 --- /dev/null +++ b/ferramentas/agrupaelementos/index.js.php @@ -0,0 +1,224 @@ + +/*jslint plusplus:false,white:false,undef: false, rhino: true, onevar: true, evil: true */ + +/* +About: Licença + +I3Geo Interface Integrada de Ferramentas de Geoprocessamento para Internet + +Direitos Autorais Reservados (c) 2006 Ministério do Meio Ambiente Brasil +Desenvolvedor: Edmar Moretti edmar.moretti@mma.gov.br + +Este programa é software livre; você pode redistribuí-lo +e/ou modificá-lo sob os termos da Licença Pública Geral +GNU conforme publicada pela Free Software Foundation; +tanto a versão 2 da Licença. +Este programa é distribuído na expectativa de que seja útil, +porém, SEM NENHUMA GARANTIA; nem mesmo a garantia implícita +de COMERCIABILIDADE OU ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. +Consulte a Licença Pública Geral do GNU para mais detalhes. +Você deve ter recebido uma cópia da Licença Pública Geral do +GNU junto com este programa; se não, escreva para a +Free Software Foundation, Inc., no endereço +59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. +*/ +if(typeof(i3GEOF) === 'undefined'){ + i3GEOF = []; +} +/* +Class: i3GEOF.agrupaElementos + +Agrupa elementos selecionados de um tema e gera um novo tema. +*/ +i3GEOF.agrupaElementos = { + /* + Variavel: aguarde + + Estilo do objeto DOM com a imagem de aguarde existente no cabeçalho da janela. + */ + aguarde: "", + /* + Function: inicia + + Inicia a ferramenta. É chamado por criaJanelaFlutuante + + Parametro: + + iddiv {String} - id do div que receberá o conteudo HTML da ferramenta + */ + inicia: function(iddiv){ + try{ + $i(iddiv).innerHTML += i3GEOF.agrupaElementos.html(); + i3GEOF.agrupaElementos.t0(); + } + catch(erro){alert(erro);} + }, + /* + 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 = ''; + ins += '
'; + ins += '
'; + ins += '
'; + ins += '
'; + return ins; + }, + /* + Function: criaJanelaFlutuante + + Cria a janela flutuante para controle da ferramenta. + */ + criaJanelaFlutuante: function(){ + var minimiza,cabecalho,janela,divid,temp,titulo; + //cria a janela flutuante + titulo = "Agrupa    "; + cabecalho = function(){}; + minimiza = function(){ + var temp = $i("i3GEOF.agrupaElementos_corpo"); + if(temp){ + if(temp.style.display === "block") + {temp.style.display = "none";} + else + {temp.style.display = "block";} + } + }; + janela = i3GEO.janela.cria( + "400px", + "240px", + "", + "", + "", + titulo, + "i3GEOF.agrupaElementos", + false, + "hd", + cabecalho, + minimiza + ); + divid = janela[2].id; + i3GEOF.agrupaElementos.aguarde = $i("i3GEOF.agrupaElementos_imagemCabecalho").style; + i3GEOF.agrupaElementos.inicia(divid); + }, + t0: function() + { + var ins = "

Essa ferramenta transforma vários elementos selecionados de um tema em um só gerando um polígono para cada grupo."; + ins += "

Para definir quais elementos devem ser unidos uns com os outros é preciso escolher um item da tabela de atributos do tema."; + ins += "Os elementos que possuírem o mesmo valor serão considerados no mesmo grupo. Caso nã tenha sido escolhido nenhum item, todas os elementos serão agrupados em um só"; + ins += "

O resultado final será um novo tema com elementos diferentes dos originais e cuja tabela de atributos conterá apenas o item escolhido."; + i3GEO.util.proximoAnterior("","i3GEOF.agrupaElementos.t1()",ins,"i3GEOFgradeDePontost0","i3GEOagrupaelementosresultado"); + }, + t1: function(){ + var ins = "

Tema que contém os elementos (pelo menos um elemento deve estar selecionado):
"; + ins += "

"; + i3GEO.util.proximoAnterior("i3GEOF.agrupaElementos.t0()","i3GEOF.agrupaElementos.t2()",ins,"i3GEOF.agrupaElementos.t1","i3GEOagrupaelementosresultado"); + i3GEOF.agrupaElementos.comboTemasSel(); + }, + t2: function(){ + var ins = "

Escolha o item da tabela de atributos que será utilizado para agregar. (opcional)"; + ins += "

"; + i3GEO.util.proximoAnterior("i3GEOF.agrupaElementos.t1()","i3GEOF.agrupaElementos.t3()",ins,"i3GEOF.agrupaElementos.t2","i3GEOagrupaelementosresultado"); + $i("i3GEOagrupaelementosSelItens").style.display = "block"; + i3GEOF.agrupaElementos.comboItensSel(); + }, + t3: function(){ + var ins = "

O tema com o agrupamento será adicionado ao mapa atual."; + ins += "

"; + i3GEO.util.proximoAnterior("i3GEOF.agrupaElementos.t2()","",ins,"i3GEOF.agrupaElementos.t3","i3GEOagrupaelementosresultado"); + new YAHOO.widget.Button( + "i3GEOagrupaelementosbotao1", + {onclick:{fn: i3GEOF.agrupaElementos.criaAgrupamento}} + ); + }, + /* + Function: criaBuffer + + Cria a grade e adiciona um novo tema ao mapa + */ + criaAgrupamento: function(){ + try{ + if(i3GEOF.agrupaElementos.aguarde.visibility === "visible") + {return;} + var item = $i("i3GEOagrupaelementosselItem").value, + tema = $i("i3GEOagrupaelementostemasComSel").value, + p, + fim, + cp; + if (tema !== "") + { + i3GEOF.agrupaElementos.aguarde.visibility = "visible"; + fim = function(retorno){ + i3GEOF.agrupaElementos.aguarde.visibility = "hidden"; + if (retorno.data === undefined ) + {$i("i3GEOagrupaelementosfim").innerHTML = "Erro. A operação demorou muito.";} + else + {i3GEO.atualiza();} + }; + p = i3GEO.configura.locaplic+"/classesphp/mapa_controle.php?g_sid="+i3GEO.configura.sid+"&funcao=agrupaElementos&tema="+tema+"&item="+item; + cp = new cpaint(); + cp.set_response_type("JSON"); + cp.call(p,"agrupaElementos",fim); + } + else + {alert("Tema invalido");} + } + catch(e){$i("i3GEOagrupaelementosfim").innerHTML = "

Erro. "+e;i3GEO.janela.fechaAguarde();i3GEOF.agrupaElementos.aguarde.visibility = "hidden";} + }, + /* + Function: comboTemasSel + + Cria um combo com a lista de temas com elementos selecionados + */ + comboTemasSel: function(){ + i3GEO.util.comboTemas( + "i3GEOagrupaelementostemasComSel", + function(retorno){ + $i("i3GEOagrupaelementosSelTemas").innerHTML = retorno.dados; + $i("i3GEOagrupaelementosSelTemas").style.display = "block"; + if ($i("i3GEOagrupaelementostemasComSel")){ + $i("i3GEOagrupaelementostemasComSel").onchange = function(){ + i3GEO.temaAtivo = $i("i3GEOagrupaelementostemasComSel").value; + }; + } + if(i3GEO.temaAtivo !== ""){ + $i("i3GEOagrupaelementostemasComSel").value = i3GEO.temaAtivo; + $i("i3GEOagrupaelementostemasComSel").onchange.call(); + } + }, + "i3GEOagrupaelementosSelTemas", + "", + false, + "selecionados" + ); + }, + /* + Function: comboItensSel + + Cria um combo para selecionar os itens do tema escolhido + */ + comboItensSel: function(){ + var tema = $i("i3GEOagrupaelementostemasComSel").value; + i3GEO.util.comboItens( + "i3GEOagrupaelementosselItem", + tema, + function(retorno){ + var combo = retorno.dados; + if(retorno.tipo === "erro"){ + $i("i3GEOagrupaelementosSelItens").innerHTML = "

erro ao ler os itens do tema de origem

"; + } + else{ + $i("i3GEOagrupaelementosSelItens").innerHTML = retorno.dados; + } + }, + "i3GEOagrupaelementosSelItens", + "" + ); + } +}; + \ No newline at end of file diff --git a/ferramentas/buffer/index.js.php b/ferramentas/buffer/index.js.php index 4c933a0..c345513 100644 --- a/ferramentas/buffer/index.js.php +++ b/ferramentas/buffer/index.js.php @@ -181,7 +181,7 @@ i3GEOF.buffer = { $i("i3GEObufferSelTemas").style.display = "block"; if ($i("i3GEObuffertemasComSel")){ $i("i3GEObuffertemasComSel").onchange = function(){ - i3GEO.temaAtivo = $i("i3GEOanalisageometriastemasLigados").value; + i3GEO.temaAtivo = $i("i3GEObuffertemasComSel").value; }; } if(i3GEO.temaAtivo !== ""){ diff --git a/ferramentas/funcoes.js b/ferramentas/funcoes.js index dbf8a3d..e40570c 100644 --- a/ferramentas/funcoes.js +++ b/ferramentas/funcoes.js @@ -243,6 +243,7 @@ function combocor(id,def,s) } // //monta combo com os itens de um unico tema +//i3GEO.util.comboItens // function comboitens(id,tema,funcao,onde,nome) { diff --git a/menutemas/admin.db b/menutemas/admin.db index 457d3fb..1831d71 100644 Binary files a/menutemas/admin.db and b/menutemas/admin.db differ -- libgit2 0.21.2