Commit 166a17b16c2b50d05d27c487171c3f4f6b5ef49f

Authored by Edmar Moretti
1 parent f5a604e8

Documentacao do codigo

Showing 1 changed file with 288 additions and 207 deletions   Show diff stats
ferramentas/metaestat/editorlimites.js
1 /* 1 /*
2 Title: Editor vetorial de limites de regiões do sistema METAESTAT 2 Title: Editor vetorial de limites de regiões do sistema METAESTAT
3 3
  4 +Utilizado em i3geo/metaestat/editorlimites.php
  5 +
  6 +Utiliza a API do Google Maps e pacotes/wicket/wicket.js (que cria o objeto Wkt com funcoes para processamento de Wkt)
  7 +
4 Arquivo: 8 Arquivo:
5 9
6 i3geo/ferramentas/metaestat/editorlimites.js 10 i3geo/ferramentas/metaestat/editorlimites.js
@@ -41,24 +45,44 @@ Funções de edição vetorial utilizadas pelo editor de @@ -41,24 +45,44 @@ Funções de edição vetorial utilizadas pelo editor de
41 */ 45 */
42 i3GEOF.editorlimites = { 46 i3GEOF.editorlimites = {
43 /** 47 /**
44 - * Estilo do objeto DOM com a imagem de aguarde existente no cabecalho da janela 48 + * Objeto DOM com a imagem de aguarde existente no cabecalho da janela
45 * 49 *
46 */ 50 */
47 aguarde: "", 51 aguarde: "",
  52 + /**
  53 + * Guarda o Id do DIV que recebera o conteudo HTML do editor
  54 + */
48 iddiv: "", 55 iddiv: "",
  56 + /**
  57 + * Objeto criado com new google.maps.drawing.DrawingManager
  58 + */
49 drawingManager: "", 59 drawingManager: "",
50 selectedShape: null, 60 selectedShape: null,
  61 + /**
  62 + * Array que guarda todos os objetos que estao atualmente no mapa
  63 + * E atualizado toda vez que uma figura e acrescentada ou removida
  64 + */
51 shapes: [], 65 shapes: [],
52 - regioestemas:{},//guarda o mapeamento entre o codigo da regiao e o codigo do layer adicionado ao mapa  
53 - temasregioes:{},//guarda o mapeamento entre o codigo da regiao e o codigo do layer adicionado ao mapa  
54 - descregioes:[],//guarda os dados descritivos sobre cada regiao obtidos na formacao no combo de escolha de regioes 66 + /**
  67 + * guarda o mapeamento entre o codigo da regiao e o codigo do layer adicionado ao mapa
  68 + */
  69 + regioestemas:{},
  70 + /**
  71 + * Guarda o mapeamento entre o codigo da regiao e o codigo do layer adicionado ao mapa
  72 + */
  73 + temasregioes:{},
  74 + /**
  75 + * Guarda os dados descritivos sobre cada regiao obtidos na formacao no combo de escolha de regioes
  76 + */
  77 + descregioes:[],
55 /** 78 /**
56 * Inicia o editor 79 * Inicia o editor
57 * 80 *
58 - * O objeto googlemap e i3GeoMap 81 + * Cria o objeto da API do Google Maps com new google.maps.drawing.DrawingManager
  82 + * A janela flutuante que recebera os componentes do editor ja deve estar aberta (veja editorlimites.php)
  83 + * Executa i3GEOF.editorlimites.html
59 * 84 *
60 - * @param {String} Id do DIV que recebera o conteudo HTML do editor. Ja deve estar criado no HTML  
61 - * @return 85 + * @param Id do DIV que recebera o conteudo HTML do editor
62 */ 86 */
63 inicia: function(iddiv){ 87 inicia: function(iddiv){
64 var i,n,ics; 88 var i,n,ics;
@@ -125,19 +149,21 @@ i3GEOF.editorlimites = { @@ -125,19 +149,21 @@ i3GEOF.editorlimites = {
125 i3GEOF.editorlimites.shapes.push(newShape); 149 i3GEOF.editorlimites.shapes.push(newShape);
126 } 150 }
127 }); 151 });
128 - google.maps.event.addListener(  
129 - i3GEOF.editorlimites.drawingManager,  
130 - 'drawingmode_changed',  
131 - i3GEOF.editorlimites.clearSelection  
132 - );  
133 - google.maps.event.addListener(  
134 - i3GeoMap,  
135 - 'click',  
136 - i3GEOF.editorlimites.clearSelection  
137 - ); 152 + google.maps.event.addListener(
  153 + i3GEOF.editorlimites.drawingManager,
  154 + 'drawingmode_changed',
  155 + i3GEOF.editorlimites.clearSelection
  156 + );
  157 + google.maps.event.addListener(
  158 + i3GeoMap,
  159 + 'click',
  160 + i3GEOF.editorlimites.clearSelection
  161 + );
138 }, 162 },
139 /** 163 /**
140 * Atualiza as camadas do mapa que sao oriundas do sistema METAESTAT 164 * Atualiza as camadas do mapa que sao oriundas do sistema METAESTAT
  165 + * Busca a lista de camadas com ferramentas/metaestat/analise.php?funcao=LISTACAMADASMETAESTAT
  166 + * Faz um loop para atualizar cada camada
141 */ 167 */
142 atualizaCamadasMetaestat: function(){ 168 atualizaCamadasMetaestat: function(){
143 var p = i3GEO.configura.locaplic+"/ferramentas/metaestat/analise.php?funcao=LISTACAMADASMETAESTAT&g_sid="+i3GEO.configura.sid, 169 var p = i3GEO.configura.locaplic+"/ferramentas/metaestat/analise.php?funcao=LISTACAMADASMETAESTAT&g_sid="+i3GEO.configura.sid,
@@ -149,15 +175,11 @@ i3GEOF.editorlimites = { @@ -149,15 +175,11 @@ i3GEOF.editorlimites = {
149 }; 175 };
150 cpJSON.call(p,"foo",temp); 176 cpJSON.call(p,"foo",temp);
151 }, 177 },
152 - /*  
153 - Function: html  
154 -  
155 - Gera o código html para apresentação das opções da ferramenta  
156 -  
157 - Retorno:  
158 -  
159 - String com o código html  
160 - */ 178 + /**
  179 + * Monta o codigo HTML com o conteudo da ferramenta
  180 + * Define os botoes e demais elementos que serao preenchidos via codigo
  181 + * @return html
  182 + */
