/* Title: DataDownLoad Sistema de download de dados geográficos. A lista de dados pode vir do arquivo menutemas.xml ou de um diretório no servidor. File: i3geo/classesjs/datadownload.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. Veja: */ var loc = window.location.href; /* Variable: g_locaplic Indica a localização do i3geo. Por default, procura no diretório onde foi executada a plicação datadownload. No caso do datadownload.htm ser disparado de outro local, é necessário definir essa variável antes de chamar a função DDinicia */ g_locaplic = loc.split("/datadownload.htm"); g_locaplic = g_locaplic[0] // //diretorio onde esta o i3geo // g_i3geo = "" // //função que será utilizada quando o usuário clicar na árvore // g_arvoreClicks = "" /* Variable: g_tipo Tipo de acesso aos dados. Values: dir - indica que os dados serão buscados em diretórios no servidor. menutemas - indica que os dados serão buscados no arquivo menutemas/menutemas.xml */ g_tipo = "menutemas" /* Variable: g_dirbaseDown Url para o endereço definido em g_dirbase. É utilizada para montar o link de acesso aos arquivos quando g_tipo = 'dir' */ g_dirbaseDown = "" /* g_tipo é uma variável que pode ser definida antes de iniciar a funcao DDinicia g_tipo = "menutemas", indica que a lista de temas para download será buscada no xml com a lista de temas do I3Geo se g_tipo for "dir", a aplicação entenderá que se trata de uma busca em diretórios nesse caso, g_dirbase deve conter a raiz da busca no servidor, por exemplo: g_dirbase = "/opt/www/html/geodados" g_dirarquivos indica o diretório inicial para listagem dos arquivos por default, g_tipo = "menutemas" exemplo: g_tipo = "dir" g_dirbase = "/opt/www/html/geodados/brasil/vegetacao/vegetacao2002" g_dirbaseDown = "http://"+window.location.host+"/geodados/brasil/vegetacao/vegetacao2002" g_dirarquivos = "/opt/www/html/geodados/brasil/vegetacao/vegetacao2002" g_i3geo = "/i3geo" g_locaplic = "http://"+window.location.host+g_i3geo */ g_dirbase = "" g_dirarquivos = "" /* Function: DDinicia Inicia o aplicativo montando a árvore de opções e preenchendo a DIV arvore. Deve existir no HTML um DIV com id='arvore'. */ function DDinicia() { if (g_tipo == "menutemas") { var p = g_locaplic+"/classesphp/mapa_controle.php?funcao=pegalistadegrupos&map_file=''"; var cp = new cpaint(); //cp.set_debug(2) cp.set_response_type("JSON"); cp.call(p,"pegaListaDeGrupos",processaGrupos); } if (g_tipo == "dir") { var p = g_locaplic+"/classesphp/mapa_controle.php?funcao=listaDiretorios&map_file=&diretorio="+g_dirbase; var cp = new cpaint(); //cp.set_debug(2) cp.set_response_type("JSON"); cp.call(p,"listaDiretorios",processaDiretorios); } dataDownloadLinks(g_RSSl) } /* Function: processaDiretorios Cahamado pela função DDinicia. Recebe os dados da função Ajax com a lista de diretorios. Monta a árvore para navegação pelos diretórios. Parameters: retorno - string formatada com os dados para montagem da árvore. */ function processaDiretorios(retorno) { if(!document.getElementById("arvoreTemas")) { alert("Nao foi encontrado o DIV arvoreTemas"); return; } if ((retorno.data != "erro") && (retorno.data != undefined)) { treeDir = new Object(); treeDir = treeviewNew("treeDir", "default", "arvoreTemas", null); treeDir.createItem("raiz", "Diretórios", g_locaplic+"/imagens/temas.png", true, true, true, null); treeDir.itemExpand = expandeDiretorio; for (var ig=0;ig
" var volta = function (retorno) { if ((retorno.data != "erro") && (retorno.data != undefined)) { ins += "Diretórios:

" for (var ig=0;ig"+retorno.data.diretorios[ig]+"

" } ins += "Arquivos:

" for (var ig=0;ig"+retorno.data.arquivos[ig]+"

