if(typeof(i3GEOF) === 'undefined'){ var i3GEOF = {}; } /* Classe: i3GEOF.filtro */ i3GEOF.filtro = { CONTADOR: 0, /* Variavel: aguarde Estilo do objeto DOM com a imagem de aguarde existente no cabeçalho da janela. */ aguarde: "", /* * Variavel: tema * * Tema que será utilizado * * Type: {string} */ tema : i3GEO.temaAtivo, /* Variavel: comboTemas Armazena o combo com os itens do tema */ comboTemas: "", /** * Template no formato mustache. E preenchido na carga do javascript com o programa dependencias.php */ MUSTACHE : "", MUSTACHELINHAFILTRO: "", /** * Susbtitutos para o template */ mustacheHash : function(modoCalculadora,idRetorno) { var dicionario = i3GEO.idioma.objetoIdioma(i3GEOF.filtro.dicionario); dicionario["modoCalculadora"] = modoCalculadora; dicionario["idRetorno"] = idRetorno; if(modoCalculadora == true){ dicionario["escondeGuias"] = "hidden"; } else { dicionario["escondeGuias"] = ""; } i3GEOF.filtro.dicionario["escondeGuias"] = dicionario["escondeGuias"]; 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,modoCalculadora,idRetorno){ if(i3GEOF.filtro.MUSTACHE == ""){ var t1 = i3GEO.configura.locaplic + "/ferramentas/filtro/template_mst.html", t2 = i3GEO.configura.locaplic + "/ferramentas/filtro/template_linhafiltro_mst.html"; $.when( $.get(t1),$.get(t2) ).done(function(r1,r2) { i3GEOF.filtro.MUSTACHE = r1[0]; i3GEOF.filtro.MUSTACHELINHAFILTRO = r2[0]; i3GEOF.filtro.inicia(iddiv,modoCalculadora,idRetorno); }).fail(function() { i3GEO.janela.closeMsg($trad("erroTpl")); return; }); return; } if(modoCalculadora === undefined){ modoCalculadora = false; } try{ $i(iddiv).innerHTML = i3GEOF.filtro.html(modoCalculadora,idRetorno); if(modoCalculadora === false){ if (!$i("i3GEOFfiltroComboCabecaSel")) { i3GEO.janela.comboCabecalhoTemasBs("i3GEOFfiltroComboCabeca","i3GEOFfiltroComboCabecaSel","filtro","ligadosComTabela",function(evt){ var botao = evt.target; if (botao) { if (botao.value != "") { i3GEO.mapa.ativaTema(botao.value); i3GEOF.filtro.tema = botao.value; $i(iddiv).innerHTML = ""; i3GEOF.filtro.inicia(iddiv); } else { //$i(iddiv).innerHTML = ""; } } }); } if(i3GEOF.filtro.tema === ""){ //$i(iddiv).innerHTML = ""; return; } } i3GEO.guias.mostraGuiaFerramenta("i3GEOfiltroguia1","i3GEOfiltroguia"); if(modoCalculadora === false){ //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"); }; */ } // //pega a lista de itens e chama a função de montagem das opções de criação do filtro // i3GEO.util.comboItens( "", i3GEOF.filtro.tema, function(retorno){ i3GEOF.filtro.comboTemas = retorno.dados; i3GEOF.filtro.adicionaLinhaFiltro(); }, "", "coluna", "", "", "form-control" ); } catch(erro){i3GEO.janela.tempoMsg(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(modoCalculadora,idRetorno){ var ins = Mustache.render(i3GEOF.filtro.MUSTACHE, i3GEOF.filtro.mustacheHash(modoCalculadora,idRetorno)); return ins; }, /* Function: iniciaJanelaFlutuante Cria a janela flutuante para controle da ferramenta. A opcao modoCalculadora (boolean) aplica o filtro em um elemento ID e nao aplica ao tema Nesse modo e necessario indicar o id do elemento que recebera o filtro */ iniciaJanelaFlutuante: function(modoCalculadora,idRetorno){ var janela,divid,temp,titulo = ""; if(modoCalculadora === undefined){ modoCalculadora = false; } if($i("i3GEOF.filtro")){ i3GEOF.filtro.inicia("i3GEOF.filtro_corpo"); return; } //cria a janela flutuante if(modoCalculadora === false){ titulo = ""+$trad("t29")+""; } janela = i3GEO.janela.cria( "600px", "260px", "", "", "", titulo, "i3GEOF.filtro", false, "hd", "", "", "", true, "", "", "", "", "38" ); divid = janela[2].id; janela[0].bringToTop(); i3GEOF.filtro.aguarde = $i("i3GEOF.filtro_imagemCabecalho").style; $i("i3GEOF.filtro_corpo").style.backgroundColor = "white"; i3GEOF.filtro.inicia(divid,modoCalculadora,idRetorno); }, removeLinha : function(obj,id){ var linha = $i("linhaFiltro"+id); linha.parentNode.removeChild(linha); }, listaValores: function(id){ var itemTema = $("#linhaFiltro" + id + " [name='coluna']").val(); i3GEO.util.comboValoresItem( "i3GEOfiltrocbitens", i3GEOF.filtro.tema, itemTema, function(retorno){ $i("i3GEOfiltrovalores").innerHTML = "" + retorno.dados; if ($i("i3GEOfiltrocbitens")){ $i("i3GEOfiltrocbitens").onchange = function() { $("#linhaFiltro" + id + " [name='valor']").val(this.value); }; } }, "i3GEOfiltrovalores", "form-control" ); }, adicionaLinhaFiltro: function(){ i3GEOF.filtro.CONTADOR++; var temp,ntr,tabela; ntr = document.createElement("tr"); ntr.id = "linhaFiltro"+i3GEOF.filtro.CONTADOR; temp = Mustache.render( "{{#data}}" + i3GEOF.filtro.MUSTACHELINHAFILTRO + "{{/data}}", {"data":{"comboTemas": i3GEOF.filtro.comboTemas,"contador": i3GEOF.filtro.CONTADOR, "escondeGuias": i3GEOF.filtro.dicionario["escondeGuias"]}} ); $(ntr).html(temp); tabela = $i("i3GEOfiltroparametros"); tabela.appendChild(ntr); }, /* Function: pegaFiltro Pega o filtro atual de um tema Veja: */ pegaFiltro: function(){ var p = i3GEO.configura.locaplic+"/ferramentas/filtro/exec.php?g_sid="+i3GEO.configura.sid+"&funcao=pegafiltro&tema="+i3GEOF.filtro.tema, cp = new cpaint(), temp = function(retorno){ if(retorno.data !== undefined) {$i("i3GEOfiltrofiltro").value = i3GEO.util.base64decode(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+"/ferramentas/filtro/exec.php?g_sid="+i3GEO.configura.sid+"&funcao=inserefiltro&tema="+i3GEOF.filtro.tema+"&filtro=", cp = new cpaint(), temp = function(retorno){ i3GEOF.filtro.aguarde.visibility = "hidden"; if(i3GEO.Interface.ATUAL === "padrao") {i3GEO.atualiza(retorno);} i3GEO.Interface.atualizaTema(retorno,i3GEOF.filtro.tema); }; cp.set_response_type("JSON"); cp.call(p,"insereFiltro",temp); } catch(e){i3GEO.janela.tempoMsg("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,modoCalculadora,idRetorno){ if(arguments.length === 0) {testa = "nao";} if(i3GEOF.filtro.aguarde.visibility === "visible") {return;} try{ i3GEOF.filtro.aguarde.visibility = "visible"; var filtro = "", re,p,cp,temp; if( ($i("i3GEOfiltrofiltro").value !== "") && ($i("i3GEOfiltroguia2obj").style.display === "block")){ filtro = $i("i3GEOfiltrofiltro").value; } else{ filtro = i3GEOF.filtro.formataMapserver(); } if(modoCalculadora === true){ i3GEOF.filtro.aguarde.visibility = "hidden"; temp = i3GEOF.filtro.formataMapserver(); re = new RegExp("'", "g"); temp = temp.replace(re, '"'); $i(idRetorno).value = temp; i3GEO.janela.destroi("i3GEOF.filtro"); } else{ p = i3GEO.configura.locaplic+"/ferramentas/filtro/exec.php?base64=sim&g_sid="+i3GEO.configura.sid+"&funcao=inserefiltro"; cp = new cpaint(); cp.set_response_type("JSON"); cp.set_transfer_mode('POST'); if (testa.toLowerCase() === "sim"){ temp = function(retorno){ $i("i3GEOfiltroguia3obj").innerHTML = ""; i3GEOF.filtro.aguarde.visibility = "hidden"; }; } else{ temp = function(retorno){ if(i3GEO.Interface.ATUAL === "padrao") {i3GEO.atualiza(retorno);} i3GEO.Interface.atualizaTema(retorno,i3GEOF.filtro.tema); i3GEOF.filtro.aguarde.visibility = "hidden"; }; } cp.call(p,"insereFiltro",temp,"tema="+i3GEOF.filtro.tema+"&testa="+testa+"&filtro=" + i3GEO.util.base64encode(filtro)); } } catch(e){ i3GEO.janela.tempoMsg("Erro: "+e); i3GEOF.filtro.aguarde.visibility = "hidden"; } }, formataMapserver : function(){ var filtro = "",g,ipt,i,nos,s,itemsel,operador,valor; g = $i("i3GEOfiltroparametros"); ipt = g.getElementsByTagName("tr"); if (ipt.length > 1){ for (i=1;i