//
//Utilizado por editormapfile.js
//
/*
Function: editorClasseGeral
Abre o editor de dados gerais de uma classe
*/
function editorClasseGeral(codigoMap,codigoLayer,indiceClasse)
{
core_montaEditor("","450px","500px","","Classe");
var sUrl = "../php/editormapfile.php?funcao=pegaClasseGeral&codigoMap="+codigoMap+"&codigoLayer="+codigoLayer+"&indiceClasse="+indiceClasse;
core_pegaDados("Obtendo dados...",sUrl,"montaEditorClasseGeral");
}
function loadClasseData(node, fnLoadComplete)
{
var sUrl = "../php/editormapfile.php?funcao=listaEstilos&codigoMap="+node.data.codigoMap+"&codigoLayer="+node.data.codigoLayer+"&indiceClasse="+node.data.indiceClasse;
var callback =
{
success: function(oResponse)
{
var dados = YAHOO.lang.JSON.parse(oResponse.responseText);
montaParametrosClasses(node,dados,false);
oResponse.argument.fnLoadComplete();
},
failure: function(oResponse)
{
oResponse.argument.fnLoadComplete();
},
argument:
{
"node": node,
"fnLoadComplete": fnLoadComplete
},
timeout: 25000
};
YAHOO.util.Connect.asyncRequest('GET', sUrl, callback);
}
function conteudoNoClasse(codigoMap,codigoLayer,indice,nome){
var conteudo = " ";
conteudo += " ";
conteudo += " "+indice+" "+nome+"";
var d = {classes:codigoMap+"_"+codigoLayer,html:conteudo,id:codigoMap+"_"+codigoLayer+"_"+indice,codigoMap:codigoMap,codigoLayer:codigoLayer,indiceClasse:indice};
return d;
}
function montaParametrosClasses(no,dados,redesenha)
{
var codigoMap = no.data.codigoMap;
var codigoLayer = no.data.codigoLayer;
var indiceClasse = no.data.indiceClasse;
var conteudo = "";
var tempNode = "";
var tempNodeR = "";
if(!tree.getNodeByProperty("etiquetaClasseGeral",no.data.id))
{
conteudo = " Editar características gerais";
var d = {tipo:"etiquetaClasseGeral",etiquetaClasseGeral:codigoMap+"_"+codigoLayer+"_"+indiceClasse,html:conteudo};
tempNode = new YAHOO.widget.HTMLNode(d, no, false,true);
tempNode.isLeaf = true;
tempNode.enableHighlight = false;
}
if(!tree.getNodeByProperty("etiquetaClasseLabel",no.data.id))
{
conteudo = " Editar toponímia";
var d = {tipo:"etiquetaClasseLabel",etiquetaClasseLabel:codigoMap+"_"+codigoLayer+"_"+indiceClasse,html:conteudo};
tempNode = new YAHOO.widget.HTMLNode(d, no, false,true);
tempNode.isLeaf = true;
tempNode.enableHighlight = false;
}
if(!tree.getNodeByProperty("etiquetaEstilo",no.data.id))
{
var d = {tipo:"etiquetaEstilo",etiquetaEstilo:codigoMap+"_"+codigoLayer+"_"+indiceClasse,html:"Estilos"};
tempNodeR = new YAHOO.widget.HTMLNode(d, no, false,true);
tempNodeR.isLeaf = false;
tempNodeR.enableHighlight = false;
conteudo = " Adicionar um novo";
var d = {tipo:"etiquetaEstilo",etiquetaEstilo:codigoMap+"_"+codigoLayer+"_"+indiceClasse,html:conteudo};
tempNode = new YAHOO.widget.HTMLNode(d, tempNodeR, false,true);
tempNode.isLeaf = true;
tempNode.enableHighlight = false;
}
for (var i=0, j=dados.length; i
*/
function adicionaNovaClasse(codigoMap,codigoLayer,indiceClasse)
{
core_carregando("ativa");
core_carregando(" adicionando uma nova classe");
sUrl = "../php/editormapfile.php?funcao=criarNovaClasse&codigoMap="+codigoMap+"&codigoLayer="+codigoLayer;
var callback =
{
success:function(o)
{
try
{
if(YAHOO.lang.JSON.parse(o.responseText) == "erro")
{
core_carregando("Erro");
setTimeout("core_carregando('desativa')",3000);
}
else
{
var no = tree.getNodeByProperty("etiquetaClasses",codigoMap+"_"+codigoLayer);
var dados = YAHOO.lang.JSON.parse(o.responseText);
var d = conteudoNoClasse(codigoMap,codigoLayer,dados[0].indice,"");
var tempNode = new YAHOO.widget.HTMLNode(d,no, false,true);
tempNode.setDynamicLoad(loadClasseData, iconMode);
tempNode.isLeaf = false;
tempNode.enableHighlight = false;
tree.draw();
core_carregando("desativa");
}
}
catch(e){core_handleFailure(e,o.responseText);}
},
failure:core_handleFailure,
argument: { foo:"foo", bar:"bar" }
};
core_makeRequest(sUrl,callback);
}
/*
Function: classesAuto
Adiciona classes automaticamente
*/
function classesAuto(codigoMap,codigoLayer)
{
function on_editorCheckBoxChange(p_oEvent)
{
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+"&itemExpressao="+itemExpressao+"&itemNome="+itemNome;
var callback2 = {
success:function(o) {
try {
var nos = tree.getNodesByProperty("classes",codigoMap+"_"+codigoLayer);
/*
var dados = YAHOO.lang.JSON.parse(o.responseText);
if(nos){
for (var i=0, j=nos.length; i";
ins += "";
novoel.innerHTML = ins;
document.body.appendChild(novoel);
var editorBotoes = new YAHOO.widget.ButtonGroup({id:"okcancel_checkbox_id", name: "okcancel_checkbox_id", container: "okcancel_checkbox" });
editorBotoes.addButtons([
{ label: "Criar classes", value: "OK", checked: false},
{ label: "Cancela", value: "CANCEL", checked: false }
]);
editorBotoes.on("checkedButtonChange", on_editorCheckBoxChange);
YAHOO.admin.container.panelEditorAutoClasses = new YAHOO.widget.Panel("janela_editor_auto", { fixedcenter:true,close:true,width:"400px", height:"400px",overflow:"auto", visible:false,constraintoviewport:true } );
var fecha = function()
{
try{
YAHOO.admin.container.panelEditorAutoClasses.destroy();
YAHOO.admin.container.panelEditorAutoClasses = null;
}
catch(e){}
};
YAHOO.util.Event.addListener(YAHOO.admin.container.panelEditorAutoClasses.close, "click", fecha);
YAHOO.admin.container.panelEditorAutoClasses.render();
var sUrl = "../php/editormapfile.php?funcao=pegaItensLayer&codigoMap="+codigoMap+"&codigoLayer="+codigoLayer;
var callback = {
success:function(o) {
try {
var itens = core_comboObjeto(YAHOO.lang.JSON.parse(o.responseText).itens,"","","");
var ins = "
Item da tabela de atributos que será utilizado para compor a 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 += "";
$i("editor_bd").innerHTML = ins;
core_carregando("desativa");
}
catch(e){core_handleFailure(o,o.responseText);core_carregando("desativa");}
},
failure:core_handleFailure,
argument: { foo:"foo", bar:"bar" }
};
core_makeRequest(sUrl,callback);
}
YAHOO.admin.container.panelEditorAutoClasses.show();
}
/*
Function: excluirClasse
Exclui uma classe
*/
function excluirClasse(codigoMap,codigoLayer,indiceClasse)
{
var handleYes = function()
{
this.hide();
core_carregando("ativa");
var mensagem = " excluindo "+indiceClasse;
core_carregando(mensagem);
var sUrl = "../php/editormapfile.php?funcao=excluirClasse&codigoMap="+codigoMap+"&codigoLayer="+codigoLayer+"&indiceClasse="+indiceClasse;
var callback =
{
success:function(o)
{
try
{
var no = tree.getNodesByProperty("id",codigoMap+"_"+codigoLayer+"_"+indiceClasse);
tree.removeNode(no[0]);
tree.draw();
core_carregando("desativa");
}
catch(e){core_handleFailure(e,o.responseText);}
},
failure:core_handleFailure,
argument: { foo:"foo", bar:"bar" }
};
core_makeRequest(sUrl,callback);
};
var handleNo = function()
{this.hide();};
var mensagem = "Exclui a classe?";
var largura = "300";
core_dialogoContinua(handleYes,handleNo,mensagem,largura);
}
function montaEditorClasseGeral(dados)
{
var re = /C_/g;
dados.expression = dados.expression.replace(re,"]");
re = /_C/g;
dados.expression = dados.expression.replace(re,"[");
re = /_A_/g;
dados.expression = dados.expression.replace(re,"'");
var param = {
"linhas":[
{ajuda:"Nome da classe para ser mostrada na legenda",
titulo:"Name",id:"name",value:dados.name,tipo:"text"},
{ajuda:"Descrição da classe (mostrada na legenda quando o mouse é sobreposto",
titulo:"Title",id:"title",value:dados.title,tipo:"text"},
{ajuda:"Define o estado atual de exibição da classe. Default ativa a camada permanentemente.",
titulo:"Status",id:"",value:dados.status,tipo:"text",div:""},
{ajuda:"Quatro tipos de expressões são suportadas para definir as classes. Comparação de strings, expressões regulares, expressões lógicas simples e funções de string. Se nenhuma expressão é fornecida, então todas as feições pertencem à classe em questão. Comparação de strings são sensíveis a caracteres e são as mais rápidas e se processar. Não são necessários delimitadores especiais, mas é preciso citar entre aspas strings que contenham caracteres especiais. Como boas práticas, é recomendado citar todas as strings. Expressões regulares são delimitadas utilizando barras (/regex/). Não devem ser usadas aspas. O atributo a ser usado como comparação é definido no parâmetro CLASSITEM do nível do LAYER. Expressões lógicas te permitem construir testes bastante complexos em um ou mais atributos e portanto só são permitas com shapefiles. Expressões lógicas são delimitadas com parênteses “(expressão)”. Nomes de atributos são delimitados por colchetes “[ATRIBUTO]”. Estes nomes são sensíveis a caracteres e devem concordar com os itens no shapefile. Por exemplo: EXPRESSION ([POPULATION] > 50000 AND [LANGUAGE] eq FRENCH ). Os seguintes operadores lógicos são suportados: =, >, <, <=, >=, =, or, and, lt, gt, ge, le, eq, ne, in, ~, ~*. Este nível de complexidade é mais lento a se processar. Existe uma função de string: lenght(). Ela computa o comprimento de uma string. Exemplo: EXPRESSION (length( [NAME_E] ) < 8). Comparação de strings e expressões regulares trabalham a partir do CLASSITEM definido no nível da LAYER. Você pode combinar diferentes tipos de expressões juntamente com diferentes classes de uma camada. ",
titulo:"Expression",id:"expression",value:dados.expression,tipo:"text"},
{ajuda:"Nome completo do arquivo de imagem da legenda para a CLASS. Esta imagem é usada ao construir uma legenda (ou quando requisitando um ícone de legenda via MapScript ou uma aplicação CGI).",
titulo:"Keyimage",id:"keyimage",value:dados.keyimage,tipo:"text"},
{ajuda:"Escala máxima na qual a CLASS é desenhada. A escala é dada como o denominador da fração da escala. Por exemplo, para uma mapa na escala 1:24,000 use 24000.",
titulo:"Maxscale",id:"maxscale",value:dados.maxscale,tipo:"text"},
{ajuda:"Escala mínima na qual a CLASS é desenhada. A escala é dada como o denominador da fração da escala. Por exemplo, para uma mapa na escala 1:24,000 use 24000.",
titulo:"Minscale",id:"minscale",value:dados.minscale,tipo:"text"}
]
};
var ins = "";
if(dados.colunas != "")
{
ins += "
O layer possuí as seguintes colunas na tabela de atributos: ";
ins += dados.colunas+"