161 html:function(){ 183 html:function(){
162 var ins = '<div style=margin-left:5px >' + 184 var ins = '<div style=margin-left:5px >' +
163 ' <button title="Desenhar um polígono" onclick="i3GEOF.editorlimites.digitalizaPol(this)"><img src="'+i3GEO.configura.locaplic+'/imagens/gisicons/polygon-create.png" /></button>' + 185 ' <button title="Desenhar um polígono" onclick="i3GEOF.editorlimites.digitalizaPol(this)"><img src="'+i3GEO.configura.locaplic+'/imagens/gisicons/polygon-create.png" /></button>' +
@@ -170,22 +192,26 @@ i3GEOF.editorlimites = { @@ -170,22 +192,26 @@ i3GEOF.editorlimites = {
170 ' <br><div id="i3geoCartoRegioesEditaveisDiv" ><img style="display:block;z-index:2" src="'+i3GEO.configura.locaplic+'/imagens/aguarde.gif" /></div></div>'; //combo para escolher a regiao 192 ' <br><div id="i3geoCartoRegioesEditaveisDiv" ><img style="display:block;z-index:2" src="'+i3GEO.configura.locaplic+'/imagens/aguarde.gif" /></div></div>'; //combo para escolher a regiao
171 return ins; 193 return ins;
172 }, 194 },
173 - /*  
174 - Function: ativaFoco  
175 -  
176 - Refaz a interface da ferramenta quando a janela flutuante tem seu foco ativado  
177 - */ 195 + /**
  196 + * Atualiza a ferramenta quando a janela flutuante tem seu foco ativado
  197 + */
178 ativaFoco: function(){ 198 ativaFoco: function(){
179 i3GEO.util.mudaCursor(i3GEO.configura.cursores,"crosshair",i3GEO.Interface.IDMAPA,i3GEO.configura.locaplic); 199 i3GEO.util.mudaCursor(i3GEO.configura.cursores,"crosshair",i3GEO.Interface.IDMAPA,i3GEO.configura.locaplic);
180 i3GEO.barraDeBotoes.ativaIcone("pan"); 200 i3GEO.barraDeBotoes.ativaIcone("pan");
181 i3GEOF.editorlimites.mudaicone(); 201 i3GEOF.editorlimites.mudaicone();
182 i3GEO.Interface.googlemaps.recalcPar(); 202 i3GEO.Interface.googlemaps.recalcPar();
183 }, 203 },
  204 + /**
  205 + * Marca uma figura como selecionada
  206 + * @param objeto shape que sera marcado
  207 + */
184 setSelection: function(shape){ 208 setSelection: function(shape){
185 - //i3GEOF.editorlimites.clearSelection();  
186 - //i3GEOF.editorlimites.selectedShape = shape;  
187 shape.setEditable(!shape.editable); 209 shape.setEditable(!shape.editable);
188 }, 210 },
  211 + /**
  212 + * Marca todas as figuras como nao selecionadas
  213 + * As figuras existentes no mapa sao mantidas na variavel i3GEOF.editorlimites.shapes
  214 + */
189 clearSelection: function(){ 215 clearSelection: function(){
190 var i, 216 var i,
191 n = i3GEOF.editorlimites.shapes.length; 217 n = i3GEOF.editorlimites.shapes.length;
@@ -195,6 +221,10 @@ i3GEOF.editorlimites = { @@ -195,6 +221,10 @@ i3GEOF.editorlimites = {
195 } 221 }
196 } 222 }
197 }, 223 },
  224 + /**
  225 + * Remove do mapa as figuras que estiverem selecionadas
  226 + * @param boolean indica se deve ser feita uma confirmacao ou nao antes de apagar
  227 + */
