/* Title: Árvore de temas File: i3geo/classesjs/classe_arvodetemas.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; 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(i3GEO) == 'undefined'){ i3GEO = new Array(); } /* Class: i3GEO.arvoreDeTemas Monta a árvore com os temas disponíveis para ser adicionados ao mapa. */ i3GEO.arvoreDeTemas = { /* Property: OPCOESADICIONAIS Objeto com a definição das propriedades que serão utilizadas na inclusão dos ícones adicionais de adição de temas e no item de descrição de cada tema. Example: var obj = { idonde: "", incluiArvore: true, uploaddbf: true, uploadlocal: true, downloadbase: true, conectarwms: true, conectargeorss: true, nuvemTags: true, navegacaoDir: false, incluibusca: true, kml: true, qrcode: true, mini: true, estrelas:true, refresh: true } Type: {Object} */ OPCOESADICIONAIS: { idonde: "", incluiArvore: true, uploaddbf: true, uploadlocal: true, downloadbase: true, conectarwms: true, conectargeorss: true, nuvemTags: true, navegacaoDir: false, incluibusca: true, kml: true, qrcode: true, mini: true, estrelas: true, refresh: true }, /* Property: FATORESTRELA Valor que será utilizado para dividir o valor bruto do número de acessos de cada tema. A divisão é utilizada para definir quantas estrelas serão mostradas na árvore de opções adicionais. Type: {Numeric} */ FATORESTRELA: "1", /* Property: INCLUISISTEMAS Inclui na árvore a lista de sistemas adicionais definidos no i3geo? Type: {Boolean} */ INCLUISISTEMAS: true, /* Property: INCLUIWMS Inclui na árvore a lista de Web Services WMS? Type: {Boolean} */ INCLUIWMS: true, /* Property: FILTRADOWNLOAD Não mostra na árvore os nós que não possuem temas para download Type: {Boolean} */ FILTRADOWNLOAD: false, /* Property: FILTRAOGC Não mostra na árvore os nós que não permitem a geração de WMS Type: {Boolean} */ FILTRAOGC: false, /* Property: ATIVATEMA Nome da função que será incluída no evento onclick do elemento checkbox adicionado no início do nome de um tema. Type: {String} */ ATIVATEMA: "", /* Property: IDSMENUS Array com a lista de ids que serão considerados na montagem da árvore. Por default é vazio, o que significa que todos os menus serão considerados. Type: {Array} */ IDSMENUS: new Array(), /* Variable: IDHTML Armazena o ID do elemento HTML onde a árvore será incluida Type: {String} */ IDHTML: null, /* Variable: LOCAPLIC Endereço da aplicação i3geo. Utilizado para definir o caminho para a chamada em AJAX. Type: {String} */ LOCAPLIC: null, /* Variable: SID Código da seção aberta no servidor pelo i3Geo Type: {String} */ SID: null, /* Variable: ARVORE Objeto com a árvore criada com YAHOO.widget.TreeView Type: {YAHOO.widget.TreeView} */ ARVORE: null, /* Variable: DRIVES Objeto JSON com a lista de drives no servidor que podem ser abertos na opção de navegação pelos diretórios Type: {JSON} */ DRIVES: null, /* Variable: SISTEMAS Objeto JSON com a lista de sistemas existentes Type: {JSON} */ SISTEMAS: null, /* Variable: MENUS Armazena o objeto JSON com a lista de menus resultante da função listaMenus Type: {JSON} */ MENUS: null, /* Variable: GRUPOS Armazena o objeto JSON com a última lista de grupos obtida Type: {JSON} */ GRUPOS: null, /* Variable: SUBGRUPOS Armazena o objeto JSON com a última lista de sub-grupos obtida Type: {JSON} */ SUBGRUPOS: null, /* Variable: TEMAS Armazena o objeto JSON com a última lista de temas obtida Type: {JSON} */ TEMAS: null, /* Function: listaWMS Lista os WMS cadastrados preenchendo o nó OGC-WMS */ listaWMS: function(){ var monta = function(retorno){ var node = i3GEO.arvoreDeTemas.ARVORE.getNodeByProperty("idwms","raiz"); var raiz = retorno.data.canais; var nraiz = raiz.length; var cor = "rgb(51, 102, 102)"; for (i=0;i "+raiz[i].title; if(raiz[i].nacessos > 0){ var quali = (raiz[i].nacessosok * 100) / (raiz[i].nacessos*1); html += " ("+quali+"%)"; } else html += " (% de acessos não definido)"; html += "
"; var d = {html:html,id_ws:raiz[i].id_ws,url:raiz[i].link,nivel:0}; var tempNode = new YAHOO.widget.HTMLNode(d, node, false,true); tempNode.setDynamicLoad(i3GEO.arvoreDeTemas.listaLayersWMS, 1); if(cor == "rgb(51, 102, 102)") {var cor = "rgb(47, 70, 50)";} else{var cor = "rgb(51, 102, 102)";} } node.loadComplete(); }; i3GEO.php.listaRSSwsARRAY(monta,"WMS"); }, listaLayersWMS: function(node){ //node = no; var monta = function(retorno){ try{var n = retorno.data.length;} catch(m){node.loadComplete();return;} var cor = "rgb(51, 102, 102)"; for (i=0;i"+retorno.data[i].nome+" - "+retorno.data[i].titulo; var d = {html:html,url:node.data.url,nivel:(node.data.nivel*1 + 1),id_ws:""}; var tempNode = new YAHOO.widget.HTMLNode(d, node, false,true); if(!retorno.data[i].estilos) tempNode.setDynamicLoad(i3GEO.arvoreDeTemas.listaLayersWMS, 1); if(retorno.data[i].estilos){ var ns = retorno.data[i].estilos.length; for (j=0;j"; html += layer+" - "+titulo; html += ""; return(html); }, /* Function: listaMenus Lista os menus disponíveis. Pesquisa no banco de dados administrativo ou na variável de configuração (veja ms_configura.php) a lista de menus disponíveis. O resultado é incluído em i3GEO.arvoreDeTemas.MENUS. A propriedade i3GEO.arvoreDetemas.IDSMENUS pode ser utilizada para filtrar alista de menus que será utilizada. Parameters: g_sid - {String} Código da seção PHP criada ao abrir o i3Geo g_locaplic - {String} Endereço da aplicação (i3geo) onde fica o diretório classesphp funcao - {String} nome da função que será executada quando a lista for recebida. Se for "", não é chamada. */ listaMenus: function(g_sid,g_locaplic,funcao) { var retorno = function(retorno) { if(i3GEO.arvoreDeTemas.IDSMENUS.length == 0) i3GEO.arvoreDeTemas.MENUS = retorno.data; else{ i3GEO.arvoreDeTemas.MENUS = new Array(); var c = retorno.data.length; var m = i3GEO.arvoreDeTemas.IDSMENUS.length; for (var i=0, j=c; i  

 "; var d = {html:insp}; var tempNode = new YAHOO.widget.HTMLNode(d, root, false,false); } //icones com as outras opções var outrasOpcoes = i3GEO.arvoreDeTemas.outrasOpcoesHTML(); if(i3GEO.arvoreDeTemas.OPCOESADICIONAIS.idonde != "") {document.getElementById(i3GEO.arvoreDeTemas.OPCOESADICIONAIS.idonde).innerHTML = outrasOpcoes;} if(i3GEO.arvoreDeTemas.OPCOESADICIONAIS.incluiArvore == true){ var d = {html:outrasOpcoes+" 
"}; var tempNode = new YAHOO.widget.HTMLNode(d, root, false,true); tempNode.isLeaf = true; if(i3GEO.arvoreDeTemas.OPCOESADICIONAIS.navegacaoDir == true){ var retorno = function(){ var conteudo = " "+$trad("a6")+"  "; var d = {html:conteudo}; var tempNode = new YAHOO.widget.HTMLNode(d,root, false,true); var drives = i3GEO.arvoreDeTemas.DRIVES; var iglt = drives.length; var ig=0; do{ var d = {html:drives[ig].nome,caminho:drives[ig].caminho}; var drive = new YAHOO.widget.HTMLNode(d, tempNode, false,true); drive.setDynamicLoad(i3GEO.arvoreDeTemas.montaDir, 1); ig++; } while(ig  "; var d = {html:conteudo,idwms:"raiz"}; var tempNode = new YAHOO.widget.HTMLNode(d, root, false,true); tempNode.setDynamicLoad(i3GEO.arvoreDeTemas.listaWMS, 1); } // //adiciona na árvore a raiz de cada menu // var dados = i3GEO.arvoreDeTemas.MENUS; var c = dados.length; for (var i=0, j=c; i"+dados[i].nomemenu+""; else var conteudo = " "+dados[i].nomemenu+""; var d = {html:conteudo,idmenu:dados[i].idmenu}; var tempNode = new YAHOO.widget.HTMLNode(d, root, false,true); tempNode.setDynamicLoad(i3GEO.arvoreDeTemas.montaGrupos, currentIconMode); if(dados[i].status == "aberto") {tempNode.expand();} } if(i3GEO.arvoreDeTemas.INCLUISISTEMAS){ var retorno = function(){ var conteudo = "Sistemas"+"  "; var d = {html:conteudo}; var tempNode = new YAHOO.widget.HTMLNode(d,root, false,true); var sis = i3GEO.arvoreDeTemas.SISTEMAS; var iglt = sis.length; var ig=0; do{ var nomeSis = sis[ig].NOME; if(sis[ig].PUBLICADO){ if(sis[ig].PUBLICADO == "NAO" || sis[ig].PUBLICADO == "nao") {var nomeSis = ""+sis[ig].NOME+"";} } var d = {html:nomeSis}; var sisNode = new YAHOO.widget.HTMLNode(d, tempNode, false,true); var funcoes = sis[ig].FUNCOES; var tempf = funcoes.length; for (var ig2=0;ig2"+funcoes[ig2].NOME+""; var d = {html:nomeFunc}; var funcNode = new YAHOO.widget.HTMLNode(d, sisNode, false,true); funcNode.isLeaf = true; } ig++; } while(ig 1 || conteudo.search(".TIF") > 1 || conteudo.search(".shp") > 1 || conteudo.search(".SHP") > 1) { var conteudo = ""+conteudo+""; var d = {html:conteudo,caminho:node.data.caminho+"/"+conteudo}; var nodeSHP = new YAHOO.widget.HTMLNode(d, node, false,true); nodeSHP.isLeaf = true; } } node.loadComplete(); }; i3GEO.php.listaarquivos(montaLista,node.data.caminho); }, /* Function: montaTextoTema Monta o texto com o título do tema. Parameters: cor - {String} - cor que será utilizada no estilo "color" tema - {Object} - objeto JSON com as propriedades do tema Return: {String} - texto formatado */ montaTextoTema: function(cor,tema){ var html = ""; html += tema.nome; html += ""; return(html); }, /* Function: propTemas Monta o nó com informações adicionais sobre o tema. Parameters: node - {Object} - objeto com o nó que foi clicado */ propTemas: function(node){ var g_locaplic = i3GEO.arvoreDeTemas.LOCAPLIC; if(node.data.fonte != "" && node.data.fonte != " "){ var html = "Fonte"; var d = {html:html}; var tempNode = new YAHOO.widget.HTMLNode(d, node, false,true); tempNode.isLeaf = true; } if(i3GEO.arvoreDeTemas.OPCOESADICIONAIS.mini == true){ var lkmini = g_locaplic+"/testamapfile.php?map="+node.data.idtema+".map&tipo=mini"; var lkmini1 = g_locaplic+"/testamapfile.php?map="+node.data.idtema+".map&tipo=grande"; var html = "Miniatura"; var d = {html:html}; var tempNode = new YAHOO.widget.HTMLNode(d, node, false,true); tempNode.isLeaf = true; } if (node.data.ogc != "nao"){ if(i3GEO.arvoreDeTemas.OPCOESADICIONAIS.kml == true){ var html = "Kml"; var d = {html:html}; var tempNode = new YAHOO.widget.HTMLNode(d, node, false,true); tempNode.isLeaf = true; } var ogc = g_locaplic+"/ogc.php?tema="+node.data.idtema+"&service=wms&request=getcapabilities"; var html = "WMS - OGC"; var d = {html:html}; var tempNode = new YAHOO.widget.HTMLNode(d, node, false,true); tempNode.isLeaf = true; } if(i3GEO.arvoreDeTemas.OPCOESADICIONAIS.qrcode == true){ var lkgrcode = g_locaplic+"/pacotes/qrcode/php/qr_html.php?d="+g_locaplic+"/mobile/index.php?temasa="+node.data.idtema; var lkgrcode1 = g_locaplic+"/pacotes/qrcode/php/qr_img.php?d="+g_locaplic+"/mobile/index.php?temasa="+node.data.idtema; var html = "Qrcode"; var d = {html:html}; var tempNode = new YAHOO.widget.HTMLNode(d, node, false,true); tempNode.isLeaf = true; } if(i3GEO.arvoreDeTemas.OPCOESADICIONAIS.estrelas == true){ var n = parseInt(node.data.nacessos / (i3GEO.arvoreDeTemas.FATORESTRELA*1)); if(n >= 5){var n = 5;} if(n > 0) var html = ""; else var html = ""; var d = {html:html}; var tempNode = new YAHOO.widget.HTMLNode(d, node, false,true); tempNode.isLeaf = true; } node.loadComplete(); }, /* Function: outrasOpcoesHTML Constrói o HTML com as opções adicionais de inclusão de temas (upload de shp, etc.). Return: {String} - html gerado */ outrasOpcoesHTML: function(){ var ins = ""; var t = 0; if(i3GEO.arvoreDeTemas.OPCOESADICIONAIS.refresh == true){ ins += ""; t += 20; } if(i3GEO.arvoreDeTemas.OPCOESADICIONAIS.uploaddbf == true){ ins += ""; t += 20; } if(i3GEO.arvoreDeTemas.OPCOESADICIONAIS.uploadlocal == true){ ins += ""; t += 20; } if(i3GEO.arvoreDeTemas.OPCOESADICIONAIS.downloadbase == true){ ins += ""; t += 20; } if(i3GEO.arvoreDeTemas.OPCOESADICIONAIS.conectarwms == true){ ins += ""; t += 20; } if(i3GEO.arvoreDeTemas.OPCOESADICIONAIS.conectargeorss == true){ ins += ""; t += 20; } if(i3GEO.arvoreDeTemas.OPCOESADICIONAIS.nuvemTags == true){ ins += ""; t += 20; } var ins = ""+ins+"
"; return(ins); }, /* Function: desativaCheckbox Desmarca todos os checkbox dos temas marcados na árvore. */ desativaCheckbox: function(){ var o = document.getElementById(i3GEO.arvoreDeTemas.ARVORE.id); var inputs = o.getElementsByTagName("input"); var n = inputs.length; var i=0; do{ inputs[i].checked = false; i++; } while(i= 0){ do{ var ngSgrupo = retorno[ig].subgrupos; var tempn = ngSgrupo.length; for (var sg=0;sg fonte";} d += " ("+nomeSgrupo+") "+lk+""; var tempNode = new YAHOO.widget.HTMLNode(d, nodePalavra, false,true); tempNode.isLeaf = true; } conta++; } } } while(ig--) } else{ var d = "Nada encontrado

"; var tempNode = new YAHOO.widget.HTMLNode(d, nodePalavra, false,true); tempNode.isLeaf = true; } } } nodePalavra.loadComplete(); }; // //funcao que será executada para buscar os temas // var busca = function(){ i3GEO.php.procurartemas(resultadoProcurar,procurar); }; // //recolhe todos os nós e acrescenta um novo // i3GEO.arvoreDeTemas.ARVORE.collapseAll(); var root = i3GEO.arvoreDeTemas.ARVORE.getRoot(); if(!i3GEO.arvoreDeTemas.ARVORE.getNodeByProperty("id","temasEncontrados")){ var d = {html:"Temas encontrados",id:"temasEncontrados"}; var tempNode = new YAHOO.widget.HTMLNode(d, root, false,true); } else {var tempNode = i3GEO.arvoreDeTemas.ARVORE.getNodeByProperty("id","temasEncontrados");} var d = {html:palavra}; nodePalavra = new YAHOO.widget.HTMLNode(d, tempNode, false,true); i3GEO.arvoreDeTemas.ARVORE.draw(); tempNode.expand(); nodePalavra.setDynamicLoad(busca, 1); nodePalavra.expand(); }, /* Function: adicionaTemas Adiciona ao mapa os temas selecionados na árvore */ adicionaTemas: function(){ // //zera o contador de tempo // clearTimeout(tempoBotaoAplicar); tempoBotaoAplicar = ""; i3GEO.temaAtivo = ""; // //pega os temas ativados na árvore de menus // var tsl = i3GEO.arvoreDeTemas.listaTemasAtivos(); i3GEO.arvoreDeTemas.desativaCheckbox(); // //se forem encontrados temas ativos na árvore de menus, o mapa é redesenhado com a adição de novos temas // if(tsl.length > 0){ i3GEO.janela.abreAguarde("i3GEO.atualiza",$trad("o1")); var temp = function(retorno){ i3GEO.janela.fechaAguarde("i3GEO.atualiza"); if(retorno.data.erro){ alert(retorno.data.erro); return; } i3GEO.atualiza(); }; i3GEO.php.adtema(temp,tsl.toString()); } }, /* Function: comboGruposMenu Busca a lista de grupos existentes no menu de temas do i3geo e monta um combo com o resultado. Ao escolher uma opção do combo, a função de retorno receberá como parâmetro o id do grupo. Parameters: locaplic {String} - endereço do i3geo funcaoOnchange {String} - nome da funcao que será executada quando o usuário escolhe um grupo idDestino {String} - id do elemento HTML que receberá o combo idCombo {String} - id do combo que será criado largura {Numeric} - largura em pixels do combo altura {Numeric} - altura do combo em linhas id_menu {Numeric} - id do menu que será utilizado para obter os dados */ comboGruposMenu: function(locaplic,funcaoOnchange,idDestino,idCombo,largura,altura,id_menu){ i3GEO.configura.locaplic = locaplic; var combo = function (retorno){ obGrupos = retorno.data; var ins = ""; }; i3GEO.php.pegalistadegrupos(combo,id_menu,"nao"); }, /* Function: comboSubGruposMenu Monta um combo com a lista de subgrupos de um grupo do menu de temas do i3geo. Ao escolher um subgrupo, a função de retorno receberá o id do grupo e o id do subgrupo. Parameters: locaplic {String} - endereço do i3geo funcaoOnchange {String} - nome da funcao que será executada quando o usuário escolhe um grupo idDestino {String} - id do elemento HTML que receberá o combo idCombo {String} - id do combo que será criado idGrupo {String} - identificador do grupo que será pesquisado largura {Numeric} - largura em pixels do combo altura {Numeric} - altura do combo em linhas */ comboSubGruposMenu: function(locaplic,funcaoOnchange,idDestino,idCombo,idGrupo,largura,altura){ if(idGrupo != ""){ var combo = function(retorno){ var ins = ""; }; i3GEO.php.pegalistadeSubgrupos(combo,"",idGrupo); } }, /* Function: comboTemasMenu Monta um combo com a lista de subgrupos de um grupo do menu de temas do i3geo. Ao escolher um subgrupo, a função de retorno receberá o id do grupo e o id do subgrupo. Parameters: locaplic {String} - endereço do i3geo funcaoOnchange - nome da funcao que será executada quando o usuário escolhe um grupo idDestino - id do elemento HTML que receberá o combo idCombo - id do combo que será criado idGrupo - identificador do grupo que será pesquisado idSubGrupo - id do subgrupo largura - largura em pixels do combo altura - altura do combo em linhas id_menu - id do menu escolhido */ comboTemasMenu: function(locaplic,funcaoOnchange,idDestino,idCombo,idGrupo,idSubGrupo,largura,altura,id_menu){ var combo = function(retorno){ var ins = ""; }; i3GEO.php.pegalistadetemas(combo,id_menu,idGrupo,idSubGrupo); }, /* Class: dialogo Abre as janelas de diálogo com as opções adicionais que permitem acrescentar temas ao mapa Por exemplo, para abrir a janela de upload de arquivos dbf, utilize i3GEO.arvoreDeTemas.dialogo.uploaddbf() */ dialogo:{ /* Function: nuvemTags Mostra a nuvem de tags para escolha de temas baseado nos tags registrados nos menus de temas */ nuvemTags: function() {i3GEO.janela.cria("350px","350px",i3GEO.configura.locaplic+"/ferramentas/nuvemtags/index.htm","","","Nuvem de tags  ");}, /* Function: navegacaoDir Abre a janela para adicionar temas navegando pelos diretórios do servidor */ navegacaoDir: function() {i3GEO.janela.cria("550px","350px",i3GEO.configura.locaplic+"/ferramentas/navegacaodir/index.htm","","","Diretórios");}, /* Function: conectarwms Abre a janela para adicionar temas tendo como fonte um web service do tipo wms */ conectarwms: function() {i3GEO.janela.cria("400px","300px",i3GEO.configura.locaplic+"/ferramentas/conectarwms/index.htm","","","Conexão WMS  ");}, /* Function: conectarwfs Abre a janela para adicionar temas tendo como fonte um web service do tipo wfs */ conectarwfs: function() {i3GEO.janela.cria("400px","300px",i3GEO.configura.locaplic+"/ferramentas/conectarwfs/index.htm","","","WFS");}, /* Function: conectargeorss Abre a janela para adicionar temas tendo como fonte um georss */ conectargeorss: function() {i3GEO.janela.cria("400px","300px",i3GEO.configura.locaplic+"/ferramentas/conectargeorss/index.htm","","","Conexão GeoRSS  ");}, /* Function: upload Abre a janela para o upload de shape file */ upload: function() {i3GEO.janela.cria("300px","230px",i3GEO.configura.locaplic+"/ferramentas/upload/index.htm","","","Upload de shapefile  ");}, /* Function: uploaddbf Abre a janela para o upload de um arquivo dbf */ uploaddbf: function() {i3GEO.janela.cria("300px","280px",i3GEO.configura.locaplic+"/ferramentas/uploaddbf/index.htm","","","Upload DBF  ");}, /* Function: downloadbase Abre o aplicativo datadownload */ downloadbase: function() {window.open(i3GEO.configura.locaplic+"/datadownload.htm");} } }; //YAHOO.log("carregou classe arvoredetemas", "Classes i3geo");