From a0838314effbfef2ba2b41a8797f2bb12d932923 Mon Sep 17 00:00:00 2001 From: Edmar Moretti Date: Wed, 25 Nov 2009 02:12:11 +0000 Subject: [PATCH] #260 --- admin/js/editormapfile.js | 21 ++++++++++++++++----- admin/php/editormapfile.php | 4 ++-- classesphp/classe_alteraclasse.php | 35 ++++++++++++++++++++++++++--------- temas/biomashp.map | 40 +++++++++++++++++----------------------- 4 files changed, 61 insertions(+), 39 deletions(-) diff --git a/admin/js/editormapfile.js b/admin/js/editormapfile.js index 7025372..2ac49fe 100644 --- a/admin/js/editormapfile.js +++ b/admin/js/editormapfile.js @@ -502,11 +502,15 @@ function classesAuto(codigoMap,codigoLayer) function on_editorCheckBoxChange(p_oEvent) { var ins = ""; - if(p_oEvent.newValue.get("value") == "OK" && document.getElementById("itens").value != "") + var itemExpressao = document.getElementById("itemExpressao").value; + var itemNome = document.getElementById("itemNome").value; + if(itemNome == "") + {itemNome = itemExpressao;} + if(p_oEvent.newValue.get("value") == "OK" && itemExpressao != "") { core_carregando("ativa"); core_carregando(" gerando as classes"); - var sUrl = "../php/editormapfile.php?funcao=autoClassesLayer&codigoMap="+codigoMap+"&codigoLayer="+codigoLayer+"&item="+document.getElementById("itens").value; + var sUrl = "../php/editormapfile.php?funcao=autoClassesLayer&codigoMap="+codigoMap+"&codigoLayer="+codigoLayer+"&itemExpressao="+itemExpressao+"&itemNome="+itemNome; var callback2 = { success:function(o) @@ -520,6 +524,8 @@ function classesAuto(codigoMap,codigoLayer) var no = tree.getNodeByProperty("id",codigoMap+"_"+codigoLayer) montaParametrosTemas(no,dados) core_carregando("desativa"); + YAHOO.example.container.panelEditorAutoClasses.destroy(); + YAHOO.example.container.panelEditorAutoClasses = null; } catch(e){core_handleFailure(o,o.responseText);core_carregando("desativa");} }, @@ -558,9 +564,14 @@ function classesAuto(codigoMap,codigoLayer) { try { - ins = "

Itens encontrados na tabela de atributos do layer. Escolha um deles para ser utilizado na expressão de seleção de cada classe

" - ins += "" + ins += itens + ins += "

" + ins += "

Item da tabela de atributos que será utilizado para compor o nome de cada classe

" + ins += "