198 deleteSelectedShape: function(naoconfirma) { 228 deleteSelectedShape: function(naoconfirma) {
199 if(!naoconfirma){ 229 if(!naoconfirma){
200 naoconfirma = false; 230 naoconfirma = false;
@@ -221,6 +251,10 @@ i3GEOF.editorlimites = { @@ -221,6 +251,10 @@ i3GEOF.editorlimites = {
221 i3GEO.janela.tempoMsg("Selecione pelo menos uma figura"); 251 i3GEO.janela.tempoMsg("Selecione pelo menos uma figura");
222 } 252 }
223 }, 253 },
  254 + /**
  255 + * Lista as figuras que estao marcadas como selecionadas
  256 + * @return array de shapes
  257 + */
224 selectedShapes: function() { 258 selectedShapes: function() {
225 var i,s = [], 259 var i,s = [],
226 n = i3GEOF.editorlimites.shapes.length; 260 n = i3GEOF.editorlimites.shapes.length;
@@ -231,6 +265,10 @@ i3GEOF.editorlimites = { @@ -231,6 +265,10 @@ i3GEOF.editorlimites = {
231 } 265 }
232 return s; 266 return s;
233 }, 267 },
  268 + /**
  269 + * Lista as coordenadas de todas as figuras existentes
  270 + * @return objeto contendo a indicacao do tipo de figura e o array com a lista de coordenadas
  271 + */
234 getCoordenadas: function(){ 272 getCoordenadas: function(){
235 var coordenadas = [], 273 var coordenadas = [],
236 lista = [], 274 lista = [],
@@ -256,41 +294,24 @@ i3GEOF.editorlimites = { @@ -256,41 +294,24 @@ i3GEOF.editorlimites = {
256 p = {"tipo":tipo,"coordenadas":lista}; 294 p = {"tipo":tipo,"coordenadas":lista};
257 return p; 295 return p;
258 }, 296 },
  297 + /**
  298 + * Converte um objeto shape em uma string WKT
  299 + * @param shape
  300 + */
259 toWKT: function(obj){ 301 toWKT: function(obj){
260 var wkt = new Wkt.Wkt(); 302 var wkt = new Wkt.Wkt();
261 wkt.fromObject(obj); 303 wkt.fromObject(obj);
262 return wkt.write(); 304 return wkt.write();
263 - /*  
264 - var wkt = "",  
265 - coordenadas = obj.coordenadas,  
266 - n = coordenadas.length,  
267 - lista = [],  
268 - i,c;  
269 - if(obj.tipo == "polygon" || obj.tipo == "" || obj.tipo == undefined ){  
270 - if(n == 1 && coordenadas[0] != ""){  
271 - coordenadas.push(coordenadas[0][0]);  
272 - wkt = "POLYGON(("+coordenadas.toString()+"))";  
273 - }  
274 - else{  
275 - for(i=0;i<n;i++){  
276 - c = coordenadas[i];  
277 - c.push(c[0][0]);  
278 - lista.push("(("+c.toString()+"))");  
279 - }  
280 - if(lista.length > 0)  
281 - {wkt = "MULTIPOLYGON("+lista.toString()+")";}  
282 - }  
283 - }  
284 - if(obj.tipo == "point"){  
285 -  
286 - }  
287 - if(obj.tipo == "polyline"){  
288 -  
289 - }  
290 - return wkt;  
291 - */  
292 }, 305 },
  306 + /**
  307 + * Funcoes que controlam o processo de obtencao das coordenadas de um componente de uma camada existente no mapa
  308 + */
293 capturaPoligonoTema:{ 309 capturaPoligonoTema:{
  310 + /**
  311 + * Ativa a operaco de captura definindo o evento que sera executado no onclick do mouse sobre o mapa
  312 + * O evento executa i3GEOF.editorlimites.capturaPoligonoTema.captura
  313 + * @param botao da interface que foi pressionado
  314 + */
294 ativa: function(botao){ 315 ativa: function(botao){
295 i3GEOF.editorlimites.mudaicone(botao); 316 i3GEOF.editorlimites.mudaicone(botao);
296 i3GEO.util.mudaCursor(i3GEO.configura.cursores,"pointer",i3GEO.Interface.IDMAPA,i3GEO.configura.locaplic); 317 i3GEO.util.mudaCursor(i3GEO.configura.cursores,"pointer",i3GEO.Interface.IDMAPA,i3GEO.configura.locaplic);
@@ -299,6 +320,11 @@ i3GEOF.editorlimites = { @@ -299,6 +320,11 @@ i3GEOF.editorlimites = {
299 }, 320 },
300 desativa: function(){ 321 desativa: function(){
301 }, 322 },
  323 + /**
  324 + * Realiza a captura de um componente do mapa quando o usuario faz o clique
  325 + * A captura e feita com classesphp/mapa_controle.php&funcao=identifica3
  326 + * O resultado e adicionado ao mapa como um novo objeto shape
  327 + */
302 captura: function(){ 328 captura: function(){
303 var temp,tema="",regiao="",p,par, 329 var temp,tema="",regiao="",p,par,
304 aguarde = $i("janelaEditorLimites_imagemCabecalho"); 330 aguarde = $i("janelaEditorLimites_imagemCabecalho");
@@ -366,40 +392,12 @@ i3GEOF.editorlimites = { @@ -366,40 +392,12 @@ i3GEOF.editorlimites = {
366 } 392 }
367 } 393 }
368 }, 394 },
369 - /*  
370 - Function: mudaicone  
371 -  
372 - Altera as bordas dos ícones e desativa eventos anteriores  
373 - */  
374 - mudaicone: function(botao){  
375 - var c = $i(i3GEOF.editorlimites.iddiv),  
376 - ci = c.getElementsByTagName("img"),  
377 - n = ci.length,  
378 - i;  
379 - for(i=0;i<n;i++){  
380 - ci[i].parentNode.style.backgroundColor = "#F5F5F5";  
381 - }  
382 - i3GEO.eventos.MOUSECLIQUE = [];  
383 - i3GEOF.editorlimites.capturaPoligonoTema.desativa();  
384 - i3GEOF.editorlimites.editarAtributos.desativa();  
385 - if(botao && botao.style){  
386 - botao.style.backgroundColor = "#cedff2";  
387 - }  
388 - },  
389 - digitalizaPol: function(botao){  
390 - i3GEOF.editorlimites.mudaicone(botao);  
391 - i3GEO.util.mudaCursor(i3GEO.configura.cursores,"pointer",i3GEO.Interface.IDMAPA,i3GEO.configura.locaplic);  
392 - i3GEOF.editorlimites.drawingManager.setOptions({  
393 - drawingMode: google.maps.drawing.OverlayType.POLYGON  
394 - });  
395 - },  
396 - seleciona: function(botao){  
397 - i3GEOF.editorlimites.mudaicone(botao);  
398 - i3GEO.util.mudaCursor(i3GEO.configura.cursores,"pointer",i3GEO.Interface.IDMAPA,i3GEO.configura.locaplic);  
399 - i3GEOF.editorlimites.drawingManager.setOptions({  
400 - drawingMode: null  
401 - });  
402 - }, 395 + /**
  396 + * Monta um combo com a lista de regioes cadastradas e que podem ser editadas pelo editor
  397 + * A regiao em edicao sera a escolhida nesse combo
  398 + * Ao ser escolhida, e adicionada uma camada no mapa
  399 + * @param opcional codigo da regiao no cadastro. Se nao for definido, busca todas
  400 + */
403 comboRegiaoEditavel: function(codigo_tipo_regiao){ 401 comboRegiaoEditavel: function(codigo_tipo_regiao){
404 if(!codigo_tipo_regiao){ 402 if(!codigo_tipo_regiao){
405 codigo_tipo_regiao = ""; 403 codigo_tipo_regiao = "";
@@ -425,6 +423,10 @@ i3GEOF.editorlimites = { @@ -425,6 +423,10 @@ i3GEOF.editorlimites = {
425 }; 423 };
426 i3GEO.php.listaTipoRegiao(temp,codigo_tipo_regiao); 424 i3GEO.php.listaTipoRegiao(temp,codigo_tipo_regiao);
427 }, 425 },
  426 + /**
  427 + * Funcao ativada no evento onchange do combo criado com comboRegiaoEditavel
  428 + * Executa i3GEO.php.mapfileTipoRegiao
  429 + */
428 comboRegiaoEditavelOnchange: function(combo){ 430 comboRegiaoEditavelOnchange: function(combo){
429 if(combo.value === ""){ 431 if(combo.value === ""){
430 return; 432 return;
@@ -440,6 +442,57 @@ i3GEOF.editorlimites = { @@ -440,6 +442,57 @@ i3GEOF.editorlimites = {
440 }; 442 };
441 i3GEO.php.mapfileTipoRegiao(temp,combo.value); 443 i3GEO.php.mapfileTipoRegiao(temp,combo.value);
442 }, 444 },
  445 + /**
  446 + * Altera as bordas dos icones e desativa eventos
  447 + * Desativa todos os botoes e ativa o indicado
  448 + * @param objeto DOM que representa o botao que sera focado
  449 + */
  450 + mudaicone: function(botao){
  451 + var c = $i(i3GEOF.editorlimites.iddiv),
  452 + ci = c.getElementsByTagName("img"),
  453 + n = ci.length,
  454 + i;
  455 + for(i=0;i<n;i++){
  456 + ci[i].parentNode.style.backgroundColor = "#F5F5F5";
  457 + }
  458 + i3GEO.eventos.MOUSECLIQUE = [];
  459 + i3GEOF.editorlimites.capturaPoligonoTema.desativa();
  460 + i3GEOF.editorlimites.editarAtributos.desativa();
  461 + if(botao && botao.style){
  462 + botao.style.backgroundColor = "#cedff2";
  463 + }
  464 + },
  465 + /**
  466 + * Ativa a digitalizacao de poligono
  467 + * @param objeto DOM que representa o botao que sera focado
  468 + */
  469 + digitalizaPol: function(botao){
  470 + i3GEOF.editorlimites.mudaicone(botao);
  471 + i3GEO.util.mudaCursor(i3GEO.configura.cursores,"pointer",i3GEO.Interface.IDMAPA,i3GEO.configura.locaplic);
  472 + i3GEOF.editorlimites.drawingManager.setOptions({
  473 + drawingMode: google.maps.drawing.OverlayType.POLYGON
  474 + });
  475 + },
  476 + /**
  477 + * Ativa a selecao de figuras
  478 + * @param objeto DOM que representa o botao que sera focado
  479 + */
  480 + seleciona: function(botao){
  481 + i3GEOF.editorlimites.mudaicone(botao);
  482 + i3GEO.util.mudaCursor(i3GEO.configura.cursores,"pointer",i3GEO.Interface.IDMAPA,i3GEO.configura.locaplic);
  483 + i3GEOF.editorlimites.drawingManager.setOptions({
  484 + drawingMode: null
  485 + });
  486 + },
  487 + /**
  488 + * Adiciona uma nova figura ao mapa (shape)
  489 + * @param objeto shape (API do Google)
  490 + * @param codigo do layer que sera vinculado ao shape
  491 + * @param coluna do tema que contem os identificadores de cada um de seus elementos (registros)
  492 + * @param valor do identificador
  493 + * @param coluna que cntem os nomes das regioes
  494 + * @param nome da regiao a ser adicionada
  495 + */
443 adicionaPoligonos: function(obj,tema,colunaid,valorid,colunanome,valornome){ 496 adicionaPoligonos: function(obj,tema,colunaid,valorid,colunanome,valornome){
444 if(!tema){ 497 if(!tema){
445 tema = $i("i3geoCartoRegioesEditaveis").value; 498 tema = $i("i3geoCartoRegioesEditaveis").value;
@@ -456,25 +509,12 @@ i3GEOF.editorlimites = { @@ -456,25 +509,12 @@ i3GEOF.editorlimites = {
456 if(!valornome){ 509 if(!valornome){
457 valornome = ""; 510 valornome = "";
458 } 511 }
459 - /*  
460 - var n = listaDePontos.length,  
461 - i = 0,  
462 - nn,  
463 - temp,  
464 - j,  
465 - pol,  
466 - pontos = [];  
467 -  
468 - for(i=0;i<n;i++){  
469 - pontos = [];  
470 - nn = listaDePontos[i].length;  
471 - for(j=0;j<nn;j++){  
472 - temp = listaDePontos[i][j];  
473 - pontos.push(new google.maps.LatLng(temp[1],temp[0]));  
474 - }  
475 - pontos.push(pontos[0]);  
476 - pol = new google.maps.Polygon({  
477 - path: pontos, 512 + var pol;
  513 + if (Wkt.isArray(obj)) { // Distinguish multigeometries (Arrays) from objects
  514 + for (i in obj) {
  515 + if (obj.hasOwnProperty(i) && !Wkt.isArray(obj[i])) {
  516 + pol = new google.maps.Polygon({
  517 + path: obj[i].getPath(),
478 map: i3GeoMap, 518 map: i3GeoMap,
479 fillColor: '#ffff00', 519 fillColor: '#ffff00',
480 fillOpacity: .5, 520 fillOpacity: .5,
@@ -492,35 +532,10 @@ i3GEOF.editorlimites = { @@ -492,35 +532,10 @@ i3GEOF.editorlimites = {
492 i3GEOF.editorlimites.setSelection(pol); 532 i3GEOF.editorlimites.setSelection(pol);
493 }); 533 });
494 i3GEOF.editorlimites.shapes.push(pol); 534 i3GEOF.editorlimites.shapes.push(pol);
495 - }  
496 - */  
497 - var pol;  
498 - if (Wkt.isArray(obj)) { // Distinguish multigeometries (Arrays) from objects  
499 - for (i in obj) {  
500 - if (obj.hasOwnProperty(i) && !Wkt.isArray(obj[i])) {  
501 - pol = new google.maps.Polygon({  
502 - path: obj[i].getPath(),  
503 - map: i3GeoMap,  
504 - fillColor: '#ffff00',  
505 - fillOpacity: .5,  
506 - strokeWeight: 2,  
507 - clickable: true,  
508 - zIndex: 1,  
509 - editable: true,  
510 - tema: tema,  
511 - colunaid: colunaid,  
512 - valorid: valorid,  
513 - colunanome: colunanome,  
514 - valornome: valornome  
515 - });  
516 - google.maps.event.addListener(pol, 'click', function() {  
517 - i3GEOF.editorlimites.setSelection(pol);  
518 - });  
519 - i3GEOF.editorlimites.shapes.push(pol);  
520 - }  
521 } 535 }
522 - return;  
523 } 536 }
  537 + return;
  538 + }
524 if (obj.type === 'polygon' || obj.type === 'linestring'){ 539 if (obj.type === 'polygon' || obj.type === 'linestring'){
525 pol = new google.maps.Polygon({ 540 pol = new google.maps.Polygon({
526 paths: obj.getPaths(), 541 paths: obj.getPaths(),
@@ -544,7 +559,14 @@ i3GEOF.editorlimites = { @@ -544,7 +559,14 @@ i3GEOF.editorlimites = {
544 return; 559 return;
545 } 560 }
546 }, 561 },
  562 + /**
  563 + * Salva um poligono no banco de dados
  564 + */
547 salvaLimite: { 565 salvaLimite: {
  566 + /**
  567 + * Inicia a ferramenta definindo as funcoes dos botoes
  568 + * Executa i3GEOF.editorlimites.salvaLimite.criaJanelaFlutuante
  569 + */
548 inicia: function(){ 570 inicia: function(){
549 if(i3GEO.login.verificaCookieLogin() === false){ 571 if(i3GEO.login.verificaCookieLogin() === false){
550 i3GEO.janela.tempoMsg("Voc&ecirc; precisa fazer login para usar essa op&ccedil;&atilde;o"); 572 i3GEO.janela.tempoMsg("Voc&ecirc; precisa fazer login para usar essa op&ccedil;&atilde;o");
@@ -587,7 +609,9 @@ i3GEOF.editorlimites = { @@ -587,7 +609,9 @@ i3GEOF.editorlimites = {
587 i3GEO.janela.tempoMsg("Selecione uma figura"); 609 i3GEO.janela.tempoMsg("Selecione uma figura");
588 } 610 }
589 }, 611 },
590 - //altera um poligono que ja existia 612 + /**
  613 + * Monta o HTML para o formulario que permite salvar os dados
  614 + */
591 html:function(colunaIdElemento,valorIdElemento,colunaNomeElemento,valorNomeElemento){ 615 html:function(colunaIdElemento,valorIdElemento,colunaNomeElemento,valorNomeElemento){
592 var ins = '' + 616 var ins = '' +
593 '<p class=paragrafo >Se o valor do c&oacute;digo for vazio, ser&aacute; criado um novo elemento. Caso contr&aacute;rio, os valores atualmente registrados ser&atilde;o atualizados.</p>' + 617 '<p class=paragrafo >Se o valor do c&oacute;digo for vazio, ser&aacute; criado um novo elemento. Caso contr&aacute;rio, os valores atualmente registrados ser&atilde;o atualizados.</p>' +
@@ -606,6 +630,10 @@ i3GEOF.editorlimites = { @@ -606,6 +630,10 @@ i3GEOF.editorlimites = {
606 '<br><br><input id=i3GEOFmetaestati3GEOF.editorlimitesBotao3 type="button" value="Excluir pol&iacute;gono" />'; 630 '<br><br><input id=i3GEOFmetaestati3GEOF.editorlimitesBotao3 type="button" value="Excluir pol&iacute;gono" />';
607 return ins; 631 return ins;
608 }, 632 },
  633 + /**
  634 + * Cria a janela flutuante para receber os componentes da ferramenta
  635 + * @param html com o conteudo da ferramenta
  636 + */
609 criaJanelaFlutuante: function(html){ 637 criaJanelaFlutuante: function(html){
610 var titulo,cabecalho,minimiza,janela; 638 var titulo,cabecalho,minimiza,janela;
611 cabecalho = function(){}; 639 cabecalho = function(){};
@@ -630,6 +658,11 @@ i3GEOF.editorlimites = { @@ -630,6 +658,11 @@ i3GEOF.editorlimites = {
630 $i("salvaLimite_corpo").innerHTML = html; 658 $i("salvaLimite_corpo").innerHTML = html;
631 YAHOO.util.Event.addListener(janela[0].close, "click", i3GEOF.editorlimites.mudaicone); 659 YAHOO.util.Event.addListener(janela[0].close, "click", i3GEOF.editorlimites.mudaicone);
632 }, 660 },
  661 + /**
  662 + * Aplica a operacao de salvar os dados no banco para o shape selecionado
  663 + * Executa admin/php/metaestat.php?funcao=mantemDadosRegiao
  664 + * @param boolean indica se as coordenadas serao salvas tambem
  665 + */
633 gravaDados: function(comwkt){ 666 gravaDados: function(comwkt){
634 if(i3GEO.login.verificaCookieLogin() === false){ 667 if(i3GEO.login.verificaCookieLogin() === false){
635 i3GEO.janela.tempoMsg("Voc&ecirc; precisa fazer login para usar essa op&ccedil;&atilde;o"); 668 i3GEO.janela.tempoMsg("Voc&ecirc; precisa fazer login para usar essa op&ccedil;&atilde;o");
@@ -663,6 +696,10 @@ i3GEOF.editorlimites = { @@ -663,6 +696,10 @@ i3GEOF.editorlimites = {
663 p = i3GEO.configura.locaplic+"/admin/php/metaestat.php?funcao=mantemDadosRegiao&tipo="; 696 p = i3GEO.configura.locaplic+"/admin/php/metaestat.php?funcao=mantemDadosRegiao&tipo=";
664 cpJSON.call(p,"foo",temp,"&codigo_tipo_regiao="+codigo_tipo_regiao+"&identificadornovo="+identificadornovo+"&identificador="+identificador+"&nome="+nome+"&wkt="+wkt); 697 cpJSON.call(p,"foo",temp,"&codigo_tipo_regiao="+codigo_tipo_regiao+"&identificadornovo="+identificadornovo+"&identificador="+identificador+"&nome="+nome+"&wkt="+wkt);
665 }, 698 },
  699 + /**
  700 + * Exclui um registro do banco de dados
  701 + * Executa admin/php/metaestat.php?funcao=mantemDadosRegiao&tipo=excluir
  702 + */
666 excluiPoligono: function(){ 703 excluiPoligono: function(){
667 if(i3GEO.login.verificaCookieLogin() === false){ 704 if(i3GEO.login.verificaCookieLogin() === false){
668 i3GEO.janela.tempoMsg("Voc&ecirc; precisa fazer login para usar essa op&ccedil;&atilde;o"); 705 i3GEO.janela.tempoMsg("Voc&ecirc; precisa fazer login para usar essa op&ccedil;&atilde;o");
@@ -685,10 +722,20 @@ i3GEOF.editorlimites = { @@ -685,10 +722,20 @@ i3GEOF.editorlimites = {
685 cpJSON.call(p,"foo",temp,"&codigo_tipo_regiao="+codigo_tipo_regiao+"&identificador="+identificador); 722 cpJSON.call(p,"foo",temp,"&codigo_tipo_regiao="+codigo_tipo_regiao+"&identificador="+identificador);
686 } 723 }
687 }, 724 },
  725 + /**
  726 + *Funcoes que controlam o processo de edicao de atributos de um shape
  727 + */
688 editarAtributos: { 728 editarAtributos: {
689 aliascolunas: "", //guarda os nomes das colunas e seus aliases para permitir a criacao de novos registros 729 aliascolunas: "", //guarda os nomes das colunas e seus aliases para permitir a criacao de novos registros
690 x: "", 730 x: "",
691 y: "", 731 y: "",
  732 + /**
  733 + * Ativa a ferramenta
  734 + * Define os eventos de onclick para abrir formulario quando o usuario clica no mapa
  735 + * Para cada regiao sao obtidas todas as variaveis cadastradas
  736 + * Executa i3GEOF.editorlimites.editarAtributos.criaJanelaFlutuante
  737 + * Executa i3GEOF.editorlimites.editarAtributos.comboVariaveis();
  738 + */
692 ativa: function(botao){ 739 ativa: function(botao){
693 if($i("i3geoCartoRegioesEditaveis").value == ""){ 740 if($i("i3geoCartoRegioesEditaveis").value == ""){
694 i3GEO.janela.tempoMsg("Escolha uma regiao"); 741 i3GEO.janela.tempoMsg("Escolha uma regiao");
@@ -706,12 +753,96 @@ i3GEOF.editorlimites = { @@ -706,12 +753,96 @@ i3GEOF.editorlimites = {
706 i3GEOF.editorlimites.editarAtributos.comboVariaveis(); 753 i3GEOF.editorlimites.editarAtributos.comboVariaveis();
707 } 754 }
708 }, 755 },
  756 + /**
  757 + * Fecha a janela de edicao
  758 + */
709 desativa: function(){ 759 desativa: function(){
710 var janela = YAHOO.i3GEO.janela.manager.find("editaAtributos"); 760 var janela = YAHOO.i3GEO.janela.manager.find("editaAtributos");
711 if(janela){ 761 if(janela){
712 janela.destroy(); 762 janela.destroy();
713 } 763 }
714 }, 764 },
  765 + criaJanelaFlutuante: function(html){
  766 + var janela,titulo,cabecalho,minimiza;
  767 + cabecalho = function(){};
  768 + minimiza = function(){
  769 + i3GEO.janela.minimiza("editaAtributos");
  770 + };
  771 + titulo = "Atributos&nbsp;&nbsp;&nbsp;</a>";
  772 + janela = i3GEO.janela.cria(
  773 + "250px",
  774 + "265px",
  775 + "",
  776 + "",
  777 + "",
  778 + titulo,
  779 + "editaAtributos",
  780 + false,
  781 + "hd",
  782 + cabecalho,
  783 + minimiza
  784 + );
  785 + $i("editaAtributos_corpo").style.backgroundColor = "white";
  786 + $i("editaAtributos_corpo").innerHTML = html;
  787 + i3GEO.janela.tempoMsg("Ap&oacute;s escolher a medida da vari&aacute;vel, clique no mapa para escolher o limite geogr&aacute;fico.");
  788 + YAHOO.util.Event.addListener(janela[0].close, "click", i3GEOF.editorlimites.mudaicone);
  789 + },
  790 + /**
  791 + * Fornece o HTML com os objetos que receberao os componentes da ferramenta
  792 + * @return html
  793 + */
  794 + html: function(){
  795 + var ins = '' +
  796 + '<p class="paragrafo" ><div id="editarAtributosVariaveis" ></div></p>' +
  797 + '<p class="paragrafo" ><div id="editarAtributosMedidasVariavel" ></div></p>' +
  798 + '<p class="paragrafo" ><div id="editarAtributosRegiao" ></div></p>' +
  799 + '<p class="paragrafo" ><div id="editarAtributosForm" ></div></p>' +
  800 + '';
  801 + return ins;
  802 + },
  803 + /**
  804 + * Monta um combo para escolha de uma variavel que sera editada
  805 + * Executa i3GEO.php.listaVariavel
  806 + */
  807 + comboVariaveis: function(){
  808 + var temp = function(dados){
  809 + var i,n = dados.length, ins = '';
  810 + ins += '<p class="paragrafo" >Escolha uma vari&aacute;vel para editar</p>';
  811 + ins += "<select style='box-shadow:0 1px 5px gray;width:200px' onchange='i3GEOF.editorlimites.editarAtributos.comboMedidasVariavel(this)'><option value=''>---</option>";
  812 + for(i=0;i<n;i++){
  813 + ins += "<option title='"+dados[i].descricao+"' value='"+dados[i].codigo_variavel+"'>"+dados[i].nome+"</option>";
  814 + }
  815 + ins += "</select>";
  816 + $i("editarAtributosVariaveis").innerHTML = ins;
  817 + };
  818 + i3GEO.php.listaVariavel(temp,"i3geo_metaestat");
  819 + },
  820 + /**
  821 + * Monta um combo com as medidas de uma variavel
  822 + * Executa i3GEO.php.listaMedidaVariavel
  823 + * @param objeto DOM do tipo select que contem a lista de variaveis
  824 + */
  825 + comboMedidasVariavel: function(comboMedidas){
  826 + var temp = function(dados){
  827 + var i,n = dados.length, ins = '';
  828 + ins += '<p class="paragrafo" >Escolha uma medida da vari&aacute;vel para editar</p>';
  829 + ins += "<select id='editarAtributosComboMedidas' style='box-shadow:0 1px 5px gray;width:200px' onchange=''><option value=''>---</option>";
  830 + for(i=0;i<n;i++){
  831 + if(dados[i].esquemadb == "i3geo_metaestat" && dados[i].codigo_tipo_regiao == $i("i3geoCartoRegioesEditaveis").value){
  832 + ins += "<option value='"+dados[i].id_medida_variavel+"'>"+dados[i].nomemedida+"</option>";
  833 + }
  834 + }
  835 + ins += "</select>";
  836 + $i("editarAtributosMedidasVariavel").innerHTML = ins;
  837 + };
  838 + if(comboMedidas.value !== ""){
  839 + i3GEO.php.listaMedidaVariavel(comboMedidas.value,temp);
  840 + }
  841 + },
  842 + /**
  843 + * Captura os atributos de um elemento do mapa
  844 + * Executa i3GEOF.editorlimites.editarAtributos.pegaDados();
  845 + */
715 captura: function(){ 846 captura: function(){
716 if(!YAHOO.i3GEO.janela.manager.find("editaAtributos")){ 847 if(!YAHOO.i3GEO.janela.manager.find("editaAtributos")){
717 i3GEOF.editorlimites.mudaicone(botao); 848 i3GEOF.editorlimites.mudaicone(botao);
@@ -721,6 +852,11 @@ i3GEOF.editorlimites = { @@ -721,6 +852,11 @@ i3GEOF.editorlimites = {
721 i3GEOF.editorlimites.editarAtributos.y = objposicaocursor.ddy; 852 i3GEOF.editorlimites.editarAtributos.y = objposicaocursor.ddy;
722 i3GEOF.editorlimites.editarAtributos.pegaDados(); 853 i3GEOF.editorlimites.editarAtributos.pegaDados();
723 }, 854 },
  855 + /**
  856 + * Obtem os dados de um elemento de uma regiao
  857 + * Monta o formulario para edicao
  858 + * Executa admin/php/metaestat.php?funcao=listaAtributosMedidaVariavelXY
  859 + */
724 pegaDados: function(){ 860 pegaDados: function(){
725 var p = i3GEO.configura.locaplic+"/admin/php/metaestat.php?funcao=listaAtributosMedidaVariavelXY", 861 var p = i3GEO.configura.locaplic+"/admin/php/metaestat.php?funcao=listaAtributosMedidaVariavelXY",
726 codigo_tipo_regiao = $i("i3geoCartoRegioesEditaveis").value, 862 codigo_tipo_regiao = $i("i3geoCartoRegioesEditaveis").value,
@@ -786,6 +922,9 @@ i3GEOF.editorlimites = { @@ -786,6 +922,9 @@ i3GEOF.editorlimites = {
786 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); 922 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);
787 }, 923 },
788 //TODO redesenhar as camadas que sofrerem alterações em função do salvar ou excluir 924 //TODO redesenhar as camadas que sofrerem alterações em função do salvar ou excluir
  925 + /**
  926 + * Exclui o valor de uma medida de variavel para o componente de uma regiao
  927 + */
789 excluir: function(id){ 928 excluir: function(id){
790 if(i3GEO.login.verificaCookieLogin() === false){ 929 if(i3GEO.login.verificaCookieLogin() === false){
791 i3GEO.janela.tempoMsg("Voc&ecirc; precisa fazer login para usar essa op&ccedil;&atilde;o"); 930 i3GEO.janela.tempoMsg("Voc&ecirc; precisa fazer login para usar essa op&ccedil;&atilde;o");
@@ -805,6 +944,9 @@ i3GEOF.editorlimites = { @@ -805,6 +944,9 @@ i3GEOF.editorlimites = {
805 cpJSON.call(p,"foo",temp,"&codigo_tipo_regiao="+codigo_tipo_regiao+"&identificador_regiao="+identificador_regiao+"&id_medida_variavel="+id_medida_variavel+"&id="+id); 944 cpJSON.call(p,"foo",temp,"&codigo_tipo_regiao="+codigo_tipo_regiao+"&identificador_regiao="+identificador_regiao+"&id_medida_variavel="+id_medida_variavel+"&id="+id);
806 945
807 }, 946 },
  947 + /**
  948 + * Salva os valores digitados
  949 + */
808 salva: function(){ 950 salva: function(){
809 if(i3GEO.login.verificaCookieLogin() === false){ 951 if(i3GEO.login.verificaCookieLogin() === false){
810 i3GEO.janela.tempoMsg("Voc&ecirc; precisa fazer login para usar essa op&ccedil;&atilde;o"); 952 i3GEO.janela.tempoMsg("Voc&ecirc; precisa fazer login para usar essa op&ccedil;&atilde;o");
@@ -863,72 +1005,11 @@ i3GEOF.editorlimites = { @@ -863,72 +1005,11 @@ i3GEOF.editorlimites = {
863 i3GEO.janela.abreAguarde("aguardeSalvaAtributos","Salvando..."); 1005 i3GEO.janela.abreAguarde("aguardeSalvaAtributos","Salvando...");
864 i3GEO.janela.AGUARDEMODAL = false; 1006 i3GEO.janela.AGUARDEMODAL = false;
865 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(";")); 1007 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(";"));
866 - },  
867 - criaJanelaFlutuante: function(html){  
868 - var janela,titulo,cabecalho,minimiza;  
869 - cabecalho = function(){};  
870 - minimiza = function(){  
871 - i3GEO.janela.minimiza("editaAtributos");  
872 - };  
873 - titulo = "Atributos&nbsp;&nbsp;&nbsp;</a>";  
874 - janela = i3GEO.janela.cria(  
875 - "250px",  
876 - "265px",  
877 - "",  
878 - "",  
879 - "",  
880 - titulo,  
881 - "editaAtributos",  
882 - false,  
883 - "hd",  
884 - cabecalho,  
885 - minimiza  
886 - );  
887 - $i("editaAtributos_corpo").style.backgroundColor = "white";  
888 - $i("editaAtributos_corpo").innerHTML = html;  
889 - i3GEO.janela.tempoMsg("Ap&oacute;s escolher a medida da vari&aacute;vel, clique no mapa para escolher o limite geogr&aacute;fico.");  
890 - YAHOO.util.Event.addListener(janela[0].close, "click", i3GEOF.editorlimites.mudaicone);  
891 - },  
892 - html: function(){  
893 - var ins = '' +  
894 - '<p class="paragrafo" ><div id="editarAtributosVariaveis" ></div></p>' +  
895 - '<p class="paragrafo" ><div id="editarAtributosMedidasVariavel" ></div></p>' +  
896 - '<p class="paragrafo" ><div id="editarAtributosRegiao" ></div></p>' +  
897 - '<p class="paragrafo" ><div id="editarAtributosForm" ></div></p>' +  
898 - '';  
899 - return ins;  
900 - },  
901 - comboVariaveis: function(){  
902 - var temp = function(dados){  
903 - var i,n = dados.length, ins = '';  
904 - ins += '<p class="paragrafo" >Escolha uma vari&aacute;vel para editar</p>';  
905 - ins += "<select style='box-shadow:0 1px 5px gray;width:200px' onchange='i3GEOF.editorlimites.editarAtributos.comboMedidasVariavel(this)'><option value=''>---</option>";  
906 - for(i=0;i<n;i++){  
907 - ins += "<option title='"+dados[i].descricao+"' value='"+dados[i].codigo_variavel+"'>"+dados[i].nome+"</option>";  
908 - }  
909 - ins += "</select>";  
910 - $i("editarAtributosVariaveis").innerHTML = ins;  
911 - };  
912 - i3GEO.php.listaVariavel(temp,"i3geo_metaestat");  
913 - },  
914 - comboMedidasVariavel: function(comboMedidas){  
915 - var temp = function(dados){  
916 - var i,n = dados.length, ins = '';  
917 - ins += '<p class="paragrafo" >Escolha uma medida da vari&aacute;vel para editar</p>';  
918 - ins += "<select id='editarAtributosComboMedidas' style='box-shadow:0 1px 5px gray;width:200px' onchange=''><option value=''>---</option>";  
919 - for(i=0;i<n;i++){  
920 - if(dados[i].esquemadb == "i3geo_metaestat" && dados[i].codigo_tipo_regiao == $i("i3geoCartoRegioesEditaveis").value){  
921 - ins += "<option value='"+dados[i].id_medida_variavel+"'>"+dados[i].nomemedida+"</option>";  
922 - }  
923 - }  
924 - ins += "</select>";  
925 - $i("editarAtributosMedidasVariavel").innerHTML = ins;  
926 - };  
927 - if(comboMedidas.value !== ""){  
928 - i3GEO.php.listaMedidaVariavel(comboMedidas.value,temp);  
929 - }  
930 } 1008 }
931 }, 1009 },
  1010 + /**
  1011 + * Abre a janela de ajuda sobre a operacao dos botoes do editor
  1012 + */
932 ajuda: function(){ 1013 ajuda: function(){
933 var titulo,cabecalho,minimiza,html = ""; 1014 var titulo,cabecalho,minimiza,html = "";
934 cabecalho = function(){}; 1015 cabecalho = function(){};