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 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 8 Arquivo:
5 9  
6 10 i3geo/ferramentas/metaestat/editorlimites.js
... ... @@ -41,24 +45,44 @@ Funções de edição vetorial utilizadas pelo editor de
41 45 */
42 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 51 aguarde: "",
  52 + /**
  53 + * Guarda o Id do DIV que recebera o conteudo HTML do editor
  54 + */
48 55 iddiv: "",
  56 + /**
  57 + * Objeto criado com new google.maps.drawing.DrawingManager
  58 + */
49 59 drawingManager: "",
50 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 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 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 87 inicia: function(iddiv){
64 88 var i,n,ics;
... ... @@ -125,19 +149,21 @@ i3GEOF.editorlimites = {
125 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 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 168 atualizaCamadasMetaestat: function(){
143 169 var p = i3GEO.configura.locaplic+"/ferramentas/metaestat/analise.php?funcao=LISTACAMADASMETAESTAT&g_sid="+i3GEO.configura.sid,
... ... @@ -149,15 +175,11 @@ i3GEOF.editorlimites = {
149 175 };
150 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 183 html:function(){
162 184 var ins = '<div style=margin-left:5px >' +
163 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 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 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 198 ativaFoco: function(){
179 199 i3GEO.util.mudaCursor(i3GEO.configura.cursores,"crosshair",i3GEO.Interface.IDMAPA,i3GEO.configura.locaplic);
180 200 i3GEO.barraDeBotoes.ativaIcone("pan");
181 201 i3GEOF.editorlimites.mudaicone();
182 202 i3GEO.Interface.googlemaps.recalcPar();
183 203 },
  204 + /**
  205 + * Marca uma figura como selecionada
  206 + * @param objeto shape que sera marcado
  207 + */
184 208 setSelection: function(shape){
185   - //i3GEOF.editorlimites.clearSelection();
186   - //i3GEOF.editorlimites.selectedShape = shape;
187 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 215 clearSelection: function(){
190 216 var i,
191 217 n = i3GEOF.editorlimites.shapes.length;
... ... @@ -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 228 deleteSelectedShape: function(naoconfirma) {
199 229 if(!naoconfirma){
200 230 naoconfirma = false;
... ... @@ -221,6 +251,10 @@ i3GEOF.editorlimites = {
221 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 258 selectedShapes: function() {
225 259 var i,s = [],
226 260 n = i3GEOF.editorlimites.shapes.length;
... ... @@ -231,6 +265,10 @@ i3GEOF.editorlimites = {
231 265 }
232 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 272 getCoordenadas: function(){
235 273 var coordenadas = [],
236 274 lista = [],
... ... @@ -256,41 +294,24 @@ i3GEOF.editorlimites = {
256 294 p = {"tipo":tipo,"coordenadas":lista};
257 295 return p;
258 296 },
  297 + /**
  298 + * Converte um objeto shape em uma string WKT
  299 + * @param shape
  300 + */
259 301 toWKT: function(obj){
260 302 var wkt = new Wkt.Wkt();
261 303 wkt.fromObject(obj);
262 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 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 315 ativa: function(botao){
295 316 i3GEOF.editorlimites.mudaicone(botao);
296 317 i3GEO.util.mudaCursor(i3GEO.configura.cursores,"pointer",i3GEO.Interface.IDMAPA,i3GEO.configura.locaplic);
... ... @@ -299,6 +320,11 @@ i3GEOF.editorlimites = {
299 320 },
300 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 328 captura: function(){
303 329 var temp,tema="",regiao="",p,par,
304 330 aguarde = $i("janelaEditorLimites_imagemCabecalho");
... ... @@ -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 401 comboRegiaoEditavel: function(codigo_tipo_regiao){
404 402 if(!codigo_tipo_regiao){
405 403 codigo_tipo_regiao = "";
... ... @@ -425,6 +423,10 @@ i3GEOF.editorlimites = {
425 423 };
426 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 430 comboRegiaoEditavelOnchange: function(combo){
429 431 if(combo.value === ""){
430 432 return;
... ... @@ -440,6 +442,57 @@ i3GEOF.editorlimites = {
440 442 };
441 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 496 adicionaPoligonos: function(obj,tema,colunaid,valorid,colunanome,valornome){
444 497 if(!tema){
445 498 tema = $i("i3geoCartoRegioesEditaveis").value;
... ... @@ -456,25 +509,12 @@ i3GEOF.editorlimites = {
456 509 if(!valornome){
457 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 518 map: i3GeoMap,
479 519 fillColor: '#ffff00',
480 520 fillOpacity: .5,
... ... @@ -492,35 +532,10 @@ i3GEOF.editorlimites = {
492 532 i3GEOF.editorlimites.setSelection(pol);
493 533 });
494 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 539 if (obj.type === 'polygon' || obj.type === 'linestring'){
525 540 pol = new google.maps.Polygon({
526 541 paths: obj.getPaths(),
... ... @@ -544,7 +559,14 @@ i3GEOF.editorlimites = {
544 559 return;
545 560 }
546 561 },
  562 + /**
  563 + * Salva um poligono no banco de dados
  564 + */
547 565 salvaLimite: {
  566 + /**
  567 + * Inicia a ferramenta definindo as funcoes dos botoes
  568 + * Executa i3GEOF.editorlimites.salvaLimite.criaJanelaFlutuante
  569 + */
548 570 inicia: function(){
549 571 if(i3GEO.login.verificaCookieLogin() === false){
550 572 i3GEO.janela.tempoMsg("Voc&ecirc; precisa fazer login para usar essa op&ccedil;&atilde;o");
... ... @@ -587,7 +609,9 @@ i3GEOF.editorlimites = {
587 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 615 html:function(colunaIdElemento,valorIdElemento,colunaNomeElemento,valorNomeElemento){
592 616 var ins = '' +
593 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 630 '<br><br><input id=i3GEOFmetaestati3GEOF.editorlimitesBotao3 type="button" value="Excluir pol&iacute;gono" />';
607 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 637 criaJanelaFlutuante: function(html){
610 638 var titulo,cabecalho,minimiza,janela;
611 639 cabecalho = function(){};
... ... @@ -630,6 +658,11 @@ i3GEOF.editorlimites = {
630 658 $i("salvaLimite_corpo").innerHTML = html;
631 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 666 gravaDados: function(comwkt){
634 667 if(i3GEO.login.verificaCookieLogin() === false){
635 668 i3GEO.janela.tempoMsg("Voc&ecirc; precisa fazer login para usar essa op&ccedil;&atilde;o");
... ... @@ -663,6 +696,10 @@ i3GEOF.editorlimites = {
663 696 p = i3GEO.configura.locaplic+"/admin/php/metaestat.php?funcao=mantemDadosRegiao&tipo=";
664 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 703 excluiPoligono: function(){
667 704 if(i3GEO.login.verificaCookieLogin() === false){
668 705 i3GEO.janela.tempoMsg("Voc&ecirc; precisa fazer login para usar essa op&ccedil;&atilde;o");
... ... @@ -685,10 +722,20 @@ i3GEOF.editorlimites = {
685 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 728 editarAtributos: {
689 729 aliascolunas: "", //guarda os nomes das colunas e seus aliases para permitir a criacao de novos registros
690 730 x: "",
691 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 739 ativa: function(botao){
693 740 if($i("i3geoCartoRegioesEditaveis").value == ""){
694 741 i3GEO.janela.tempoMsg("Escolha uma regiao");
... ... @@ -706,12 +753,96 @@ i3GEOF.editorlimites = {
706 753 i3GEOF.editorlimites.editarAtributos.comboVariaveis();
707 754 }
708 755 },
  756 + /**
  757 + * Fecha a janela de edicao
  758 + */
709 759 desativa: function(){
710 760 var janela = YAHOO.i3GEO.janela.manager.find("editaAtributos");
711 761 if(janela){
712 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 846 captura: function(){
716 847 if(!YAHOO.i3GEO.janela.manager.find("editaAtributos")){
717 848 i3GEOF.editorlimites.mudaicone(botao);
... ... @@ -721,6 +852,11 @@ i3GEOF.editorlimites = {
721 852 i3GEOF.editorlimites.editarAtributos.y = objposicaocursor.ddy;
722 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 860 pegaDados: function(){
725 861 var p = i3GEO.configura.locaplic+"/admin/php/metaestat.php?funcao=listaAtributosMedidaVariavelXY",
726 862 codigo_tipo_regiao = $i("i3geoCartoRegioesEditaveis").value,
... ... @@ -786,6 +922,9 @@ i3GEOF.editorlimites = {
786 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 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 928 excluir: function(id){
790 929 if(i3GEO.login.verificaCookieLogin() === false){
791 930 i3GEO.janela.tempoMsg("Voc&ecirc; precisa fazer login para usar essa op&ccedil;&atilde;o");
... ... @@ -805,6 +944,9 @@ i3GEOF.editorlimites = {
805 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 950 salva: function(){
809 951 if(i3GEO.login.verificaCookieLogin() === false){
810 952 i3GEO.janela.tempoMsg("Voc&ecirc; precisa fazer login para usar essa op&ccedil;&atilde;o");
... ... @@ -863,72 +1005,11 @@ i3GEOF.editorlimites = {
863 1005 i3GEO.janela.abreAguarde("aguardeSalvaAtributos","Salvando...");
864 1006 i3GEO.janela.AGUARDEMODAL = false;
865 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 1013 ajuda: function(){
933 1014 var titulo,cabecalho,minimiza,html = "";
934 1015 cabecalho = function(){};
... ...