Commit 071d6f9f3df3786b54eceeecfab157d6b29ca1b7

Authored by Edmar Moretti
1 parent 6c63e3bb

Ticket #84 Incluir opções de classificação de um layer no sistema de administração

admin/imagens/classificar.gif 0 → 100644

169 Bytes

admin/js/editormapfile.js
@@ -303,6 +303,8 @@ function montaParametrosTemas(no,dados,redesenha) @@ -303,6 +303,8 @@ function montaParametrosTemas(no,dados,redesenha)
303 if(!tree.getNodeByProperty("etiquetaClasses",no.data.id)) 303 if(!tree.getNodeByProperty("etiquetaClasses",no.data.id))
304 { 304 {
305 var conteudo = "<img style=\"position:relative;cursor:pointer;top:2px\" onclick=\"adicionaNovaClasse('"+codigoMap+"','"+codigoLayer+"')\" title='adiciona classe' src=\"../imagens/05.png\" />&nbsp;" 305 var conteudo = "<img style=\"position:relative;cursor:pointer;top:2px\" onclick=\"adicionaNovaClasse('"+codigoMap+"','"+codigoLayer+"')\" title='adiciona classe' src=\"../imagens/05.png\" />&nbsp;"
  306 + conteudo += "<img style=\"position:relative;cursor:pointer;top:2px\" onclick=\"classesAuto('"+codigoMap+"','"+codigoLayer+"')\" title='gerar classes' src=\"../imagens/classificar.gif\" />&nbsp;"
  307 +
306 //conteudo += "<img width='10px' heigth='10px' style=\"position:relative;cursor:pointer;top:0px\" onclick=\"editorClasses('"+codigoMap+"','"+codigoLayer+"')\" title='classes' src=\"../imagens/06.png\" />" 308 //conteudo += "<img width='10px' heigth='10px' style=\"position:relative;cursor:pointer;top:0px\" onclick=\"editorClasses('"+codigoMap+"','"+codigoLayer+"')\" title='classes' src=\"../imagens/06.png\" />"
307 var d = {tipo:"etiquetaClasses",etiquetaClasses:no.data.id,html:conteudo+"<i>&nbsp;Classes:</i>"} 309 var d = {tipo:"etiquetaClasses",etiquetaClasses:no.data.id,html:conteudo+"<i>&nbsp;Classes:</i>"}
308 var tempNode = new YAHOO.widget.HTMLNode(d, no, false,true); 310 var tempNode = new YAHOO.widget.HTMLNode(d, no, false,true);
@@ -506,6 +508,83 @@ function adicionaNovaClasse(codigoMap,codigoLayer,indiceClasse) @@ -506,6 +508,83 @@ function adicionaNovaClasse(codigoMap,codigoLayer,indiceClasse)
506 }; 508 };
507 core_makeRequest(sUrl,callback) 509 core_makeRequest(sUrl,callback)
508 } 510 }
  511 +function classesAuto(codigoMap,codigoLayer)
  512 +{
  513 + function on_editorCheckBoxChange(p_oEvent)
  514 + {
  515 + var ins = "";
  516 + if(p_oEvent.newValue.get("value") == "OK" && document.getElementById("itens").value != "")
  517 + {
  518 + core_carregando("ativa");
  519 + core_carregando(" gerando as classes");
  520 + var sUrl = "../php/editormapfile.php?funcao=autoClassesLayer&codigoMap="+codigoMap+"&codigoLayer="+codigoLayer+"&item="+document.getElementById("itens").value;
  521 + var callback2 =
  522 + {
  523 + success:function(o)
  524 + {
  525 + try
  526 + {
  527 + var dados = YAHOO.lang.JSON.parse(o.responseText)
  528 + var nos = tree.getNodesByProperty("classes",codigoMap+"_"+codigoLayer)
  529 + for (var i=0, j=nos.length; i<j; i++)
  530 + {tree.removeNode(nos[i],false)}
  531 + var no = tree.getNodeByProperty("id",codigoMap+"_"+codigoLayer)
  532 + montaParametrosTemas(no,dados)
  533 + core_carregando("desativa");
  534 + }
  535 + catch(e){core_handleFailure(o,o.responseText);core_carregando("desativa");}
  536 + },
  537 + failure:core_handleFailure,
  538 + argument: { foo:"foo", bar:"bar" }
  539 + };
  540 + core_makeRequest(sUrl,callback2)
  541 + }
  542 + else
  543 + {
  544 + YAHOO.example.container.panelEditorAutoClasses.destroy();
  545 + YAHOO.example.container.panelEditorAutoClasses = null;
  546 + }
  547 + };
  548 + if(!YAHOO.example.container.panelEditorAutoClasses)
  549 + {
  550 + var novoel = document.createElement("div");
  551 + novoel.id = "janela_editor";
  552 + var ins = '<div class="hd">Editor</div>';
  553 + ins += "<div class='bd' style='height:354px;overflow:auto'>";
  554 + ins += "<div id='okcancel_checkbox'></div><div id='editor_bd'></div>";
  555 + novoel.innerHTML = ins;
  556 + document.body.appendChild(novoel);
  557 + var editorBotoes = new YAHOO.widget.ButtonGroup({id:"okcancel_checkbox_id", name: "okcancel_checkbox_id", container: "okcancel_checkbox" });
  558 + editorBotoes.addButtons([
  559 + { label: "Criar classes", value: "OK", checked: false},
  560 + { label: "Cancela", value: "CANCEL", checked: false }
  561 + ]);
  562 + editorBotoes.on("checkedButtonChange", on_editorCheckBoxChange);
  563 + YAHOO.example.container.panelEditorAutoClasses = new YAHOO.widget.Panel("janela_editor", { fixedcenter:true,close:true,width:"400px", height:"400px",overflow:"auto", visible:false,constraintoviewport:true } );
  564 + YAHOO.example.container.panelEditorAutoClasses.render();
  565 + var sUrl = "../php/editormapfile.php?funcao=pegaItensLayer&codigoMap="+codigoMap+"&codigoLayer="+codigoLayer;
  566 + var callback =
  567 + {
  568 + success:function(o)
  569 + {
  570 + try
  571 + {
  572 + ins = "<p>Itens encontrados na tabela de atributos do layer. Escolha um deles para ser utilizado na expressão de seleção de cada classe</p>"
  573 + ins += "<select id='itens' >"
  574 + ins += core_comboObjeto(YAHOO.lang.JSON.parse(o.responseText).itens,"","","");
  575 + ins += "</select></p>"
  576 + $i("editor_bd").innerHTML = ins;
  577 + core_carregando("desativa");
  578 + }
  579 + catch(e){core_handleFailure(o,o.responseText);core_carregando("desativa");}
  580 + },
  581 + failure:core_handleFailure,
  582 + argument: { foo:"foo", bar:"bar" }
  583 + };
  584 + core_makeRequest(sUrl,callback)
  585 + }
  586 + YAHOO.example.container.panelEditorAutoClasses.show();
  587 +}
