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 303 if(!tree.getNodeByProperty("etiquetaClasses",no.data.id))
304 304 {
305 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 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 309 var d = {tipo:"etiquetaClasses",etiquetaClasses:no.data.id,html:conteudo+"<i>&nbsp;Classes:</i>"}
308 310 var tempNode = new YAHOO.widget.HTMLNode(d, no, false,true);
... ... @@ -506,6 +508,83 @@ function adicionaNovaClasse(codigoMap,codigoLayer,indiceClasse)
506 508 };
507 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 588 function adicionaNovoEstilo(codigoMap,codigoLayer,indiceClasse)
510 589 {
511 590 core_carregando("ativa");
... ...
admin/php/editormapfile.php
... ... @@ -47,6 +47,10 @@ switch ($funcao)
47 47 retornaJSON(pegaLayers());
48 48 exit;
49 49 break;
  50 + case "pegaItensLayer":
  51 + retornaJSON(pegaItensLayer());
  52 + exit;
  53 + break;
50 54 case "excluirMapfile":
51 55 if(verificaEditores($editores) == "nao")
52 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 90 retornaJSON(listaClasses());
87 91 exit;
88 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 100 case "criarNovaClasse":
90 101 if(verificaEditores($editores) == "nao")
91 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 298 removeCabecalho($mapfile);
288 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 334 function criarNovaClasse()
291 335 {
292 336 global $codigoMap,$codigoLayer,$locaplic;
... ... @@ -314,6 +358,18 @@ function criarNovoEstilo()
314 358 $dados[] = array("estilo"=>$numestilos);
315 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 373 function pegaLayers()
318 374 {
319 375 global $codigoMap,$locaplic;
... ...