From 166a17b16c2b50d05d27c487171c3f4f6b5ef49f Mon Sep 17 00:00:00 2001 From: Edmar Moretti Date: Tue, 18 Jun 2013 22:32:43 +0000 Subject: [PATCH] Documentacao do codigo --- ferramentas/metaestat/editorlimites.js | 495 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 1 file changed, 288 insertions(+), 207 deletions(-) diff --git a/ferramentas/metaestat/editorlimites.js b/ferramentas/metaestat/editorlimites.js index 23aee15..971fed1 100644 --- a/ferramentas/metaestat/editorlimites.js +++ b/ferramentas/metaestat/editorlimites.js @@ -1,6 +1,10 @@ /* Title: Editor vetorial de limites de regiões do sistema METAESTAT +Utilizado em i3geo/metaestat/editorlimites.php + +Utiliza a API do Google Maps e pacotes/wicket/wicket.js (que cria o objeto Wkt com funcoes para processamento de Wkt) + Arquivo: i3geo/ferramentas/metaestat/editorlimites.js @@ -41,24 +45,44 @@ Funções de edição vetorial utilizadas pelo editor de */ i3GEOF.editorlimites = { /** - * Estilo do objeto DOM com a imagem de aguarde existente no cabecalho da janela + * Objeto DOM com a imagem de aguarde existente no cabecalho da janela * */ aguarde: "", + /** + * Guarda o Id do DIV que recebera o conteudo HTML do editor + */ iddiv: "", + /** + * Objeto criado com new google.maps.drawing.DrawingManager + */ drawingManager: "", selectedShape: null, + /** + * Array que guarda todos os objetos que estao atualmente no mapa + * E atualizado toda vez que uma figura e acrescentada ou removida + */ shapes: [], - regioestemas:{},//guarda o mapeamento entre o codigo da regiao e o codigo do layer adicionado ao mapa - temasregioes:{},//guarda o mapeamento entre o codigo da regiao e o codigo do layer adicionado ao mapa - descregioes:[],//guarda os dados descritivos sobre cada regiao obtidos na formacao no combo de escolha de regioes + /** + * guarda o mapeamento entre o codigo da regiao e o codigo do layer adicionado ao mapa + */ + regioestemas:{}, + /** + * Guarda o mapeamento entre o codigo da regiao e o codigo do layer adicionado ao mapa + */ + temasregioes:{}, + /** + * Guarda os dados descritivos sobre cada regiao obtidos na formacao no combo de escolha de regioes + */ + descregioes:[], /** * Inicia o editor * - * O objeto googlemap e i3GeoMap + * Cria o objeto da API do Google Maps com new google.maps.drawing.DrawingManager + * A janela flutuante que recebera os componentes do editor ja deve estar aberta (veja editorlimites.php) + * Executa i3GEOF.editorlimites.html * - * @param {String} Id do DIV que recebera o conteudo HTML do editor. Ja deve estar criado no HTML - * @return + * @param Id do DIV que recebera o conteudo HTML do editor */ inicia: function(iddiv){ var i,n,ics; @@ -125,19 +149,21 @@ i3GEOF.editorlimites = { i3GEOF.editorlimites.shapes.push(newShape); } }); - google.maps.event.addListener( - i3GEOF.editorlimites.drawingManager, - 'drawingmode_changed', - i3GEOF.editorlimites.clearSelection - ); - google.maps.event.addListener( - i3GeoMap, - 'click', - i3GEOF.editorlimites.clearSelection - ); + google.maps.event.addListener( + i3GEOF.editorlimites.drawingManager, + 'drawingmode_changed', + i3GEOF.editorlimites.clearSelection + ); + google.maps.event.addListener( + i3GeoMap, + 'click', + i3GEOF.editorlimites.clearSelection + ); }, /** * Atualiza as camadas do mapa que sao oriundas do sistema METAESTAT + * Busca a lista de camadas com ferramentas/metaestat/analise.php?funcao=LISTACAMADASMETAESTAT + * Faz um loop para atualizar cada camada */ atualizaCamadasMetaestat: function(){ var p = i3GEO.configura.locaplic+"/ferramentas/metaestat/analise.php?funcao=LISTACAMADASMETAESTAT&g_sid="+i3GEO.configura.sid, @@ -149,15 +175,11 @@ i3GEOF.editorlimites = { }; cpJSON.call(p,"foo",temp); }, - /* - Function: html - - Gera o código html para apresentação das opções da ferramenta - - Retorno: - - String com o código html - */ + /** + * Monta o codigo HTML com o conteudo da ferramenta + * Define os botoes e demais elementos que serao preenchidos via codigo + * @return html + */ html:function(){ var ins = '
' + ' ' + @@ -170,22 +192,26 @@ i3GEOF.editorlimites = { '
'; //combo para escolher a regiao return ins; }, - /* - Function: ativaFoco - - Refaz a interface da ferramenta quando a janela flutuante tem seu foco ativado - */ + /** + * Atualiza a ferramenta quando a janela flutuante tem seu foco ativado + */ ativaFoco: function(){ i3GEO.util.mudaCursor(i3GEO.configura.cursores,"crosshair",i3GEO.Interface.IDMAPA,i3GEO.configura.locaplic); i3GEO.barraDeBotoes.ativaIcone("pan"); i3GEOF.editorlimites.mudaicone(); i3GEO.Interface.googlemaps.recalcPar(); }, + /** + * Marca uma figura como selecionada + * @param objeto shape que sera marcado + */ setSelection: function(shape){ - //i3GEOF.editorlimites.clearSelection(); - //i3GEOF.editorlimites.selectedShape = shape; shape.setEditable(!shape.editable); }, + /** + * Marca todas as figuras como nao selecionadas + * As figuras existentes no mapa sao mantidas na variavel i3GEOF.editorlimites.shapes + */ clearSelection: function(){ var i, n = i3GEOF.editorlimites.shapes.length; @@ -195,6 +221,10 @@ i3GEOF.editorlimites = { } } }, + /** + * Remove do mapa as figuras que estiverem selecionadas + * @param boolean indica se deve ser feita uma confirmacao ou nao antes de apagar + */ deleteSelectedShape: function(naoconfirma) { if(!naoconfirma){ naoconfirma = false; @@ -221,6 +251,10 @@ i3GEOF.editorlimites = { i3GEO.janela.tempoMsg("Selecione pelo menos uma figura"); } }, + /** + * Lista as figuras que estao marcadas como selecionadas + * @return array de shapes + */ selectedShapes: function() { var i,s = [], n = i3GEOF.editorlimites.shapes.length; @@ -231,6 +265,10 @@ i3GEOF.editorlimites = { } return s; }, + /** + * Lista as coordenadas de todas as figuras existentes + * @return objeto contendo a indicacao do tipo de figura e o array com a lista de coordenadas + */ getCoordenadas: function(){ var coordenadas = [], lista = [], @@ -256,41 +294,24 @@ i3GEOF.editorlimites = { p = {"tipo":tipo,"coordenadas":lista}; return p; }, + /** + * Converte um objeto shape em uma string WKT + * @param shape + */ toWKT: function(obj){ var wkt = new Wkt.Wkt(); wkt.fromObject(obj); return wkt.write(); - /* - var wkt = "", - coordenadas = obj.coordenadas, - n = coordenadas.length, - lista = [], - i,c; - if(obj.tipo == "polygon" || obj.tipo == "" || obj.tipo == undefined ){ - if(n == 1 && coordenadas[0] != ""){ - coordenadas.push(coordenadas[0][0]); - wkt = "POLYGON(("+coordenadas.toString()+"))"; - } - else{ - for(i=0;i 0) - {wkt = "MULTIPOLYGON("+lista.toString()+")";} - } - } - if(obj.tipo == "point"){ - - } - if(obj.tipo == "polyline"){ - - } - return wkt; - */ }, + /** + * Funcoes que controlam o processo de obtencao das coordenadas de um componente de uma camada existente no mapa + */ capturaPoligonoTema:{ + /** + * Ativa a operaco de captura definindo o evento que sera executado no onclick do mouse sobre o mapa + * O evento executa i3GEOF.editorlimites.capturaPoligonoTema.captura + * @param botao da interface que foi pressionado + */ ativa: function(botao){ i3GEOF.editorlimites.mudaicone(botao); i3GEO.util.mudaCursor(i3GEO.configura.cursores,"pointer",i3GEO.Interface.IDMAPA,i3GEO.configura.locaplic); @@ -299,6 +320,11 @@ i3GEOF.editorlimites = { }, desativa: function(){ }, + /** + * Realiza a captura de um componente do mapa quando o usuario faz o clique + * A captura e feita com classesphp/mapa_controle.php&funcao=identifica3 + * O resultado e adicionado ao mapa como um novo objeto shape + */ captura: function(){ var temp,tema="",regiao="",p,par, aguarde = $i("janelaEditorLimites_imagemCabecalho"); @@ -366,40 +392,12 @@ i3GEOF.editorlimites = { } } }, - /* - Function: mudaicone - - Altera as bordas dos ícones e desativa eventos anteriores - */ - mudaicone: function(botao){ - var c = $i(i3GEOF.editorlimites.iddiv), - ci = c.getElementsByTagName("img"), - n = ci.length, - i; - for(i=0;iSe o valor do código for vazio, será criado um novo elemento. Caso contrário, os valores atualmente registrados serão atualizados.

' + @@ -606,6 +630,10 @@ i3GEOF.editorlimites = { '

'; return ins; }, + /** + * Cria a janela flutuante para receber os componentes da ferramenta + * @param html com o conteudo da ferramenta + */ criaJanelaFlutuante: function(html){ var titulo,cabecalho,minimiza,janela; cabecalho = function(){}; @@ -630,6 +658,11 @@ i3GEOF.editorlimites = { $i("salvaLimite_corpo").innerHTML = html; YAHOO.util.Event.addListener(janela[0].close, "click", i3GEOF.editorlimites.mudaicone); }, + /** + * Aplica a operacao de salvar os dados no banco para o shape selecionado + * Executa admin/php/metaestat.php?funcao=mantemDadosRegiao + * @param boolean indica se as coordenadas serao salvas tambem + */ gravaDados: function(comwkt){ if(i3GEO.login.verificaCookieLogin() === false){ i3GEO.janela.tempoMsg("Você precisa fazer login para usar essa opção"); @@ -663,6 +696,10 @@ i3GEOF.editorlimites = { p = i3GEO.configura.locaplic+"/admin/php/metaestat.php?funcao=mantemDadosRegiao&tipo="; cpJSON.call(p,"foo",temp,"&codigo_tipo_regiao="+codigo_tipo_regiao+"&identificadornovo="+identificadornovo+"&identificador="+identificador+"&nome="+nome+"&wkt="+wkt); }, + /** + * Exclui um registro do banco de dados + * Executa admin/php/metaestat.php?funcao=mantemDadosRegiao&tipo=excluir + */ excluiPoligono: function(){ if(i3GEO.login.verificaCookieLogin() === false){ i3GEO.janela.tempoMsg("Você precisa fazer login para usar essa opção"); @@ -685,10 +722,20 @@ i3GEOF.editorlimites = { cpJSON.call(p,"foo",temp,"&codigo_tipo_regiao="+codigo_tipo_regiao+"&identificador="+identificador); } }, + /** + *Funcoes que controlam o processo de edicao de atributos de um shape + */ editarAtributos: { aliascolunas: "", //guarda os nomes das colunas e seus aliases para permitir a criacao de novos registros x: "", y: "", + /** + * Ativa a ferramenta + * Define os eventos de onclick para abrir formulario quando o usuario clica no mapa + * Para cada regiao sao obtidas todas as variaveis cadastradas + * Executa i3GEOF.editorlimites.editarAtributos.criaJanelaFlutuante + * Executa i3GEOF.editorlimites.editarAtributos.comboVariaveis(); + */ ativa: function(botao){ if($i("i3geoCartoRegioesEditaveis").value == ""){ i3GEO.janela.tempoMsg("Escolha uma regiao"); @@ -706,12 +753,96 @@ i3GEOF.editorlimites = { i3GEOF.editorlimites.editarAtributos.comboVariaveis(); } }, + /** + * Fecha a janela de edicao + */ desativa: function(){ var janela = YAHOO.i3GEO.janela.manager.find("editaAtributos"); if(janela){ janela.destroy(); } }, + criaJanelaFlutuante: function(html){ + var janela,titulo,cabecalho,minimiza; + cabecalho = function(){}; + minimiza = function(){ + i3GEO.janela.minimiza("editaAtributos"); + }; + titulo = "Atributos   "; + janela = i3GEO.janela.cria( + "250px", + "265px", + "", + "", + "", + titulo, + "editaAtributos", + false, + "hd", + cabecalho, + minimiza + ); + $i("editaAtributos_corpo").style.backgroundColor = "white"; + $i("editaAtributos_corpo").innerHTML = html; + i3GEO.janela.tempoMsg("Após escolher a medida da variável, clique no mapa para escolher o limite geográfico."); + YAHOO.util.Event.addListener(janela[0].close, "click", i3GEOF.editorlimites.mudaicone); + }, + /** + * Fornece o HTML com os objetos que receberao os componentes da ferramenta + * @return html + */ + html: function(){ + var ins = '' + + '

' + + '

' + + '

' + + '

' + + ''; + return ins; + }, + /** + * Monta um combo para escolha de uma variavel que sera editada + * Executa i3GEO.php.listaVariavel + */ + comboVariaveis: function(){ + var temp = function(dados){ + var i,n = dados.length, ins = ''; + ins += '

Escolha uma variável para editar

'; + ins += ""; + $i("editarAtributosVariaveis").innerHTML = ins; + }; + i3GEO.php.listaVariavel(temp,"i3geo_metaestat"); + }, + /** + * Monta um combo com as medidas de uma variavel + * Executa i3GEO.php.listaMedidaVariavel + * @param objeto DOM do tipo select que contem a lista de variaveis + */ + comboMedidasVariavel: function(comboMedidas){ + var temp = function(dados){ + var i,n = dados.length, ins = ''; + ins += '

Escolha uma medida da variável para editar

'; + ins += ""; + $i("editarAtributosMedidasVariavel").innerHTML = ins; + }; + if(comboMedidas.value !== ""){ + i3GEO.php.listaMedidaVariavel(comboMedidas.value,temp); + } + }, + /** + * Captura os atributos de um elemento do mapa + * Executa i3GEOF.editorlimites.editarAtributos.pegaDados(); + */ captura: function(){ if(!YAHOO.i3GEO.janela.manager.find("editaAtributos")){ i3GEOF.editorlimites.mudaicone(botao); @@ -721,6 +852,11 @@ i3GEOF.editorlimites = { i3GEOF.editorlimites.editarAtributos.y = objposicaocursor.ddy; i3GEOF.editorlimites.editarAtributos.pegaDados(); }, + /** + * Obtem os dados de um elemento de uma regiao + * Monta o formulario para edicao + * Executa admin/php/metaestat.php?funcao=listaAtributosMedidaVariavelXY + */ pegaDados: function(){ var p = i3GEO.configura.locaplic+"/admin/php/metaestat.php?funcao=listaAtributosMedidaVariavelXY", codigo_tipo_regiao = $i("i3geoCartoRegioesEditaveis").value, @@ -786,6 +922,9 @@ i3GEOF.editorlimites = { cpJSON.call(p,"foo",temp,"&codigo_tipo_regiao="+codigo_tipo_regiao+"&id_medida_variavel="+id_medida_variavel+"&x="+i3GEOF.editorlimites.editarAtributos.x+"&y="+i3GEOF.editorlimites.editarAtributos.y); }, //TODO redesenhar as camadas que sofrerem alterações em função do salvar ou excluir + /** + * Exclui o valor de uma medida de variavel para o componente de uma regiao + */ excluir: function(id){ if(i3GEO.login.verificaCookieLogin() === false){ i3GEO.janela.tempoMsg("Você precisa fazer login para usar essa opção"); @@ -805,6 +944,9 @@ i3GEOF.editorlimites = { cpJSON.call(p,"foo",temp,"&codigo_tipo_regiao="+codigo_tipo_regiao+"&identificador_regiao="+identificador_regiao+"&id_medida_variavel="+id_medida_variavel+"&id="+id); }, + /** + * Salva os valores digitados + */ salva: function(){ if(i3GEO.login.verificaCookieLogin() === false){ i3GEO.janela.tempoMsg("Você precisa fazer login para usar essa opção"); @@ -863,72 +1005,11 @@ i3GEOF.editorlimites = { i3GEO.janela.abreAguarde("aguardeSalvaAtributos","Salvando..."); i3GEO.janela.AGUARDEMODAL = false; cpJSON.call(p,"foo",temp,"&codigo_tipo_regiao="+codigo_tipo_regiao+"&identificador_regiao="+identificador_regiao+"&id_medida_variavel="+id_medida_variavel+"&colunas="+colunasT[0]+"&valores="+valoresT.join("|")+"&idsunicos="+idsunicosT.join(";")); - }, - criaJanelaFlutuante: function(html){ - var janela,titulo,cabecalho,minimiza; - cabecalho = function(){}; - minimiza = function(){ - i3GEO.janela.minimiza("editaAtributos"); - }; - titulo = "Atributos   "; - janela = i3GEO.janela.cria( - "250px", - "265px", - "", - "", - "", - titulo, - "editaAtributos", - false, - "hd", - cabecalho, - minimiza - ); - $i("editaAtributos_corpo").style.backgroundColor = "white"; - $i("editaAtributos_corpo").innerHTML = html; - i3GEO.janela.tempoMsg("Após escolher a medida da variável, clique no mapa para escolher o limite geográfico."); - YAHOO.util.Event.addListener(janela[0].close, "click", i3GEOF.editorlimites.mudaicone); - }, - html: function(){ - var ins = '' + - '

' + - '

' + - '

' + - '

' + - ''; - return ins; - }, - comboVariaveis: function(){ - var temp = function(dados){ - var i,n = dados.length, ins = ''; - ins += '

Escolha uma variável para editar

'; - ins += ""; - $i("editarAtributosVariaveis").innerHTML = ins; - }; - i3GEO.php.listaVariavel(temp,"i3geo_metaestat"); - }, - comboMedidasVariavel: function(comboMedidas){ - var temp = function(dados){ - var i,n = dados.length, ins = ''; - ins += '

Escolha uma medida da variável para editar

'; - ins += ""; - $i("editarAtributosMedidasVariavel").innerHTML = ins; - }; - if(comboMedidas.value !== ""){ - i3GEO.php.listaMedidaVariavel(comboMedidas.value,temp); - } } }, + /** + * Abre a janela de ajuda sobre a operacao dos botoes do editor + */ ajuda: function(){ var titulo,cabecalho,minimiza,html = ""; cabecalho = function(){}; -- libgit2 0.21.2