" $i("editor_bd").innerHTML = ins; core_carregando("desativa"); diff --git a/admin/php/editormapfile.php b/admin/php/editormapfile.php index cbb65f2..94527cb 100644 --- a/admin/php/editormapfile.php +++ b/admin/php/editormapfile.php @@ -312,7 +312,7 @@ function criarNovoLayer() } function autoClassesLayer() { - global $codigoMap,$codigoLayer,$item,$locaplic,$dir_tmp; + global $codigoMap,$codigoLayer,$itemExpressao,$itemNome,$locaplic,$dir_tmp; $mapfile = $locaplic."/temas/".$codigoMap.".map"; include_once("../../classesphp/classe_alteraclasse.php"); error_reporting(0); @@ -337,7 +337,7 @@ function autoClassesLayer() } $mapageral->save($nometemp); $m = new Alteraclasse($nometemp,$codigoLayer); - $m->valorunico($item,""); + $m->valorunico($itemExpressao,"",$itemNome); $m->salva(); $mapatemp = ms_newMapObj($nometemp); $mapatemp->save($mapfile); diff --git a/classesphp/classe_alteraclasse.php b/classesphp/classe_alteraclasse.php index f070a11..084c6c5 100644 --- a/classesphp/classe_alteraclasse.php +++ b/classesphp/classe_alteraclasse.php @@ -317,18 +317,35 @@ Parametros: $item - Item da tabela de atributos utilizado para gerar as classes. $ignorar - valor que será ignorado na listagem final + +$itemNome - item que será usado para definir os nomes das classes (por default será igual a $item) */ - function valorunico($item,$ignorar) + function valorunico($item,$ignorar,$itemNome="") { if(!$this->layer){return "erro";} + if($itemNome == "" || $ignorar != "") + {$itemNome = $item;} // pega valores - $valoresu = array_unique(pegaValores($this->mapa,$this->layer,$item,false,$ignorar)); + $vs = pegaValores($this->mapa,$this->layer,$item,false,$ignorar); + if ($item == $itemNome) + {$ns = $vs;} + else + {$ns = pegaValores($this->mapa,$this->layer,$itemNome,false,$ignorar);} + $lista = array(); + for ($i = 0; $i < count($vs); ++$i){ + $temp[$vs[$i]] = $ns[$i]; + } + $valores = array_keys($temp); + $nomes = array(); + foreach($temp as $t) + {$nomes[] = $t;} + //$valoresu = array_unique($v); // processa array com os valores - rsort($valoresu); - reset($valoresu); + //rsort($valoresu); + //reset($valoresu); $nclassexist = $this->layer->numclasses; - if ($nclassexist > count($valoresu)) - {$nclassexist = count($valoresu);} + if ($nclassexist > count($valores)) + {$nclassexist = count($valores);} if($nclassexist == 0) { $temp = ms_newClassObj($this->layer); @@ -345,7 +362,7 @@ $ignorar - valor que será ignorado na listagem final $cl = $this->layer->getClass($i); $cl->set("status",MS_DELETE); } - $c = count($valoresu); + $c = count($valores); for ($i = 0; $i < $c; ++$i) { $classes[$i] = ms_newClassObj($this->layer); @@ -353,10 +370,10 @@ $ignorar - valor que será ignorado na listagem final } for ($i = 0; $i < $c; ++$i) { - $e = "('[".$item."]'eq'".$valoresu[$i]."')"; + $e = "('[".$item."]'eq'".$valores[$i]."')"; $ca = $classes[$i]; $ca->setexpression($e); - $ca->set("name",$valoresu[$i]); + $ca->set("name",$nomes[$i]); $estilo = $classes[$i]->getStyle(0); $ncor = $estilo->color; $ncor->setrgb((mt_rand(0,255)),(mt_rand(0,255)),(mt_rand(0,255))); diff --git a/temas/biomashp.map b/temas/biomashp.map index 9f09b0f..e6abf8e 100644 --- a/temas/biomashp.map +++ b/temas/biomashp.map @@ -18,70 +18,64 @@ MAP TYPE POLYGON UNITS METERS CLASS - NAME "PANTANAL" - EXPRESSION ('[CD_LEGENDA]'eq'PANTANAL') + NAME "CAATINGA" + EXPRESSION ('[ID]'eq'2.00') STYLE ANGLE 360 - COLOR 104 27 127 + COLOR 24 214 111 OPACITY 100 SYMBOL 0 END - TITLE "Isto é um teste de inclusão de um texto descritivo para cada classe da legenda." END CLASS NAME "PAMPA" - EXPRESSION ('[CD_LEGENDA]'eq'PAMPA') + EXPRESSION ('[ID]'eq'5.00') STYLE ANGLE 360 - COLOR 183 42 6 + COLOR 208 90 180 OPACITY 100 SYMBOL 0 END - TITLE "" END CLASS - NAME "MATA ATLANTICA" - EXPRESSION ('[CD_LEGENDA]'eq'MATA ATLANTICA') + NAME "CERRADO" + EXPRESSION ('[ID]'eq'3.00') STYLE ANGLE 360 - COLOR 73 42 248 + COLOR 165 220 169 OPACITY 100 SYMBOL 0 END - TITLE "Isto é um teste de inclusão de um texto descritivo para cada classe da legenda" END CLASS - NAME "CERRADO" - EXPRESSION ('[CD_LEGENDA]'eq'CERRADO') + NAME "PANTANAL" + EXPRESSION ('[ID]'eq'6.00') STYLE ANGLE 360 - COLOR 239 98 76 + COLOR 182 86 205 OPACITY 100 SYMBOL 0 END - TITLE "Isto é um teste de inclusão de um texto descritivo para cada classe da legenda" END CLASS - NAME "CAATINGA" - EXPRESSION ('[CD_LEGENDA]'eq'CAATINGA') + NAME "AMAZONIA" + EXPRESSION ('[ID]'eq'1.00') STYLE ANGLE 360 - COLOR 107 213 213 + COLOR 98 126 232 OPACITY 100 SYMBOL 0 END - TITLE "Isto é um teste de inclusão de um texto descritivo para cada classe da legenda" END CLASS - NAME "AMAZONIA" - EXPRESSION ('[CD_LEGENDA]'eq'AMAZONIA') + NAME "MATA ATLANTICA" + EXPRESSION ('[ID]'eq'4.00') STYLE ANGLE 360 - COLOR 233 166 160 + COLOR 94 171 18 OPACITY 100 SYMBOL 0 END - TITLE "Isto é um teste de inclusão de um texto descritivo para cada classe da legenda" END END -- libgit2 0.21.2