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 += "
Item da tabela de atributos que será utilizado para compor o nome de cada classe
"
+ ins += ""
+ ins += itens
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