/* Title: Navegador de tabelas do banco de dados postgis Para testar i3GEO.util.navegadorPostgis() 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@gmail.com 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'){ var i3GEOF = {}; } /* Classe: i3GEOF.navegapostgis */ i3GEOF.navegapostgis = { //ao concluir, o nome do arquivo será retornado para esse objeto atribuindo o resultado ao atributo value retornarPara: "", //guarda o tipo de navegador tipo: "sql", /* Variavel: aguarde Estilo do objeto DOM com a imagem de aguarde existente no cabeçalho da janela. */ aguarde: "", conexao: "", esquema: "", tabela: "", ARVORE: "", /* Para efeitos de compatibilidade antes da versão 4.7 que não tinha dicionário */ criaJanelaFlutuante: function(obj,conexao){ i3GEOF.navegapostgis.iniciaDicionario(obj,conexao); }, /* Function: iniciaDicionario Carrega o dicionário e chama a função que inicia a ferramenta O Javascript é carregado com o id i3GEOF.nomedaferramenta.dicionario_script Parametro: obj - objeto input que recebera de volta o valor do arquivo escolhido conexao {numerico} - codigo da conexao com o banco de dados cadastrado no sistema de metadados estatisticos tipo {string} - opcional. Tipo de retorno esquema|tabela|coluna|sql */ iniciaDicionario: function(obj,conexao,tipo){ if(!obj || !conexao){ conexao = ""; } if(!tipo){ tipo = "sql"; } i3GEOF.navegapostgis.conexao = conexao; i3GEOF.navegapostgis.retornarPara = obj; i3GEOF.navegapostgis.tipo = tipo; if(typeof(i3GEOF.navegapostgis.dicionario) === 'undefined'){ i3GEO.util.scriptTag( i3GEO.configura.locaplic+"/ferramentas/navegapostgis/dicionario.js", "i3GEOF.navegapostgis.iniciaJanelaFlutuante()", "i3GEOF.navegapostgis.dicionario_script" ); } else{ i3GEOF.navegapostgis.iniciaJanelaFlutuante(); } }, /* Function: inicia Inicia a ferramenta. É chamado por criaJanelaFlutuante Parametro: iddiv {String} - id do div que receberá o conteudo HTML da ferramenta */ inicia: function(iddiv){ $i(iddiv).innerHTML = i3GEOF.navegapostgis.html(); if($i("i3GEOFnavegapostgisAplicar")){ new YAHOO.widget.Button( "i3GEOFnavegapostgisAplicar", {onclick:{fn: function(){ if($i(i3GEOF.navegapostgis.retornarPara)){ $i(i3GEOF.navegapostgis.retornarPara).value = $i("i3GEOFnavegapostgisSql").value; } i3GEOF.navegapostgis.ARVORE.destroy(); i3GEO.janela.destroi("i3GEOF.navegapostgis"); return null; }}} ); } var conexao = function(retorno){ var ins = ""; $i("i3GEOFnavegapostgisConexao").innerHTML = ins; if(i3GEOF.navegapostgis.conexao != ""){ $i("i3GEOFnavegapostgisConexao").value = i3GEOF.navegapostgis.conexao; i3GEOF.navegapostgis.montaArvore(i3GEOF.navegapostgis.conexao); } }, p = i3GEO.configura.locaplic+"/admin/php/metaestat.php?funcao=listaConexao&formato=json", botao = $i("i3GEOFnavegapostgisAplicar"); if(botao){ botao.style.position = "absolute"; botao.style.top = "230px"; botao.style.left = "70px"; } cpJSON.call(p,"foo",conexao); /* i3GEOF.navegapostgis.ARVORE = new YAHOO.widget.TreeView($i("i3GEOF.navegapostgis_corpo")); var root = i3GEOF.navegapostgis.ARVORE.getRoot(); new YAHOO.widget.HTMLNode( {html:$trad(2,i3GEOF.navegapostgis.dicionario),enableHighlight:false,expanded:false,hasIcon:false}, root ); i3GEOF.navegapostgis.ARVORE.draw(); i3GEOF.navegapostgis.adicionaNoNavegacaoDir(i3GEOF.navegapostgis.listaShp,i3GEOF.navegapostgis.listaImg,i3GEOF.navegapostgis.listaFig); */ }, /* 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 = "" + ""+$trad(2,i3GEOF.navegapostgis.dicionario) + "" + "
" + "
" + ""; return ins; }, /* Function: iniciaJanelaFlutuante Cria a janela flutuante para controle da ferramenta. */ iniciaJanelaFlutuante: function(){ var janela,divid,titulo,cabecalho,minimiza; cabecalho = function(){}; minimiza = function(){ i3GEO.janela.minimiza("i3GEOF.navegapostgis"); }; //cria a janela flutuante titulo = $trad(1,i3GEOF.navegapostgis.dicionario); janela = i3GEO.janela.cria( "470px", "315px", "", "", "", titulo, "i3GEOF.navegapostgis", false, "hd", cabecalho, minimiza ); divid = janela[2].id; $i("i3GEOF.navegapostgis_corpo").style.backgroundColor = "white"; $i("i3GEOF.navegapostgis_corpo").style.textAlign = "left"; i3GEOF.navegapostgis.aguarde = $i("i3GEOF.navegapostgis_imagemCabecalho").style; i3GEOF.navegapostgis.inicia(divid); }, retornaValorClicado: function(obj){ i3GEOF.navegapostgis.retornarPara.value = obj.value; i3GEOF.navegapostgis.ARVORE.destroy(); i3GEO.janela.destroi("i3GEOF.navegapostgis"); return null; }, montaArvore: function(conexao){ if(conexao == ""){ return; } i3GEOF.navegapostgis.aguarde.display = "block"; i3GEOF.navegapostgis.ARVORE = null; i3GEOF.navegapostgis.ARVORE = new YAHOO.widget.TreeView($i("i3GEOFnavegapostgisArvore")); var root = i3GEOF.navegapostgis.ARVORE.getRoot(); new YAHOO.widget.HTMLNode( { html:$trad(3,i3GEOF.navegapostgis.dicionario), enableHighlight:false, expanded:false, hasIcon:false }, root ); i3GEOF.navegapostgis.ARVORE.draw(); i3GEOF.navegapostgis.listaEsquemas(conexao); }, listaEsquemas: function(conexao){ $i("i3GEOFnavegapostgispar").style.display = "block"; i3GEOF.navegapostgis.conexao = conexao; var funcao = function(retorno){ i3GEOF.navegapostgis.aguarde.display = "none"; var n,i,no,tempNode,esquema; n = retorno.length; tempNode = i3GEOF.navegapostgis.ARVORE.getRoot(); //quando o navegador e chamado apenas para escolha do esquema //e mostrado um input radio for(i=0;i"+ ""+esquema+""; } no = new YAHOO.widget.HTMLNode( { html: esquema, enableHighlight:true, expanded:false, esquema: retorno[i].esquema }, tempNode ); if(i3GEOF.navegapostgis.tipo == "sql" || i3GEOF.navegapostgis.tipo == "tabela" || i3GEOF.navegapostgis.tipo == "coluna"){ no.setDynamicLoad(i3GEOF.navegapostgis.listaTabelas, 1); } } i3GEOF.navegapostgis.ARVORE.draw(); }, p = i3GEO.configura.locaplic+"/admin/php/metaestat.php?funcao=esquemasConexao&formato=json&codigo_estat_conexao="+conexao; cpJSON.call(p,"foo",funcao); }, listaTabelas: function(node){ var esquema = node.data.esquema, conexao = i3GEOF.navegapostgis.conexao, funcao = function(retorno){ i3GEOF.navegapostgis.aguarde.display = "none"; var n,i,conteudo; n = retorno.length; for(i=0;i"+retorno[i].tabela+""; if(i3GEOF.navegapostgis.tipo == "tabela"){ conteudo = ""+ ""+retorno[i].tabela+""; } new YAHOO.widget.HTMLNode({ html:conteudo, enableHighlight:false, expanded:false, isLeaf:true }, node ); } node.loadComplete(); }, p = i3GEO.configura.locaplic+"/admin/php/metaestat.php?funcao=tabelasEsquema&formato=json&nome_esquema="+esquema+"&codigo_estat_conexao="+conexao; i3GEOF.navegapostgis.esquema = esquema; cpJSON.call(p,"foo",funcao); }, listaColunas: function(tabela){ i3GEOF.navegapostgis.tabela = tabela; var funcao = function(retorno){ var ins,n,i, gid = "ID", the_geom = "GEOM", nome = $trad(4,i3GEOF.navegapostgis.dicionario), mostra = $trad(6,i3GEOF.navegapostgis.dicionario); n = retorno.length; if(i3GEOF.navegapostgis.tipo == "coluna"){ ins = "

"+$trad(11,i3GEOF.navegapostgis.dicionario)+"

"; for(i=0;i"; ins += ""; } ins += "
"+gid+""+retorno[i].field+"
"; } else{ ins = ""; for(i=0;i"; if(retorno[i].type == "line" || retorno[i].type == "polygon" || retorno[i].type == "point" || retorno[i].type == "geometry"){ the_geom = ""; } else{ the_geom = ""; } mostra = ""; ins += ""; } ins += "
"+gid+""+the_geom+""+mostra+""+nome+"
"+gid+""+the_geom+""+mostra+""+retorno[i].field+"
"; } $i("i3GEOFnavegapostgisColunas").innerHTML = ins; }, p = i3GEO.configura.locaplic+"/admin/php/metaestat.php?funcao=descreveColunasTabela&formato=json&nome_tabela="+tabela+"&nome_esquema="+i3GEOF.navegapostgis.esquema+"&codigo_estat_conexao="+i3GEOF.navegapostgis.conexao; cpJSON.call(p,"foo",funcao); }, geraSql: function(){ //pega a lista de inputs var inputs = $i("i3GEOFnavegapostgisColunas").getElementsByTagName("input"), n = inputs.length, i,sql, the_geom = "", gid = "", colunas = []; for(i=0;i