JavaScript Functions
There are couple of javascript functions used. I placed them all in legendtemplate.widget.php file, adding them to the list of javascript functions:
- toggleGroup function - is called on clicking the group checkbox. It just selects/deselects the layer checkboxes belonging to the group:
function toggleGroup(obj)
{
var nLayers = getNumberOfLayers(); //get the number of layers in map file
for(i=0; i<nLayers; i++)
{
var layer_cb = document.getElementById( 'layer-'+obj.id+'-'+i );
if (layer_cb)
layer_cb.checked = obj.checked;
}
}
- toggleLayers function - is called on clicking the group label (it can be called on clicking the folder icon too I suppose). It gets the group name (szName) and:
-
- expands/collapses "szName_layer" div (previously generated by initGroup function)
- sets the "szName_status" hidden variable accordingly, and
- changes the folder image icon accordingly
function toggleLayers(szName)
{
var layer = CWCDHTML_GetLayer(szName + "_layer");
var status = document.getElementsByName(szName + "_status")[0];
var elem = document.getElementById(szName + "_folderImage");
if (layer.display == 'block') {
layer.display = 'none';
elem.src = elem.src.replace('images/leftarrow.gif',
'images/rightarrow.gif');
status.value = "closed";
} else {
layer.display = 'block';
elem.src = elem.src.replace('images/rightarrow.gif',
'images/leftarrow.gif');
status.value = "open";
}
}
- toggleLayer function - is called on clicking the layer checkbox - it sets the group checkbox and "groupname_allLayersChecked" hidden variable:
function toggleLayer(obj)
{
var group = (obj.id.split( "-" ))1;
var group_cb = document.getElementById(group);
var allLayersChecked = document.getElementsByName(group +
"_allLayersChecked")0;
if (group_cb)
{
if (!obj.checked)
{
group_cb.checked = false;
allLayersChecked.value = "FALSE";
return;
} else // now have to check all the layers in this group
{
var nLayers = getNumberOfLayers(); //set to number of layers in map file
for(i=0; i<nLayers; i++)
{
layer_cb = document.getElementById( 'layer-'+group+'-'+i );
if (layer_cb && !layer_cb.checked) //stop if any are unchecked
{
group_cb.checked = false;
allLayersChecked.value = "FALSE";
return;
}
}
group_cb.checked = true; //all checked, can turn on group
allLayersChecked.value = "TRUE";
}
}
}
- initGroup function - is called from legend template file. It gets the values of "szName_status" and "szName_allLayersChecked" hidden variables and places a div in a legend template file accordingly:
function initGroup(szName)
{
var status = document.getElementsByName(szName + "_status")0.value;
var elem = document.getElementById(szName + "_folderImage");
folderClosed = "<div id=\"" + szName + "_layer\"" +
" style=\"display:none\">";
folderOpen = "<div id=\"" + szName + "_layer\"" +
" style=\"display:block\">";
if (status == "closed")
{
document.write(folderClosed);
elem.src = 'images/rightarrow.gif';
} else
{
document.write(folderOpen);
elem.src = 'images/leftarrow.gif';
}
var allLayersChecked = document.getElementsByName(szName +
"_allLayersChecked")0.value;
var group_cb = document.getElementById(szName);
group_cb.checked = (allLayersChecked == "TRUE") ? true : false;
}
Created by: dgambin last modification: Sunday 19 of February, 2006 [22:38:32 UTC] by dgambin
|