/*jslint plusplus:false,white:false,undef: false, rhino: true, onevar: true, evil: true */ /* Title: Filtra tema Adiciona ou modifica o filtro de um tema. O filtro restringe quais elementos são renderizados e baseiam-se em regras aplicadas sobre a tabela de atributos Veja: Arquivo: i3geo/ferramentas/filtro/index.js.php Licenca: GPL2 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; 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 = []; } /* Classe: i3GEOF.filtro */ i3GEOF.filtro = { /* Variavel: aguarde Estilo do objeto DOM com a imagem de aguarde existente no cabeçalho da janela. */ aguarde: "", /* Variavel: comboTemas Armazena o combo com os itens do tema */ comboTemas: "", /* Function: inicia Inicia a ferramenta. É chamado por criaJanelaFlutuante Parametro: iddiv {String} - id do div que receberá o conteudo HTML da ferramenta */ inicia: function(iddiv){ i3GEO.janela.comboCabecalhoTemas("i3GEOFfiltroComboCabeca","i3GEOFfiltroComboCabecaSel","filtro","ligadosComTabela"); if(i3GEO.temaAtivo === ""){ $i(iddiv).innerHTML = '

Escolha um tema da lista

'; return; } try{ $i(iddiv).innerHTML += i3GEOF.filtro.html(); i3GEO.guias.mostraGuiaFerramenta("i3GEOfiltroguia1","i3GEOfiltroguia"); //eventos das guias $i("i3GEOfiltroguia1").onclick = function() {i3GEO.guias.mostraGuiaFerramenta("i3GEOfiltroguia1","i3GEOfiltroguia");}; $i("i3GEOfiltroguia2").onclick = function(){ i3GEO.guias.mostraGuiaFerramenta("i3GEOfiltroguia2","i3GEOfiltroguia"); i3GEOF.filtro.pegaFiltro(); }; $i("i3GEOfiltroguia3").onclick = function(){ i3GEO.guias.mostraGuiaFerramenta("i3GEOfiltroguia3","i3GEOfiltroguia"); i3GEOF.filtro.aplicaFiltro("sim"); }; new YAHOO.widget.Button( "i3GEOfiltrobotao1", {onclick:{fn: function(){i3GEOF.filtro.aplicaFiltro("nao");}}} ); new YAHOO.widget.Button( "i3GEOfiltrobotao2", {onclick:{fn: i3GEOF.filtro.limpaFiltro}} ); i3GEO.util.mensagemAjuda("i3GEOfiltromen1",$i("i3GEOfiltromen1").innerHTML); // //pega a lista de itens e chama a função de montagem das opções de criação do filtro // i3GEO.util.comboItens( "none", i3GEO.temaAtivo, function(retorno){ i3GEOF.filtro.comboTemas = retorno.dados; i3GEOF.filtro.adicionaLinhaFiltro(); } ); } 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 = '' + '
'+ ' '+ '

'+ '

'+ ' '+ ' '+ '

'+ ''+ ''+ ''; return ins; }, /* Function: criaJanelaFlutuante Cria a janela flutuante para controle da ferramenta. */ criaJanelaFlutuante: function(){ var janela,divid,temp,titulo; if($i("i3GEOF.filtro")){ i3GEOF.filtro.inicia("i3GEOF.tabela_corpo"); return; } //cria a janela flutuante titulo = "
------
   Filtro    "; janela = i3GEO.janela.cria( "480px", "250px", "", "", "", titulo, "i3GEOF.filtro", true, "hd" ); divid = janela[2].id; i3GEOF.filtro.aguarde = $i("i3GEOF.filtro_imagemCabecalho").style; $i("i3GEOF.filtro_corpo").style.backgroundColor = "white"; i3GEOF.filtro.inicia(divid); temp = function(){ if(i3GEO.eventos.ATUALIZAARVORECAMADAS.toString().search('i3GEO.janela.comboCabecalhoTemas("i3GEOFfiltroComboCabeca","i3GEOFfiltroComboCabecaSel","filtro","ligadosComTabela")') > 0) {i3GEO.eventos.ATUALIZAARVORECAMADAS.remove('i3GEO.janela.comboCabecalhoTemas("i3GEOFfiltroComboCabeca","i3GEOFfiltroComboCabecaSel","filtro","ligadosComTabela")');} }; YAHOO.util.Event.addListener(janela[0].close, "click", temp); }, /* Function: adicionaLinhaFiltro Adiciona uma nova linha de filtro */ adicionaLinhaFiltro: function(){ var add,xis,interrogacao,operador,conector,valor,ntb,ntr,ntad,ntd,ntd1,ntd2,ntd3,ntd4,tabela; try{ add = document.createElement("img"); add.src = i3GEO.configura.locaplic+'/imagens/plus.gif'; add.style.cursor="pointer"; add.onclick = function() {i3GEOF.filtro.adicionaLinhaFiltro();}; xis = document.createElement("img"); xis.src = i3GEO.configura.locaplic+'/imagens/x.gif'; xis.style.cursor="pointer"; xis.onclick = function(){ var p = this.parentNode.parentNode.parentNode, i; for (i = 0; i < p.childNodes.length;i++) {p.removeChild(p.childNodes[i]);} }; interrogacao = document.createElement("img"); interrogacao.src = i3GEO.configura.locaplic+'/imagens/interrogacao.gif'; interrogacao.title='mostra valores'; interrogacao.style.cursor="pointer"; interrogacao.onclick = function(){ var obj, itemTema; obj = (this.parentNode.getElementsByTagName("input"))[0]; itemTema = (this.parentNode.parentNode.getElementsByTagName("select"))[0].value; i3GEO.util.comboValoresItem( "i3GEOfiltrocbitens", i3GEO.temaAtivo, itemTema, function(retorno){ $i("i3GEOfiltrovalores").innerHTML = "

Escolha o valor:"+retorno.dados+"

"; if ($i("i3GEOfiltrocbitens")){ $i("i3GEOfiltrocbitens").onchange = function() {obj.value = this.value;}; } }, "i3GEOfiltrovalores" ); }; operador = ""; conector = ""; valor = document.createElement("input"); valor.type = "text"; valor.value = ""; valor.size = "20"; ntb = document.createElement("tbody"); ntr = document.createElement("tr"); ntad = document.createElement("td"); ntad.appendChild(add); ntr.appendChild(ntad); ntd = document.createElement("td"); ntd.appendChild(xis); ntr.appendChild(ntd); ntd1 = document.createElement("td"); ntd1.innerHTML = i3GEOF.filtro.comboTemas; ntr.appendChild(ntd1); ntd2 = document.createElement("td"); ntd2.innerHTML = operador; ntr.appendChild(ntd2); ntd3 = document.createElement("td"); ntd3.appendChild(valor); ntd3.appendChild(interrogacao); ntr.appendChild(ntd3); ntd4 = document.createElement("td"); ntd4.innerHTML = conector; ntr.appendChild(ntd4); ntb.appendChild(ntr); tabela = $i("i3GEOfiltroparametros"); tabela.appendChild(ntb); } catch(e){alert("Erro: "+e);} }, /* Function: pegaFiltro Pega o filtro atual de um tema Veja: */ pegaFiltro: function(){ var p = i3GEO.configura.locaplic+"/classesphp/mapa_controle.php?g_sid="+i3GEO.configura.sid+"&funcao=pegafiltro&tema="+i3GEO.temaAtivo, cp = new cpaint(), temp = function(retorno){ if(retorno.data !== undefined) {$i("i3GEOfiltrofiltro").value = retorno.data;} }; cp.set_response_type("JSON"); cp.call(p,"pegaFiltro",temp); }, /* Function: limpaFiltro Limpa o filtro de um tema Veja: */ limpaFiltro: function(){ try{ if(i3GEOF.filtro.aguarde.visibility === "visible") {return;} i3GEOF.filtro.aguarde.visibility = "visible"; var p = i3GEO.configura.locaplic+"/classesphp/mapa_controle.php?g_sid="+i3GEO.configura.sid+"&funcao=inserefiltro&tema="+i3GEO.temaAtivo+"&filtro=", cp = new cpaint(), temp = function(retorno){ i3GEOF.filtro.aguarde.visibility = "hidden"; if(i3GEO.Interface.ATUAL === "padrao") {i3GEO.atualiza(retorno);} i3GEO.Interface.atualizaTema(retorno,i3GEO.temaAtivo); }; cp.set_response_type("JSON"); cp.call(p,"insereFiltro",temp); } catch(e){alert("Erro: "+e);} }, /* Function: aplicaFiltro Aplica um filtro ao tema Veja: Parametro: testa {String} - sim|nao indica a realização de teste ou aplicação final do filtro */ aplicaFiltro: function(testa){ if(arguments.length === 0) {testa = "nao";} if(i3GEOF.filtro.aguarde.visibility === "visible") {return;} try{ i3GEOF.filtro.aguarde.visibility = "visible"; var filtro = "", re,g,ipt,i,nos,s,itemsel,valor,operador,conector,p,cp,temp; if( ($i("i3GEOfiltrofiltro").value !== "") &&($i("i3GEOfiltroguia2obj").style.display === "block")){ filtro = $i("i3GEOfiltrofiltro").value; re = new RegExp("'","g"); filtro = filtro.replace(re,"|"); filtro = filtro.replace(re,""); filtro = filtro.replace(re,""); } else{ g = $i("i3GEOfiltroparametros"); ipt = g.getElementsByTagName("tr"); if (ipt.length > 1){ for (i=2;i"; i3GEOF.filtro.aguarde.visibility = "hidden"; }; } else{ temp = function(retorno){ if(i3GEO.Interface.ATUAL === "padrao") {i3GEO.atualiza(retorno);} i3GEO.Interface.atualizaTema(retorno,i3GEO.temaAtivo); i3GEOF.filtro.aguarde.visibility = "hidden"; }; } cp.call(p,"insereFiltro",temp,"tema="+i3GEO.temaAtivo,"filtro="+filtro,"testa="+testa); } catch(e){ alert("Erro: "+e); i3GEOF.filtro.aguarde.visibility = "hidden"; } } };