Chameleon    Home  |  Docs  |  Support  |  Bugs  |  CVS  |  Downloads 

MapTools.org

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:

  1. toggleGroup function - is called on clicking the group checkbox. It just selects/deselects the layer checkboxes belonging to the group:
  2. 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;
     }
    }
    
  3. 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";
     }
    }
    
  4. toggleLayer function - is called on clicking the layer checkbox - it sets the group checkbox and "groupname_allLayersChecked" hidden variable:
  5. 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";
       }
     }   
    }
    
  6. 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:
  7. 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

Printer Friendly

 
 

Contact Information

Chameleon Users List