From db0bbf15ab1386241a7db51be2a800e339289e32 Mon Sep 17 00:00:00 2001 From: Edmar Moretti Date: Mon, 10 Jan 2011 21:21:07 +0000 Subject: [PATCH] Inclusão de opção para alteração da cor de uma classe de um tema, diretamente na opção "legenda", existente nas propriedades de um tema, na árvore de camadas --- admin/admin.db | Bin 70656 -> 0 bytes aplicmap/legenda2.htm | 2 +- classesjs/classe_arvoredecamadas.js | 33 +++++++++++++++++++++++++++++++++ classesjs/classe_php.js | 10 ++++++++++ classesjs/classe_tema.js | 24 ++++++++++++++++++++++++ classesphp/classe_selecao.php | 29 +++++++---------------------- classesphp/mapa_controle.php | 3 +-- ferramentas/legenda/index.js.php | 5 +---- ferramentas/selecao/index.js.php | 2 +- temas/teste.map | 23 +++++++++++++++++++++++ 10 files changed, 101 insertions(+), 30 deletions(-) create mode 100644 temas/teste.map diff --git a/admin/admin.db b/admin/admin.db index 3d5dac7..bc56cd2 100644 Binary files a/admin/admin.db and b/admin/admin.db differ diff --git a/aplicmap/legenda2.htm b/aplicmap/legenda2.htm index 024e73d..3881ed5 100644 --- a/aplicmap/legenda2.htm +++ b/aplicmap/legenda2.htm @@ -1 +1 @@ -[leg_layer_html opt_flag=1][if name=TEMA oper=neq value=NAO][/if][/leg_layer_html][leg_class_html][if name=CLASSE oper=neq value=NAO]
 [leg_class_name]
[/if][/leg_class_html] \ No newline at end of file +[leg_layer_html opt_flag=1][if name=TEMA oper=neq value=NAO][/if][/leg_layer_html][leg_class_html][if name=CLASSE oper=neq value=NAO]
 [leg_class_name]