509 function adicionaNovoEstilo(codigoMap,codigoLayer,indiceClasse) 588 function adicionaNovoEstilo(codigoMap,codigoLayer,indiceClasse)
510 { 589 {
511 core_carregando("ativa"); 590 core_carregando("ativa");
admin/php/editormapfile.php
@@ -47,6 +47,10 @@ switch ($funcao) @@ -47,6 +47,10 @@ switch ($funcao)
47 retornaJSON(pegaLayers()); 47 retornaJSON(pegaLayers());
48 exit; 48 exit;
49 break; 49 break;
  50 + case "pegaItensLayer":
  51 + retornaJSON(pegaItensLayer());
  52 + exit;
  53 + break;
50 case "excluirMapfile": 54 case "excluirMapfile":
51 if(verificaEditores($editores) == "nao") 55 if(verificaEditores($editores) == "nao")
52 {echo "Vc nao e um editor cadastrado. Apenas os editores definidos em i3geo/ms_configura.php podem acessar o sistema de administracao.";exit;} 56 {echo "Vc nao e um editor cadastrado. Apenas os editores definidos em i3geo/ms_configura.php podem acessar o sistema de administracao.";exit;}
@@ -86,6 +90,13 @@ switch ($funcao) @@ -86,6 +90,13 @@ switch ($funcao)
86 retornaJSON(listaClasses()); 90 retornaJSON(listaClasses());
87 exit; 91 exit;
88 break; 92 break;
  93 + case "autoClassesLayer":
  94 + if(verificaEditores($editores) == "nao")
  95 + {echo "Vc nao e um editor cadastrado. Apenas os editores definidos em i3geo/ms_configura.php podem acessar o sistema de administracao.";exit;}
  96 + autoClassesLayer();
  97 + retornaJSON(listaClasses());
  98 + exit;
  99 + break;
89 case "criarNovaClasse": 100 case "criarNovaClasse":
90 if(verificaEditores($editores) == "nao") 101 if(verificaEditores($editores) == "nao")
91 {echo "Vc nao e um editor cadastrado. Apenas os editores definidos em i3geo/ms_configura.php podem acessar o sistema de administracao.";exit;} 102 {echo "Vc nao e um editor cadastrado. Apenas os editores definidos em i3geo/ms_configura.php podem acessar o sistema de administracao.";exit;}
@@ -287,6 +298,39 @@ function criarNovoLayer() @@ -287,6 +298,39 @@ function criarNovoLayer()
287 removeCabecalho($mapfile); 298 removeCabecalho($mapfile);
288 return array("layers"=>(array($nl->name))); 299 return array("layers"=>(array($nl->name)));
289 } 300 }
  301 +function autoClassesLayer()
  302 +{
  303 + global $codigoMap,$codigoLayer,$item,$locaplic,$dir_tmp;
  304 + $mapfile = $locaplic."/temas/".$codigoMap.".map";
  305 + include_once("../../classesphp/classe_alteraclasse.php");
  306 + error_reporting(E_ALL);
  307 + $nometemp = $dir_tmp."/".nomerandomico().".map";
  308 + if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN'))
  309 + {$geral = $locaplic."/aplicmap/geral1windows.map";}
  310 + else
  311 + {$geral = $locaplic."aplicmap/geral1.map";}
  312 + $mapageral = ms_newMapObj($geral);
  313 + $nomestemp = $mapageral->getalllayernames();
  314 + foreach($nomestemp as $l)
  315 + {
  316 + $layertemp = $mapageral->getlayerbyname($l);
  317 + $layertemp->set("status",MS_DELETE);
  318 + }
  319 + $mapatemp = ms_newMapObj($mapfile);
  320 + $nomestemp = $mapatemp->getalllayernames();
  321 + foreach($nomestemp as $l)
  322 + {
  323 + $layertemp = $mapatemp->getlayerbyname($l);
  324 + ms_newLayerObj($mapageral, $layertemp);
  325 + }
  326 + $mapageral->save($nometemp);
  327 + $m = new Alteraclasse($nometemp,$codigoLayer);
  328 + $m->valorunico($item,"");
  329 + $m->salva();
  330 + $mapatemp = ms_newMapObj($nometemp);
  331 + $mapatemp->save($mapfile);
  332 + removeCabecalho($mapfile);
  333 +}
290 function criarNovaClasse() 334 function criarNovaClasse()
291 { 335 {
292 global $codigoMap,$codigoLayer,$locaplic; 336 global $codigoMap,$codigoLayer,$locaplic;
@@ -314,6 +358,18 @@ function criarNovoEstilo() @@ -314,6 +358,18 @@ function criarNovoEstilo()
314 $dados[] = array("estilo"=>$numestilos); 358 $dados[] = array("estilo"=>$numestilos);
315 return $dados; 359 return $dados;
316 } 360 }
  361 +function pegaItensLayer()
  362 +{
  363 + global $codigoMap,$locaplic,$codigoLayer;
  364 + $mapfile = $locaplic."/temas/".$codigoMap.".map";
  365 + $mapa = ms_newMapObj($mapfile);
  366 + $layer = $mapa->getlayerbyname($codigoLayer);
  367 + $layer->open();
  368 + $itens = $layer->getitems();
  369 + $layer->close();
  370 + $dados["itens"] = $itens;
  371 + return $dados;
  372 +}
317 function pegaLayers() 373 function pegaLayers()
318 { 374 {
319 global $codigoMap,$locaplic; 375 global $codigoMap,$locaplic;