Hello Friend!
Yes, I did. Below I include the function code that you need to change within the file "application folder \ widgets \ LayerList \ LayerListView.js". The comments are in Brazilian Portuguese. I added other features in this function, such as display of minimal scale message. If you need any help, just write.
_onCkSelectNodeClick: function(layerInfo, ckSelect, evt)
{
if (layerInfo.isRootLayer())
{
//SE FOR UM NÓ PAI (GURPO)
if (ckSelect.checked)
{
//Marcou o checkbox
layerInfo.setTopLayerVisible(true);
}
else
{
//Desmarcou o checkbox
layerInfo.setTopLayerVisible(false);
}
}
else
{
//SE FOR UM NÓ FILHO (CAMADA)
if (ckSelect.checked)
{
//Marcou o nó filho
if (layerInfo.layerObject)
{
if (layerInfo.layerObject.minScale || layerInfo.layerObject.maxScale)
{
if (layerInfo.layerObject.minScale > 0 || layerInfo.layerObject.maxScale > 0)
{
Number.prototype.format = function(d_len, d_pt, t_pt)
{
var d_len = d_len || 0;
var d_pt = d_pt || ".";
var t_pt = t_pt || ",";
if ((typeof d_len != "number") || (typeof d_pt != "string") || (typeof t_pt != "string"))
{
throw new Error("wrong parameters for method 'String.pad()'.");
}
var integer = "", decimal = "";
var n = new String(this).split(/\./), i_len = n[0].length, i = 0;
if (d_len > 0)
{
n[1] = (typeof n[1] != "undefined") ? n[1].substr(0, d_len) : "";
decimal = d_pt.concat(n[1].pad(d_len, "0", String.PAD_RIGHT));
}
while (i_len > 0)
{
if ((++i % 3 == 1) && (i_len != n[0].length))
{
integer = t_pt.concat(integer);
}
integer = n[0].substr(--i_len, 1).concat(integer);
}
return (integer + decimal);
}
var nEscalaMinima = layerInfo.layerObject.minScale;
var nEscalaMaxima = layerInfo.layerObject.maxScale;
var sMensagem = "A camada " + layerInfo.title + " está visível apenas entre as escalas ";
if (layerInfo.layerObject.minScale > 0)
{
sMensagem += "1/" + nEscalaMinima.format(0, ",", ".");
}
if (layerInfo.layerObject.minScale > 0 && layerInfo.layerObject.maxScale > 0)
{
sMensagem += " e "
}
if (layerInfo.layerObject.maxScale > 0)
{
sMensagem += "1/" + nEscalaMaxima.format(0, ",", ".");
}
//Exibe mensagem informando a escala mínima e máxima para visualização da camada, apenas se o
//mapa não estiver na escala de zoom correta
if (!layerInfo.isCurrentScaleInTheScaleRange())
{
new Message
(
{
titleLabel:"Escala de Visibilidade da Camada",
message: sMensagem,
width: 500
}
);
//Se o mapa não estiver na escala necessária, e o clique do usuário, tenha sido em uma camada de um nó filho, após
//exibir a mensagem para o usuário, desmarca o checkbox que gerou o evento de clique.
//if (!layerInfo.isRootLayer())
//{
query("[class~='visible-checkbox-" + layerInfo.id + "']", this.domNode).forEach
(
function(visibleCheckBoxDomNode)
{
var visibleCheckBox = registry.byNode(visibleCheckBoxDomNode);
//if (layerInfo.isVisible())
//{
//layerInfo.parentLayerInfo.push({"visibility":"true"});
//console.log(layerInfo.parentLayerInfo);
//var cc = layerInfo._oldIsShowInMap;
//console.log(cc);
//visibleCheckBox.check();
//}
//else
//{
visibleCheckBox.uncheck();
layerInfo.setTopLayerVisible(false);
//}
},
this
);
//}
}
else
{
//Nó filho que possui escala e está dentro desta escala.
//Ao clicar em um nó filho, marca o nó pai
//if (!layerInfo.isRootLayer())
//{
query("[class~='visible-checkbox-" + layerInfo.parentLayerInfo.id + "']", this.domNode).forEach
(
function(visibleCheckBoxDomNode)
{
var visibleCheckBox = registry.byNode(visibleCheckBoxDomNode);
//if (!layerInfo.parentLayerInfo.isVisible())
//{
visibleCheckBox.check();
layerInfo.parentLayerInfo.setTopLayerVisible(true);
layerInfo.setTopLayerVisible(true);
//}
},
this
);
//}
}
}
else
{
//Nó filho, que a escala é zero ou menor que zero
//if (!layerInfo.isRootLayer())
//{
query("[class~='visible-checkbox-" + layerInfo.parentLayerInfo.id + "']", this.domNode).forEach
(
function(visibleCheckBoxDomNode)
{
var visibleCheckBox = registry.byNode(visibleCheckBoxDomNode);
//if (!layerInfo.parentLayerInfo.isVisible())
//{
visibleCheckBox.check();
layerInfo.parentLayerInfo.setTopLayerVisible(true);
layerInfo.setTopLayerVisible(true);
//}
},
this
);
//}
}
}
else
{
//Nó filho, que não possui escala definida.
//if (!layerInfo.isRootLayer())
//{
query("[class~='visible-checkbox-" + layerInfo.parentLayerInfo.id + "']", this.domNode).forEach
(
function(visibleCheckBoxDomNode)
{
var visibleCheckBox = registry.byNode(visibleCheckBoxDomNode);
//if (!layerInfo.parentLayerInfo.isVisible())
//{
visibleCheckBox.check();
layerInfo.parentLayerInfo.setTopLayerVisible(true);
layerInfo.setTopLayerVisible(true);
//}
},
this
);
//}
}
}
}
else
{
//Desmarcou o nó filho
layerInfo.setTopLayerVisible(false);
}
}
//if (ckSelect.checked)
//{
//layerInfo.setTopLayerVisible(true);
//}
//else
//{
//layerInfo.setTopLayerVisible(false);
//}
evt.stopPropagation();
}
Hug,
Gilberto.