index.js 6.23 KB
if (typeof (i3GEOF) === 'undefined') {
	var i3GEOF = {};
}
/*
 * Classe: i3GEOF.wkt2layer
 */
i3GEOF.wkt2layer =
{
		position: [150,150],
        /*
	Variavel: aguarde

	Estilo do objeto DOM com a imagem de aguarde existente no cabeçalho da janela.
		 */
		aguarde: "",
		/*
	Variavel: parDefault

	parametros padrão utilizados para formatar 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=12&fonte=arial&fundo=off&sombra=off&outlinecolor=255,255,255&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(wkt,texto) {
			var dicionario = i3GEO.idioma.objetoIdioma(i3GEOF.wkt2layer.dicionario);
			dicionario["locaplic"] = i3GEO.configura.locaplic;
			dicionario["wkt"] = wkt;
			dicionario["valortexto"] = texto;
			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,wkt,texto) {
			if(i3GEOF.wkt2layer.MUSTACHE == ""){
				$.get(i3GEO.configura.locaplic + "/ferramentas/wkt2layer/template_mst.html", function(template) {
					i3GEOF.wkt2layer.MUSTACHE = template;
					i3GEOF.wkt2layer.inicia(iddiv,wkt,texto);
				});
				return;
			}
			if(wkt == undefined){
				wkt = $trad("wkt",i3GEOF.wkt2layer.dicionario);
			}
			$i(iddiv).innerHTML = i3GEOF.wkt2layer.html(wkt,texto);
			$i("i3GEOFwkt2layerWkt").value = wkt;
		},
		feature: function() {
			var wkt = $i("i3GEOFwkt2layerWkt").value;
			wkt = $.trim(wkt.replace(/[\t\n]+/g,' '));
			if(wkt.length < 5){
				i3GEO.janela.tempoMsg($trad("mensagem",i3GEOF.wkt2layer.dicionario));
			}
			else{
				i3GEOF.wkt2layer.insere();
			}
		},
		layer: function() {
			var wkt = $i("i3GEOFwkt2layerWkt").value;
			wkt = $.trim(wkt.replace(/[\t\n]+/g,' '));
			if(wkt.length < 5){
				i3GEO.janela.tempoMsg($trad("mensagem",i3GEOF.wkt2layer.dicionario));
			}
			else{
				i3GEOF.wkt2layer.shapefile();
			}
		},
		/*
		 * Function: html
		 *
		 * Gera o c&oacute;digo html para apresenta&ccedil;&atilde;o das op&ccedil;&otilde;es da ferramenta
		 *
		 * Retorno:
		 *
		 * String com o c&oacute;digo html
		 */
		html : function(wkt,texto) {
			var ins = Mustache.render(i3GEOF.wkt2layer.MUSTACHE, i3GEOF.wkt2layer.mustacheHash(wkt,texto));
			return ins;
		},
		/*
		 * Function: criaJanelaFlutuante
		 *
		 * Cria a janela flutuante para controle da ferramenta.
		 */
		iniciaJanelaFlutuante : function(wkt,texto) {
			var cabecalho, janela, divid, titulo;
			if ($i("i3GEOF.wkt2layer")) {
				return;
			}
			cabecalho = function() {
			};
			// cria a janela flutuante
			titulo = "<span class='i3GeoTituloJanelaBsNolink' >" + $trad("wkt2layer",i3GEOF.wkt2layer.dicionario) + "</span></div>";
			janela =
				i3GEO.janela.cria(
						"280px",
						"210px",
						"",
						"",
						"",
						titulo,
						"i3GEOF.wkt2layer",
						false,
						"hd",
						cabecalho,
						"",
						"",
						true,
						"",
						"",
						"",
						""
				);
			divid = janela[2].id;
			janela[0].moveTo(i3GEOF.wkt2layer.position[0],i3GEOF.wkt2layer.position[1]);
			$i("i3GEOF.wkt2layer_corpo").style.backgroundColor = "white";
			i3GEOF.wkt2layer.aguarde = $i("i3GEOF.wkt2layer_imagemCabecalho").style;
			i3GEOF.wkt2layer.inicia(divid,wkt,texto);
		},
		pegaPar: function(){
			var par,nometema,temp;
			try{
				par = i3GEOF.proplabel.pegaPar();
				i3GEOF.wkt2layer.parDefault = par;
			}
			catch(e){
				par = i3GEOF.wkt2layer.parDefault;
			}
			if($i("i3GEOFwkt2layerTitulo").value !== ""){
				nometema = $i("i3GEOFwkt2layerTitulo").value;
			}
			else{
				temp = Math.random() + "_wkt2raster";
				temp = temp.split(".");
				nometema = temp[1];
			}
			if($i("i3GEOFwkt2layerTexto").value !== ""){
				texto = $i("i3GEOFwkt2layerTexto").value;
			}
			else{
				texto = "";
			}
			par += "&nometema=" + nometema
			+ "&texto=" + texto;
			return par;
		},
		/*
	Function: insere

	Insere no mapa

		 */
		insere: function(){
			if(i3GEOF.wkt2layer.aguarde.visibility === "visible")
			{return;}
			i3GEOF.wkt2layer.aguarde.visibility = "visible";
			var wkt,monta,par,p,cp;
			monta = function(){
				i3GEOF.wkt2layer.aguarde.visibility = "hidden";
				i3GEO.atualiza();
				i3GEO.janela.tempoMsg($trad('fim',i3GEOF.wkt2layer.dicionario));
			};
			par = i3GEOF.wkt2layer.pegaPar();
			wkt = $i("i3GEOFwkt2layerWkt").value;
			wkt = wkt.split("\n").join("|");
			p = i3GEO.configura.locaplic+"/ferramentas/wkt2layer/exec.php?g_sid="+i3GEO.configura.sid+
			"&funcao=feature&"+par;
			cp = new cpaint();
			cp.set_transfer_mode('POST');
			cp.set_response_type("JSON");
			cp.call(p,"foo",monta,"xy="+wkt);
		},
		/*
	Function: shapefile

	Insere no mapa

		 */
		shapefile: function(){
			if(i3GEOF.wkt2layer.aguarde.visibility === "visible")
			{return;}
			i3GEOF.wkt2layer.aguarde.visibility = "visible";
			var wkt,monta,par,p,cp;
			monta = function(){
				i3GEOF.wkt2layer.aguarde.visibility = "hidden";
				i3GEO.atualiza();
				i3GEO.janela.tempoMsg($trad('fim',i3GEOF.wkt2layer.dicionario));
			};
			par = i3GEOF.wkt2layer.pegaPar();
			wkt = $i("i3GEOFwkt2layerWkt").value;
			wkt = $.trim(wkt.replace(/[\t]+/g,' '));
			wkt = wkt.split("\n").join("|");
			p = i3GEO.configura.locaplic+"/ferramentas/wkt2layer/exec.php?g_sid="+i3GEO.configura.sid+
			"&funcao=shapefile&"+par;
			cp = new cpaint();
			cp.set_transfer_mode('POST');
			cp.set_response_type("JSON");
			cp.call(p,"foo",monta,"xy="+wkt);
		}
};
//aplica ao codigo i3GEOF definicoes feitas na interface do mapa
//isso permite a substituicao de funcoes e parametros
if(i3GEO.configura.ferramentas.hasOwnProperty("wkt2layer")){
  jQuery.each( i3GEO.configura.ferramentas.wkt2layer, function(index, value) {
      i3GEOF.wkt2layer[index] = i3GEO.configura.ferramentas.wkt2layer[index];
  });
}