[/if][/leg_class_html] \ No newline at end of file diff --git a/classesjs/classe_arvoredecamadas.js b/classesjs/classe_arvoredecamadas.js index d00cdf7..3435db7 100644 --- a/classesjs/classe_arvoredecamadas.js +++ b/classesjs/classe_arvoredecamadas.js @@ -1007,6 +1007,39 @@ i3GEO.arvoreDeCamadas = { } }, /* + Function: escolheCorClasse + + Abre uma janela para escolher uma nova cor para o símbolo da classe. + + A chamada dessa função é definida em aplicmap/legenda2.htm + + Parametro: + + leg {Object input} - objeto do tipo INPUT com o id da classe e o id do tema + */ + escolheCorClasse: function (leg){ + //cria um elemento que receberá a escolha da cor e que irá disparar a função de mudança de cor da classe + var obj,novoel; + leg = leg.parentNode.getElementsByTagName("input")[0]; + if(!$i("tempinputcorclasse")){ + novoel = document.createElement("input"); + novoel.id = "tempinputcorclasse"; + novoel.style.display="none"; + novoel.alt = "objeto criado para guardar dados da funcao escolohercorclasse"; + novoel.onchange = ""; + document.body.appendChild(novoel); + } + obj = $i("tempinputcorclasse"); + obj.value = ""; + obj.tema = leg.name; + obj.idclasse = leg.value; + obj.onchange = function(){ + var obj = $i("tempinputcorclasse"); + i3GEO.tema.alteracorclasse(obj.tema,obj.idclasse,obj.value); + }; + i3GEO.util.abreCor("","tempinputcorclasse"); + }, + /* Function: inverteStatusClasse Liga ou desliga uma classe da legenda. diff --git a/classesjs/classe_php.js b/classesjs/classe_php.js index 5022471..3ceb63c 100644 --- a/classesjs/classe_php.js +++ b/classesjs/classe_php.js @@ -746,6 +746,16 @@ i3GEO.php = { cpJSON.call(p,"invertestatuslegenda",funcao); }, /* + Function: aplicaCorClasseTema + + + */ + aplicaCorClasseTema: function(funcao,idtema,idclasse,rgb){ + i3GEO.php.verifica(); + var p = i3GEO.configura.locaplic+"/classesphp/mapa_controle.php?funcao=alteraclasse&opcao=alteracor&tema="+idtema+"&idclasse="+idclasse+"&cor="+rgb+"&g_sid="+i3GEO.configura.sid; + cpJSON.call(p,"aplicaCorClasseTema",funcao); + }, + /* Function: mudatransp diff --git a/classesjs/classe_tema.js b/classesjs/classe_tema.js index 10fbbe1..5448348 100644 --- a/classesjs/classe_tema.js +++ b/classesjs/classe_tema.js @@ -260,6 +260,30 @@ i3GEO.tema = { i3GEO.janela.abreAguarde("i3GEO.atualiza",$trad("o1")); //i3GEO.contadorAtualiza++; i3GEO.php.invertestatuslegenda(temp,idtema); + }, + /* + Function: alteracorclasse + + Altera a cor de uma classe de um tema + + Parametros: + + idtema - código do tema + + idclasse - id da classe + + rgb - nova cor (r,g,b) + */ + alteracorclasse: function(idtema,idclasse,rgb){ + if(typeof(console) !== 'undefined'){console.info("i3GEO.tema.alteracorclasse()");} + i3GEO.mapa.ativaTema(idtema); + var temp = function(){ + i3GEO.atualiza(); + i3GEO.Interface.atualizaTema("",idtema); + i3GEO.arvoreDeCamadas.atualizaLegenda(idtema); + }; + i3GEO.janela.abreAguarde("i3GEO.atualiza",$trad("o1")); + i3GEO.php.aplicaCorClasseTema(temp,idtema,idclasse,rgb); }, /* Function: mudanome diff --git a/classesphp/classe_selecao.php b/classesphp/classe_selecao.php index a364f97..a090d2e 100644 --- a/classesphp/classe_selecao.php +++ b/classesphp/classe_selecao.php @@ -84,7 +84,6 @@ $ext - extensão geográfica do mapa function __construct($map_file,$tema="",$ext="") { - //error_reporting(E_ALL); $this->qyfile = str_replace(".map",".qy",$map_file); if($tema != "") {$this->qyfileTema = dirname($map_file)."/".$tema.".php";} @@ -137,7 +136,7 @@ $ys - lista de coordenadas y separadas por virgula if ($tipo == "novo") { $this->selecaoLimpa(); - $tipo = "adiciona" + $tipo = "adiciona"; } if ($tipo == "limpa") {return($this->selecaoLimpa());} @@ -204,7 +203,7 @@ $tipo - Tipo de operação adiciona|retira|inverte|limpa|novo if ($tipo == "novo") { $this->selecaoLimpa(); - $tipo = "adiciona" + $tipo = "adiciona"; } if ($tipo == "limpa") {return($this->selecaoLimpa());} @@ -376,7 +375,7 @@ $valor - Valor. if ($tipo == "novo") { $this->selecaoLimpa(); - $tipo = "adiciona" + $tipo = "adiciona"; } if ($tipo == "limpa") {return($this->selecaoLimpa());} @@ -457,7 +456,7 @@ $valor - Valor. if ($tipo == "novo") { $this->selecaoLimpa(); - $tipo = "adiciona" + $tipo = "adiciona"; } if ($tipo == "limpa") {return($this->selecaoLimpa());} @@ -524,27 +523,13 @@ $tipo - Tipo de operação adiciona|retira|inverte|limpa|novo if ($tipo == "novo") { $this->selecaoLimpa(); - $tipo = "adiciona" + $tipo = "adiciona"; } if ($tipo == "limpa") {return ($this->selecaoLimpa());} if ($tipo == "inverte") {return ($this->selecaoInverte());} if(!$this->layer){return "erro";} - /* - $shp_atual = array(); - if (file_exists($this->qyfile)) - {$this->mapa->loadquery($this->qyfile);} - $indxlayer = $this->layer->index; - $res_count = $this->layer->getNumresults(); - $shp_atual = array(); - for ($i = 0; $i < $res_count;++$i) - { - $rc = $this->layer->getResult($i); - $shp_atual[] = $rc->shapeindex; - } - $this->mapa->freequery($indxlayer); - */ $shp_atual = array(); if($this->qyfileTema != "" && file_exists($this->qyfileTema)) {$shp_atual = $this->unserializeQ($this->qyfileTema);} @@ -794,7 +779,7 @@ $tipo - Tipo de operação adiciona|retira|inverte|limpa|novo if ($tipo == "novo") { $this->selecaoLimpa(); - $tipo = "adiciona" + $tipo = "adiciona"; } if(!$this->layer){return "erro";} $this->layer->set("tolerance",0); @@ -853,7 +838,7 @@ $ext - coordenadas separadas por espaços no estilo xmin ymin xmax ymax if ($tipo == "novo") { $this->selecaoLimpa(); - $tipo = "adiciona" + $tipo = "adiciona"; } if(!$this->layer){return "erro";} $this->layer->set("tolerance",0); diff --git a/classesphp/mapa_controle.php b/classesphp/mapa_controle.php index 7377daa..baa2fd3 100644 --- a/classesphp/mapa_controle.php +++ b/classesphp/mapa_controle.php @@ -2617,7 +2617,7 @@ Seleciona elementos utilizando um retângulo. $temas = explode(",",$tema); foreach($temas as $tema) { - $m = new Selecao($map_file,$tema); + $m = new Selecao($map_file,$tema,$ext); if($interface == "googlemaps") { $projMapa = $m->mapa->getProjection(); @@ -2625,7 +2625,6 @@ Seleciona elementos utilizando um retângulo. } $ok[] = $m->selecaoBOX($tipo,$ext); } - redesenhaMapa(); break; diff --git a/ferramentas/legenda/index.js.php b/ferramentas/legenda/index.js.php index ffa5376..729654a 100644 --- a/ferramentas/legenda/index.js.php +++ b/ferramentas/legenda/index.js.php @@ -494,10 +494,7 @@ i3GEOF.legenda = { i3GEOF.legenda.aguarde.visibility = "hidden"; i3GEOF.legenda.mostralegenda(); }; - var p = i3GEO.configura.locaplic+"/classesphp/mapa_controle.php?g_sid="+i3GEO.configura.sid+"&funcao=alteraclasse&opcao=alteracor&tema="+i3GEOF.legenda.tema+"&idclasse="+id+"&cor="+$i("tempCor").value, - cp = new cpaint(); - cp.set_response_type("JSON"); - cp.call(p,"",retorna); + i3GEO.php.aplicaCorClasseTema(retorna,i3GEOF.legenda.tema,id,$i("tempCor").value); }, /* Function: mudaLegenda diff --git a/ferramentas/selecao/index.js.php b/ferramentas/selecao/index.js.php index 88d5d6c..e8300a2 100644 --- a/ferramentas/selecao/index.js.php +++ b/ferramentas/selecao/index.js.php @@ -143,7 +143,7 @@ i3GEOF.selecao = { ' ' + ' ' + ' ' + - '  ' + ' ' + ' ' + ' ' + diff --git a/temas/teste.map b/temas/teste.map new file mode 100644 index 0000000..8ba85cc --- /dev/null +++ b/temas/teste.map @@ -0,0 +1,23 @@ +MAP +SYMBOLSET ../symbols/simbolos.sym +FONTSET "../symbols/fontes.txt" +LAYER + NAME "teste" + TYPE RASTER + STATUS ON + CONNECTION "http://172.30.24.8:8080/geoserver/wms?" + + CONNECTIONTYPE WMS + METADATA + "TEMA" "Campo Quadra" + "extensao" "-44 -23 -39 -21" + "aplicaextensao" "SIM" + "wms_srs" "EPSG:4326" + "wms_name" "IBGE:REBIO_campo_quadra" + "wms_server_version" "1.1.1" + "wms_format" "image/png" + "legendawms" "http://172.30.24.8:8080/geoserver/wms?service=WMS&service=wms&request=getlegendgraphic&version=1.1.1&service=wms&layer=IBGE:REBIO_campo_quadra&format=image/png" + "wms_feature_info_type" "text/html" + END + END +END \ No newline at end of file -- libgit2 0.21.2