/* Title: Insere textos Inclui um texto no mapa no ponto clicado pelo usuário Veja: Arquivo: i3geo/ferramentas/inseretxt/index.js.php 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.inseretxt */ i3GEOF.inseretxt = { /* Variavel: aguarde Estilo do objeto DOM com a imagem de aguarde existente no cabeçalho da janela. */ aguarde: "", /* Variavel: contaPontos Conta quantos pontos o usuário clicou na adição de um conector */ contaPontos: 0, /* Variavel: pontoi Primeiro ponto do conector clicado no mapa em DD */ pontoi: "0,0", /* Variavel: parDefault parametros padrão utilizados para formatar o texto */ parDefault: "&position=MS_UR&partials=1&offsetx=0&offsety=0&minfeaturesize=auto&mindistance=auto&force=0&shadowsizex=1&shadowsizey=1&cor=0 0 0&sombray=1&sombrax=1&angulo=0&tamanho=8&fonte=bitmap&fundo=off&sombra=off&outlinecolor=off&shadowcolor=off&wrap=", /** * Template no formato mustache. E preenchido na carga do javascript com o programa dependencias.php */ MUSTACHE : "", /** * Susbtitutos para o template */ mustacheHash : function() { var dicionario = i3GEO.idioma.objetoIdioma(i3GEOF.inseretxt.dicionario); dicionario["locaplic"] = i3GEO.configura.locaplic; 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){ if(i3GEOF.inseretxt.MUSTACHE == ""){ $.get(i3GEO.configura.locaplic + "/ferramentas/inseretxt/template_mst.html", function(template) { i3GEOF.inseretxt.MUSTACHE = template; i3GEOF.inseretxt.inicia(iddiv); }); return; } try{ $i(iddiv).innerHTML = i3GEOF.inseretxt.html(); i3GEO.guias.mostraGuiaFerramenta("i3GEOinseretxtguia1","i3GEOinseretxtguia"); //eventos das guias $i("i3GEOinseretxtguia1").onclick = function(){ i3GEO.guias.mostraGuiaFerramenta("i3GEOinseretxtguia1","i3GEOinseretxtguia"); }; $i("i3GEOinseretxtguia2").onclick = function(){ i3GEO.guias.mostraGuiaFerramenta("i3GEOinseretxtguia2","i3GEOinseretxtguia"); i3GEO.util.comboTemas( "i3GEOinseretxtComboTemas", function(retorno){ $i("i3GEOinseretxtDivComboTemas").innerHTML = retorno.dados; $i("i3GEOinseretxtDivComboTemas").style.display = "block"; if ($i("i3GEOinseretxtComboTemas")){ $i("i3GEOinseretxtComboTemas").onchange = function(){ i3GEO.mapa.ativaTema($i("i3GEOinseretxtComboTemas").value); //combodeitens i3GEO.util.comboItens( "i3GEOinseretxtComboItens", i3GEO.temaAtivo, function(retorno){ $i("i3GEOinseretxtDivComboItens").innerHTML = retorno.dados; }, "i3GEOinseretxtComboItens", "", "", "", "form-control" ); }; } if(i3GEO.temaAtivo !== ""){ $i("i3GEOinseretxtComboTemas").value = i3GEO.temaAtivo; $i("i3GEOinseretxtComboTemas").onchange.call(); } }, "i3GEOinseretxtDivComboTemas", "", false, "ligados", "", false, true, "form-control" ); }; $i("i3GEOinseretxtguia3").onclick = function(){ //i3GEO.guias.mostraGuiaFerramenta("i3GEOinseretxtguia3","i3GEOinseretxtguia"); i3GEO.util.scriptTag( i3GEO.configura.locaplic+"/ferramentas/opcoes_label/dependencias.php", "i3GEOF.proplabel.iniciaJanelaFlutuante(true)", "i3GEOFproplabel", false ); }; i3GEOF.inseretxt.ativaFoco(); } 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() { var ins = Mustache.render(i3GEOF.inseretxt.MUSTACHE, i3GEOF.inseretxt.mustacheHash()); return ins; }, /* Function: iniciaJanelaFlutuante Cria a janela flutuante para controle da ferramenta. */ iniciaJanelaFlutuante: function(){ var minimiza,cabecalho,janela,divid,temp,titulo; if ($i("i3GEOF.inseretxt")) { return; } //cria a janela flutuante cabecalho = function(){ i3GEOF.inseretxt.ativaFoco(); }; minimiza = function(){ i3GEO.janela.minimiza("i3GEOF.inseretxt",200); }; titulo = "" + $trad("d25t") + ""; janela = i3GEO.janela.cria( "360px", "250px", "", "", "", titulo, "i3GEOF.inseretxt", false, "hd", cabecalho, minimiza, "", true, "", "", "", "", "83" ); divid = janela[2].id; i3GEOF.inseretxt.aguarde = $i("i3GEOF.inseretxt_imagemCabecalho").style; $i("i3GEOF.inseretxt_corpo").style.backgroundColor = "white"; i3GEOF.inseretxt.inicia(divid); i3GEO.eventos.adicionaEventos("MOUSECLIQUE",["i3GEOF.inseretxt.cria()"]); i3GEO.eventos.cliquePerm.desativa(); temp = function(){ i3GEO.eventos.cliquePerm.ativa(); i3GEO.eventos.removeEventos("MOUSECLIQUE",["i3GEOF.inseretxt.cria()"]); }; YAHOO.util.Event.addListener(janela[0].close, "click", temp); }, /* Function: ativaFoco Refaz a interface da ferramenta quando a janela flutuante tem seu foco ativado */ ativaFoco: function(){ i3GEO.eventos.cliquePerm.desativa(); }, /* Function: corj Abre a janela para o usuário selecionar uma cor interativamente */ corj: function(obj) {i3GEO.util.abreCor("",obj);}, /* Function: pegaPar Pega os parametros para montar a chamada ajax que cria ou testa a toponímia */ pegaPar: function(){ try{ var par = i3GEOF.proplabel.pegaPar(); i3GEOF.inseretxt.parDefault = par; } catch(e){ par = i3GEOF.inseretxt.parDefault; } return par; }, /* Function: cria Cria um tema e insere o texto Veja: */ cria: function(){ try{ if(i3GEOF.inseretxt.aguarde.visibility === "visible") {return;} if($i("i3GEOinseretxtguia3obj").style.display === "block"){ i3GEO.janela.tempoMsg($trad('ativaGuia',i3GEOF.inseretxt.dicionario)); return; } i3GEOF.inseretxt.aguarde.visibility = "visible"; var temp,tema,item; // //de onde vem o texto // if($i("i3GEOinseretxtguia1obj").style.display === "block"){ i3GEOF.inseretxt.iniciaInsere(); } else{ temp = function(retorno){ if(retorno.data[0] == " "){ i3GEO.janela.tempoMsg($trad('msgNadaEncontrado',i3GEOF.inseretxt.dicionario)); i3GEOF.inseretxt.aguarde.visibility = "hidden"; return; } $i("i3GEOinseretxttexto").value = retorno.data; i3GEOF.inseretxt.iniciaInsere(); }; tema = $i("i3GEOinseretxtComboTemas").value; item = $i("i3GEOinseretxtComboItens").value; if(item == ""){ i3GEOF.inseretxt.contaPontos = 0; return; } if(i3GEOF.inseretxt.contaPontos == 0){ i3GEO.php.identificaunico(temp,objposicaocursor.ddx+","+objposicaocursor.ddy,tema,item); } else{ i3GEOF.inseretxt.iniciaInsere(); } } }catch(e){i3GEO.janela.tempoMsg("Erro: ");i3GEOF.inseretxt.aguarde.visibility = "hidden";} }, iniciaInsere: function(){ var texto = $i("i3GEOinseretxttexto").value; if(texto === ""){ i3GEOF.inseretxt.aguarde.visibility = "hidden"; return; } else{ if($i("i3GEOinseretxttextoconector").checked){ if(i3GEOF.inseretxt.contaPontos == 0){ i3GEOF.inseretxt.contaPontos = 1; i3GEOF.inseretxt.pontoi = objposicaocursor.ddx+" "+objposicaocursor.ddy; i3GEOF.inseretxt.aguarde.visibility = "hidden"; i3GEO.janela.tempoMsg($trad('clicaFimConcetor',i3GEOF.inseretxt.dicionario),1000); return; } if(i3GEOF.inseretxt.contaPontos == 1){ i3GEOF.inseretxt.insere(texto); i3GEOF.inseretxt.insereConector(i3GEOF.inseretxt.pontoi+" "+objposicaocursor.ddx+" "+objposicaocursor.ddy,texto); i3GEOF.inseretxt.contaPontos = 0; return; } } else {i3GEOF.inseretxt.insere(texto);} } }, /* Function: insere Insere um texto no mapa Veja: Parametro: texto {String} */ insere: function(texto){ var monta,par,p,nometema,temp,cp; monta = function(){ i3GEOF.inseretxt.aguarde.visibility = "hidden"; i3GEO.atualiza(); }; temp = Math.random() + "b"; temp = temp.split("."); nometema = "pin"+temp[1]; par = i3GEOF.inseretxt.pegaPar(); p = i3GEO.configura.locaplic+"/classesphp/mapa_controle.php?g_sid="+i3GEO.configura.sid+ "&funcao=inserefeature&"+par+"&pin="+nometema+"&tipo=ANNOTATION&texto="+texto+"&xy="+objposicaocursor.ddx+" "+objposicaocursor.ddy; if(par === false){ i3GEOF.inseretxt.aguarde.visibility = "hidden"; return; } cp = new cpaint(); cp.set_response_type("JSON"); cp.call(p,"inserefeature",monta); }, /* Function: insereConector Insere um conector de textos Veja: Parametro: xy {string} - lista de pontos */ insereConector: function(xy,texto){ var monta,par,p,nometema,temp; monta = function(){ i3GEOF.inseretxt.aguarde.visibility = "hidden"; i3GEO.atualiza(); }; temp = Math.random() + "b"; temp = temp.split("."); nometema = "pin"+temp[1]; par = i3GEOF.inseretxt.pegaPar(); if($i("i3GEOproplabeltamanho_c")){ par += "&tamanho="+$i("i3GEOproplabeltamanho_c").value; par += "&cor="+$i("i3GEOproplabelfrente_c").value; } else{ par += "&tamanho=1"; par += "&cor=0 0 0"; } p = i3GEO.configura.locaplic+"/classesphp/mapa_controle.php?g_sid="+i3GEO.configura.sid+ "&funcao=inserefeature&"+par+"&pin="+nometema+"&tipo=LINE&nomeTema="+texto+" (conector)&xy="+xy; if(par === false){ i3GEOF.inseretxt.aguarde.visibility = "hidden"; return; } cp = new cpaint(); cp.set_response_type("JSON"); cp.call(p,"inserefeature",monta); } };