" } document.getElementById("corpo").innerHTML = ins } } var p = g_locaplic+"/classesphp/mapa_controle.php?funcao=listaArquivos&map_file=&diretorio="+dir; var cp = new cpaint(); //cp.set_debug(2) cp.set_response_type("JSON"); cp.call(p,"listaDiretorios",volta); } /* Function: processaGrupos Recebe os dados da função Ajax com a lista de grupos e subgrupos. Monta a árvore de navegação baseada no menutemas.xml. No HTML da interface deve existir um DIV com id='arvoreTemas'. Esse div receberá a árvore de navegação. Parameters: retorno - string formatada com os dados para montagem da árvore. */ function processaGrupos(retorno) { if(!document.getElementById("arvoreTemas")) { alert("Nao foi encontrado o DIV arvoreTemas"); return; } if ((retorno.data != "erro") && (retorno.data != undefined)) { mytreeview2 = new Object(); mytreeview2 = treeviewNew("mytreeview2", "default", "arvoreTemas", null); mytreeview2.createItem("item1", "Temas", g_locaplic+"/imagens/temas.png", true, true, true, null); mytreeview2.itemExpand = expandeGrupo; for (var ig=0;ig"+ngSgrupo[sg].nome+""; mytreeview2.createItem("sgrupo_"+ig+"_"+sg, nomeSgrupo, g_locaplic+"/imagens/branco0.gif", true, true, false, "grupo"+ig); if (cor == "rgb(230,230,230)"){var cor = "rgb(255,255,255)";} else {var cor = "rgb(230,230,230)";} } } } } } } /* Function: expandeGrupo Chama a função ajax que pega a lista de temas de um subgrupo no menu de temas. Essa função é definida na função processaGrupos. Parameters: itemID - string Id do nó que foi expandido na árvore de grupos e subgrupos. */ function expandeGrupo(itemID) { g_arvoreClick = itemID; if ((itemID.search("sgrupo") > -1) && (g_arvoreClicks.search(itemID) == -1 )) { var codigos = itemID.split("_"); var p = g_locaplic+"/classesphp/mapa_controle.php?map_file=''&funcao=pegalistadetemas&grupo="+codigos[1]+"&subgrupo="+codigos[2]; var cp = new cpaint(); //cp.set_debug(2); cp.set_response_type("json"); cp.call(p,"pegaListaDeTemas",processaTemas); } } /* Function: processaTemas Recebe os dados da função Ajax com a lista de temas de um sub-grupo. Monta a árvore para adição de um novo tema no mapa. Parameters: retorno - string formatada com os dados para montagem da árvore. */ function processaTemas(retorno) { if ((retorno.data != "erro") && (retorno.data != undefined)) { var cor = "rgb(251,246,184)"; for (var st=0;st fonte";} if (retorno.data.temas[st].down=="sim") { var inp = ""; nomeTema = ""+inp+nome+lk+""; mytreeview2.createItem("tema"+g_arvoreClick+""+sg+""+st, nomeTema, g_locaplic+"/imagens/branco0.gif", false, true, true, g_arvoreClick); if (cor == "rgb(251,246,184)"){var cor = "rgb(255,255,255)";} else {var cor = "rgb(251,246,184)";} } } //inclui um item em branco mytreeview2.createItem("vazio", "", g_locaplic+"/imagens/branco0.gif", false, true, true, g_arvoreClick); g_arvoreClicks += ","+g_arvoreClick; } } /* Function: download Gera os arquivos para download do shape file de um tema. Parameters: tema - código do tema para download */ function download(tema) { document.getElementById("corpo").innerHTML = "Aguarde. Gerando arquivos..." var p = g_locaplic+"/classesphp/mapa_controle.php?map_file=''&funcao=download&tema="+tema; var cp = new cpaint(); //cp.set_debug(2) cp.set_response_type("JSON"); cp.call(p,"downloadTema",mostraDownload); } /* Function: mostraDownload Mostra na tela os arquivos convertidos para shape file com link para download. */ function mostraDownload(retorno) { if (retorno.data != undefined) { var retorno = retorno.data var arqs = retorno.split(",") var ins = "Clique nos links para pegar os arquivos:

" for (var arq=0;arq"+arqs[arq]+".shp
" ins += ""+arqs[arq]+".dbf
" ins += "
"+arqs[arq]+".shx

" } document.getElementById("corpo").innerHTML = ins } else { document.getElementById("corpo").innerHTML = "

Ocorreu um erro
" } } /* Function: dataDownloadLinks Mostra uma lista de links baseado em um arquivo rss. Utilizado para acrescentar outros links no sistema de download Por default, o rss é menutemas/linksdownload.xml Parameters: rss - endereço do arquivo rss. */ function dataDownloadLinks(rss) { var monta = function(retorno) { var reg = /Erro/gi; if (retorno.data.search(reg) != -1) { alert("OOps! Ocorreu um erro\n"+retorno.data); return; } var linhas = retorno.data.split("|") var ins = "" for (var i=0;i 0) { ins += "
"+caso[0]+" ("+caso[3]+")" ins += "
" } else {ins += "

"+caso[0]+" "+caso[1]+" 

"} } document.getElementById("RSSl").innerHTML = ins+"

" } if (document.getElementById("RSSl")) { if (rss.length > 0) { var p = g_locaplic+"/classesphp/wscliente.php?funcao=listaRSSws&rss="+rss.join("|"); var cp = new cpaint(); //cp.set_debug(2) cp.set_response_type("JSON"); cp.call(p,"listaRSSws",monta); } } }