/*jslint plusplus:false,white:false,undef: false, rhino: true, onevar: true, evil: true */ /* Title: Temas File: i3geo/classesjs/classe_tema.js 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; 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(i3GEO) === 'undefined'){ i3GEO = []; } /* Classe: i3GEO.tema Funções de diálogo e processamento de propriedades de um tema existente no mapa Em i3GEO.tema.dialogo estão as funções de abertura dos diálogos para alteração das propriedades do tema, */ i3GEO.tema = { /* Variable: TEMPORIZADORESID Objeto que contém os identificadores dos temporizadores (setInterval) estabelecidos para cada camada Type: {objeto} - {idtema:{idtemporizador:,tempo:}} */ TEMPORIZADORESID: {}, /* Function: exclui Exclui um tema do mapa Parametros: tema - código do tema */ exclui: function(tema){ if(typeof(console) !== 'undefined'){console.info("i3GEO.tema.exclui()");} g_operacao = "excluitema"; //remove o tema do DOM e seus filhos var layer, indice, p; try{ p = document.getElementById("idx"+tema).parentNode.parentNode.parentNode; do {p.removeChild(p.childNodes[0]);} while (p.childNodes.length > 0); p.parentNode.removeChild(p); } catch(e){} i3GEO.janela.abreAguarde("i3GEO.atualiza",$trad("o1")); i3GEO.php.excluitema(i3GEO.atualiza,[tema]); i3GEO.mapa.ativaTema(""); i3GEO.temaAtivo = ""; }, /* Function: fonte Abre os metadados registrados para o tema Parametros: tema - código do tema */ fonte: function(tema){ if(typeof(console) !== 'undefined'){console.info("i3GEO.tema.fonte()");} i3GEO.mapa.ativaTema(tema); window.open(i3GEO.configura.locaplic+"/admin/abrefontemapfile.php?tema="+tema); /* i3GEO.janela.abreAguarde("i3GEO.atualiza",$trad("o1")); i3GEO.mapa.ativaTema(tema); var temp = function(retorno){ i3GEO.janela.fechaAguarde(); if(retorno.data !== "erro") {window.open(i3GEO.configura.locaplic+"/admin/abrefontemapfile.php?tema="+tema);} else {alert("Não existe fonte registrada para esse tema");} }; i3GEO.php.fontetema(temp,tema); */ }, /* Function: sobe Sobe um tema na ordem de desenho Parametros: tema - código do tema */ sobe: function(tema){ if(typeof(console) !== 'undefined'){console.info("i3GEO.tema.sobe()");} i3GEO.mapa.ativaTema(tema); var temp = function(retorno){ // //atualiza apenas remonta a árvore //no caso de interfaces como openlayers //é necessário mover o DIV tbm // i3GEO.atualiza(retorno); if(i3GEO.Interface.ATUAL === "openlayers") {i3GEO.Interface.openlayers.ordenaLayers();} }; i3GEO.janela.abreAguarde("i3GEO.atualiza",$trad("o1")); //i3GEO.contadorAtualiza++; i3GEO.php.sobetema(temp,tema); }, /* Function: desce Desce um tema na ordem de desenho Parametros: tema - código do tema */ desce: function(tema){ if(typeof(console) !== 'undefined'){console.info("i3GEO.tema.desce()");} i3GEO.mapa.ativaTema(tema); var temp = function(retorno){ // //atualiza apenas remonta a árvore //no caso de interfaces como openlayers //é necessário mover o DIV tbm // i3GEO.atualiza(retorno); if(i3GEO.Interface.ATUAL === "openlayers") {i3GEO.Interface.openlayers.ordenaLayers();} }; i3GEO.janela.abreAguarde("i3GEO.atualiza",$trad("o1")); //i3GEO.contadorAtualiza++; i3GEO.php.descetema(temp,tema); }, /* Function: zoom Zoom para o tema Parametros: tema - código do tema */ zoom: function(tema){ i3GEO.mapa.ativaTema(tema); if(typeof(console) !== 'undefined'){console.info("i3GEO.tema.zoom()");} i3GEO.janela.abreAguarde("i3GEO.atualiza",$trad("o1")); //i3GEO.contadorAtualiza++; i3GEO.php.zoomtema(i3GEO.atualiza,tema); }, /* Function: zoomsel Zoom para os elementos selecionados de um tema Parametros: tema - código do tema */ zoomsel: function(tema){ if(typeof(console) !== 'undefined'){console.info("i3GEO.tema.zoomsel()");} i3GEO.mapa.ativaTema(tema); i3GEO.janela.abreAguarde("i3GEO.atualiza",$trad("o1")); //i3GEO.contadorAtualiza++; i3GEO.php.zoomsel(i3GEO.atualiza,tema); }, /* Function: limpasel Limpa a selecao do tema Parametros: tema - ID (name) do tema clicado */ limpasel: function(tema){ if(typeof(console) !== 'undefined'){console.info("i3GEO.tema.limpasel()");} i3GEO.mapa.ativaTema(tema); g_operacao = "limpasel"; i3GEO.janela.abreAguarde("i3GEO.atualiza",$trad("o1")); //i3GEO.contadorAtualiza++; var temp = function(retorno){ i3GEO.atualiza(retorno); i3GEO.Interface.atualizaTema(retorno,tema); }; i3GEO.php.limpasel(temp,tema); }, /* Function: mudatransp Muda a transparencia de um tema Parametros: idtema - código do tema */ mudatransp: function(idtema){ if(typeof(console) !== 'undefined'){console.info("i3GEO.tema.mudatransp()");} i3GEO.mapa.ativaTema(idtema); g_operacao = "transparencia"; var valor, temp = function(retorno){ i3GEO.atualiza(retorno); i3GEO.Interface.atualizaTema(retorno,idtema); }; //o campo input com o valor possui o prefixo 'tr' seguido pelo código do tema if ($i("tr"+idtema)) {valor = $i("tr"+idtema).value;} else {alert("Ocorreu um erro");} if (valor !== ""){ i3GEO.janela.abreAguarde("i3GEO.atualiza",$trad("o1")); //i3GEO.contadorAtualiza++; i3GEO.php.mudatransp(temp,idtema,valor); } else {alert("Valor não definido.");} }, /* Function: invertestatuslegenda Inverte o status atual do metadata CLASSE, permitindo esconder ou mostrar a legenda do tema Parametros: idtema - código do tema */ invertestatuslegenda: function(idtema){ if(typeof(console) !== 'undefined'){console.info("i3GEO.tema.invertestatuslegenda()");} alert("Essa opção afeta apenas a impressão do mapa"); i3GEO.mapa.ativaTema(idtema); g_operacao = "transparencia"; var temp = function(retorno){ i3GEO.atualiza(retorno); i3GEO.arvoreDeCamadas.atualiza(); }; i3GEO.janela.abreAguarde("i3GEO.atualiza",$trad("o1")); //i3GEO.contadorAtualiza++; i3GEO.php.invertestatuslegenda(temp,idtema); }, /* Function: alteracorclasse Altera a cor de uma classe de um tema Parametros: idtema - código do tema idclasse - id da classe rgb - nova cor (r,g,b) */ alteracorclasse: function(idtema,idclasse,rgb){ if(typeof(console) !== 'undefined'){console.info("i3GEO.tema.alteracorclasse()");} i3GEO.mapa.ativaTema(idtema); var temp = function(){ i3GEO.atualiza(); i3GEO.Interface.atualizaTema("",idtema); i3GEO.arvoreDeCamadas.atualizaLegenda(idtema); }; i3GEO.janela.abreAguarde("i3GEO.atualiza",$trad("o1")); i3GEO.php.aplicaCorClasseTema(temp,idtema,idclasse,rgb); }, /* Function: mudanome Muda o nome de um tema Parametros: idtema - código do tema */ mudanome: function(idtema){ if(typeof(console) !== 'undefined'){console.info("i3GEO.tema.mudanome()");} i3GEO.mapa.ativaTema(idtema); g_operacao = "mudanome"; var valor; if($i("nn"+idtema)) {valor = $i("nn"+idtema).value;} else {alert("Ocorreu um erro");} if (valor !== ""){ i3GEO.janela.abreAguarde("i3GEO.atualiza",$trad("o1")); //i3GEO.contadorAtualiza++; i3GEO.php.mudanome(i3GEO.atualiza,idtema,valor); } else {alert("Nome não definido");} }, /* Function: mostralegendajanela Mostra a legenda de um tema em uma janela flutuante específica Na configuração padrão, essa função é disparada quando o usuário estaciona o ouse sobre o nome de um tema na árvore de camadas O uso normal seria nas opções onmouseover e onmouseout Exemplo: onmouseover = i3GEO.tema.mostralegendajanela(idtema,nome,"ativatimer") onmouseout = i3GEO.tema.mostralegendajanela(idtema,nome,"desaativatimer") onclick = i3GEO.tema.mostralegendajanela(idtema,nome,"abrejanela") Parametros: idtema {String} - código do tema nome {String} - nome completo do tema que será mostrado no cabeçalho da janela tipoOperacao {String} {ativatimer|desativatimer|abrejanela} - tipo de operação que será executada */ mostralegendajanela: function(idtema,nome,tipoOperacao){ if(typeof(console) !== 'undefined'){console.info("i3GEO.tema.mostralegendajanela()");} //alert(idtema+" "+status) var retorna,janela; if(tipoOperacao === "ativatimer"){ mostralegendajanelaTimer = setTimeout("i3GEO.tema.mostralegendajanela('"+idtema+"','"+nome+"','abrejanela')",4000); } if(tipoOperacao === "abrejanela"){ try{clearTimeout(mostralegendajanelaTimer);} catch(e){ if(typeof(console) !== 'undefined'){console.error(e);} } retorna = function(retorno){ $i("janelaLegenda"+idtema+"_corpo").innerHTML = retorno.data.legenda; }; if(!$i("janelaLegenda"+idtema)){ janela = i3GEO.janela.cria("250px","","","","",nome,"janelaLegenda"+idtema,false); janela[2].style.textAlign="left"; janela[2].style.background="white"; janela[2].innerHTML = $trad("o1"); } i3GEO.php.criaLegendaHTML(retorna,idtema,"legenda3.htm"); } if(tipoOperacao === "desativatimer"){ clearTimeout(mostralegendajanelaTimer); } }, /* Function: temporizador Aplica um temporizador para que a camada seja redesenhada em determinado intervalo de tempo. O campo com o valor de tempo (em segundos) é composto por "temporizador"+idtema Parametros: idtema - id que identifica o tema no map file. */ temporizador: function(idtema,tempo){ if(!tempo) {tempo = $i("temporizador"+idtema).value;} if(tempo != "" && parseInt(tempo,10) > 0){ eval('i3GEO.tema.TEMPORIZADORESID.'+idtema+' = {tempo: '+tempo+',idtemporizador: setInterval(function('+idtema+'){if(!$i("arrastar_'+idtema+'")){delete(i3GEO.tema.TEMPORIZADORESID.'+idtema+');return;}i3GEO.Interface.atualizaTema("",idtema);},parseInt('+tempo+',10)*1000)};'); } else{ try{ window.clearInterval(i3GEO.tema.TEMPORIZADORESID[idtema].idtemporizador); delete(i3GEO.tema.TEMPORIZADORESID[idtema]); } catch(e){} } }, /* Classe: i3GEO.tema.dialogo Abre as telas de diálogo das opções de manipulação de um tema Return: i3GEO.janela.cria */ dialogo:{ /* Function: tme Abre a ferramenta TME Parametros: tema - código do tema escolhido */ tme: function(tema){ i3GEO.mapa.ativaTema(tema); i3GEO.util.dialogoFerramenta("i3GEO.tema.dialogo.tme()","tme","tme"); }, /* Function: mostraWms Mostra a url que dá acesso ao WMS de um tema Parametros: tema - código do tema escolhido */ mostraWms: function(tema){ i3GEO.janela.mensagemSimples(i3GEO.configura.locaplic+"/ogc.php?tema="+tema,"Endereço do WMS"); }, /* Function: comentario Abre a janela de diálogo para o usuário ver e inserir comentarios em um tema Parametros: tema - código do tema escolhido */ comentario: function(tema){ i3GEO.janela.cria("530px","330px",i3GEO.configura.locaplic+"/ferramentas/comentarios/index.php?tema="+tema+"&g_sid="+i3GEO.configura.sid+"&locaplic="+i3GEO.configura.locaplic,"",""," Comentários de "+tema+"    ","comentario"+Math.random()); }, /* Function: cortina Abre a janela de diálogo da ferramenta cortina Parametros: tema - código do tema escolhido */ cortina: function(tema){ i3GEO.mapa.ativaTema(tema); i3GEO.util.dialogoFerramenta("i3GEO.tema.dialogo.cortina()","cortina","cortina"); }, /* Function: abreKml Abre a janela de diálogo da ferramenta convertekml Parametros: tema - código do tema escolhido tipo - tipo de kml - kml|kmz , o tipo kmz permite acessar os dados via kml (por meio de um WMS) e via kml vetorial. */ abreKml: function(tema,tipo){ if(typeof(console) !== 'undefined'){console.info("i3GEO.tema.dialogo.abreKml()");} if(arguments.lenght === 1) {tipo = "kml";} if(typeof(i3GEOF.converteKml) === 'undefined'){ var js = i3GEO.configura.locaplic+"/ferramentas/convertekml/index.js.php"; i3GEO.util.scriptTag(js,"i3GEOF.converteKml.criaJanelaFlutuante('"+tema+"','"+tipo+"')","i3GEOF.converteKml_script"); } else {i3GEOF.converteKml.criaJanelaFlutuante(tema,tipo);} }, /* Function: salvaMapfile Abre a janela de diálogo da ferramenta salvamapfile Parametros: idtema - código do tema */ salvaMapfile: function(idtema){ i3GEO.mapa.ativaTema(idtema); i3GEO.util.dialogoFerramenta("i3GEO.tema.dialogo.salvamapfile()","salvamapfile","salvamapfile"); }, /* Function: graficotema Abre a janela de diálogo da ferramenta graficotema Parametros: idtema - código do tema */ graficotema: function(idtema){ i3GEO.mapa.ativaTema(idtema); i3GEO.util.dialogoFerramenta("i3GEO.tema.dialogo.graficotema()","graficotema","graficoTema"); }, /* Function: toponimia Abre a janela de diálogo da ferramenta toponimia Parametros: idtema - código do tema */ toponimia: function(idtema){ i3GEO.mapa.ativaTema(idtema); i3GEO.util.dialogoFerramenta("i3GEO.tema.dialogo.toponimia()","toponimia","toponimia"); }, /* Function: filtro Abre a janela de diálogo da ferramenta filtro Parametros: idtema - código do tema */ filtro: function(idtema){ i3GEO.mapa.ativaTema(idtema); i3GEO.util.dialogoFerramenta("i3GEO.tema.dialogo.filtro()","filtro","filtro"); }, /* Function: procuraratrib Abre a janela de diálogo da ferramenta busca Parametros: idtema - id que identifica o tema conforme definido no map file */ procuraratrib: function(idtema){ i3GEO.mapa.ativaTema(idtema); i3GEO.util.dialogoFerramenta("i3GEO.tema.dialogo.procuraratrib()","busca","busca"); }, /* Function: tabela Abre a janela de diálogo da ferramenta tabela Parametros: idtema - id que identifica o tema conforme definido no map file */ tabela: function(idtema){ i3GEO.mapa.ativaTema(idtema); i3GEO.util.dialogoFerramenta("i3GEO.tema.dialogo.tabela()","tabela","tabela"); }, /* Function: etiquetas Abre a janela de diálogo da ferramenta etiqueta Parametros: idtema - id que identifica o tema conforme definido no map file */ etiquetas: function(idtema){ i3GEO.mapa.ativaTema(idtema); i3GEO.util.dialogoFerramenta("i3GEO.tema.dialogo.etiquetas()","etiqueta","etiqueta"); }, /* Function: editaLegenda Abre a janela de diálogo da ferramenta legenda Parametros: idtema - id que identifica o tema conforme definido no map file */ editaLegenda: function(idtema){ i3GEO.mapa.ativaTema(idtema); i3GEO.util.dialogoFerramenta("i3GEO.tema.dialogo.editaLegenda()","legenda","legenda"); }, /* Function: download Abre a janela de diálogo da ferramenta download Parametros: idtema - id que identifica o tema no map file. */ download: function(idtema){ i3GEO.mapa.ativaTema(idtema); i3GEO.util.dialogoFerramenta("i3GEO.tema.dialogo.download()","download","download"); }, /* Function: sld Converte a legenda do tema para o formato SLD (utilizado em requisições de Web Services OGC) O SLD é mostrado em uma janela sobre o mapa Parametros: idtema - id que identifica o tema no map file. */ sld: function(idtema){ i3GEO.mapa.ativaTema(idtema); i3GEO.janela.cria("500px","350px",i3GEO.configura.locaplic+"/classesphp/mapa_controle.php?funcao=tema2sld&tema="+idtema+"&g_sid="+i3GEO.configura.sid,"","","SLD    "); }, /* Function: aplicarsld Fax o upload de um arquivo SLD (xml) e aplica ao tema Parametros: idtema - id que identifica o tema no map file. */ aplicarsld: function(idtema){ i3GEO.mapa.ativaTema(idtema); i3GEO.util.dialogoFerramenta("i3GEO.tema.dialogo.aplicarsld()","aplicarsld","aplicarsld"); }, /* Function: editorsql Abre a janela de diálogo da ferramenta editorsql Parametros: idtema - id que identifica o tema no map file. */ editorsql: function(idtema){ i3GEO.mapa.ativaTema(idtema); i3GEO.util.dialogoFerramenta("i3GEO.tema.dialogo.editorsql()","editorsql","editorsql"); } } }; //YAHOO.log("carregou classe tema", "Classes i3geo");