r4875 added an 'Uncheck all' button to the rackspace allocation page (#490)
authorAaron Dummer <aaron@dummer.info>
Sat, 31 Dec 2011 02:18:53 +0000 (02:18 +0000)
committerAaron Dummer <aaron@dummer.info>
Sat, 31 Dec 2011 02:18:53 +0000 (02:18 +0000)
ChangeLog
wwwroot/inc/interface.php
wwwroot/js/racktables.js

index ab8a8d2..da97e0d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -24,6 +24,7 @@
        update: list of virtual object types is now maintained as a Config setting (#488)
        update: when an object is contained within another, display the parent's rackspace allocation info when viewing the child (#432) 
        update: added the 'Slot number' attribute to object types which may be mounted in a blade chassis (#474)
+       update: added an 'Uncheck all' button to the rackspace allocation page (#490)
        update: ability to delete IP prefixes from within its properties tab
        update: adding and deleting forms of IP prefixes are separated
 0.19.10 2011-10-17
index 2541741..877d81c 100644 (file)
@@ -855,9 +855,9 @@ function renderGridForm ($rack_id, $filter, $header, $submit, $state1, $state2)
        echo "<center>\n";
        echo "<table class=rack border=0 cellspacing=0 cellpadding=1>\n";
        echo "<tr><th width='10%'>&nbsp;</th>";
-       echo "<th width='20%'><a href='javascript:;' oncontextmenu=\"blockToggleColumnOfAtoms('${rack_id}', '0', ${rackData['height']}); return false;\" onclick=\"toggleColumnOfAtoms('${rack_id}', '0', ${rackData['height']})\">Front</a></th>";
-       echo "<th width='50%'><a href='javascript:;' oncontextmenu=\"blockToggleColumnOfAtoms('${rack_id}', '1', ${rackData['height']}); return false;\" onclick=\"toggleColumnOfAtoms('${rack_id}', '1', ${rackData['height']})\">Interior</a></th>";
-       echo "<th width='20%'><a href='javascript:;' oncontextmenu=\"blockToggleColumnOfAtoms('${rack_id}', '2', ${rackData['height']}); return false;\" onclick=\"toggleColumnOfAtoms('${rack_id}', '2', ${rackData['height']})\">Back</a></th></tr>\n";
+       echo "<th width='20%'><a href='javascript:;' onclick=\"toggleColumnOfAtoms('${rack_id}', '0', ${rackData['height']})\">Front</a></th>";
+       echo "<th width='50%'><a href='javascript:;' onclick=\"toggleColumnOfAtoms('${rack_id}', '1', ${rackData['height']})\">Interior</a></th>";
+       echo "<th width='20%'><a href='javascript:;' onclick=\"toggleColumnOfAtoms('${rack_id}', '2', ${rackData['height']})\">Back</a></th></tr>\n";
        printOpFormIntro ('updateRack');
        markupAtomGrid ($rackData, $state2);
        renderAtomGrid ($rackData);
@@ -1761,14 +1761,14 @@ function renderRackSpaceForObject ($object_id)
                echo "<center>\n<h2>${rackData['name']}</h2>\n";
                echo "<table class=rack border=0 cellspacing=0 cellpadding=1>\n";
                echo "<tr><th width='10%'>&nbsp;</th>";
-               echo "<th width='20%'><a href='javascript:;' oncontextmenu=\"blockToggleColumnOfAtoms('${rack_id}', '0', ${rackData['height']}); return false;\" onclick=\"toggleColumnOfAtoms('${rack_id}', '0', ${rackData['height']})\">Front</a></th>";
-               echo "<th width='50%'><a href='javascript:;' oncontextmenu=\"blockToggleColumnOfAtoms('${rack_id}', '1', ${rackData['height']}); return false;\" onclick=\"toggleColumnOfAtoms('${rack_id}', '1', ${rackData['height']})\">Interior</a></th>";
-               echo "<th width='20%'><a href='javascript:;' oncontextmenu=\"blockToggleColumnOfAtoms('${rack_id}', '2', ${rackData['height']}); return false;\" onclick=\"toggleColumnOfAtoms('${rack_id}', '2', ${rackData['height']})\">Back</a></th></tr>\n";
+               echo "<th width='20%'><a href='javascript:;' onclick=\"toggleColumnOfAtoms('${rack_id}', '0', ${rackData['height']})\">Front</a></th>";
+               echo "<th width='50%'><a href='javascript:;' onclick=\"toggleColumnOfAtoms('${rack_id}', '1', ${rackData['height']})\">Interior</a></th>";
+               echo "<th width='20%'><a href='javascript:;' onclick=\"toggleColumnOfAtoms('${rack_id}', '2', ${rackData['height']})\">Back</a></th></tr>\n";
                renderAtomGrid ($rackData);
                echo "<tr><th width='10%'>&nbsp;</th>";
-               echo "<th width='20%'><a href='javascript:;' oncontextmenu=\"blockToggleColumnOfAtoms('${rack_id}', '0', ${rackData['height']}); return false;\" onclick=\"toggleColumnOfAtoms('${rack_id}', '0', ${rackData['height']})\">Front</a></th>";
-               echo "<th width='50%'><a href='javascript:;' oncontextmenu=\"blockToggleColumnOfAtoms('${rack_id}', '1', ${rackData['height']}); return false;\" onclick=\"toggleColumnOfAtoms('${rack_id}', '1', ${rackData['height']})\">Interior</a></th>";
-               echo "<th width='20%'><a href='javascript:;' oncontextmenu=\"blockToggleColumnOfAtoms('${rack_id}', '2', ${rackData['height']}); return false;\" onclick=\"toggleColumnOfAtoms('${rack_id}', '2', ${rackData['height']})\">Back</a></th></tr>\n";
+               echo "<th width='20%'><a href='javascript:;' onclick=\"toggleColumnOfAtoms('${rack_id}', '0', ${rackData['height']})\">Front</a></th>";
+               echo "<th width='50%'><a href='javascript:;' onclick=\"toggleColumnOfAtoms('${rack_id}', '1', ${rackData['height']})\">Interior</a></th>";
+               echo "<th width='20%'><a href='javascript:;' onclick=\"toggleColumnOfAtoms('${rack_id}', '2', ${rackData['height']})\">Back</a></th></tr>\n";
                echo "</table>\n<br>\n";
                // Determine zero-u checkbox status.
                // If form has been submitted, use form data, otherwise use DB data.
@@ -1776,7 +1776,8 @@ function renderRackSpaceForObject ($object_id)
                        $checked = isset($_REQUEST['zerou_'.$rack_id]) ? 'checked' : '';
                else
                        $checked = in_array($rack_id, $parentRacks) ? 'checked' : '';
-               echo "Zero-U: <input type=checkbox ${checked} name=zerou_${rack_id} id=zerou_${rack_id}>";
+               echo "Zero-U: <input type=checkbox ${checked} name=zerou_${rack_id} id=zerou_${rack_id}>\n<br><br>\n";
+               echo "<input type='button' onclick='uncheckAll();' value='Uncheck all'>\n";
                echo '</center></td>';
        }
        echo "</tr></table>";
@@ -3596,7 +3597,7 @@ function renderAtomGrid ($data)
        addJS ('js/racktables.js');
        for ($unit_no = $data['height']; $unit_no > 0; $unit_no--)
        {
-               echo "<tr><th><a href='javascript:;' oncontextmenu=\"blockToggleRowOfAtoms('${rack_id}','${unit_no}'); return false;\" onclick=\"toggleRowOfAtoms('${rack_id}','${unit_no}')\">${unit_no}</a></th>";
+               echo "<tr><th><a href='javascript:;' onclick=\"toggleRowOfAtoms('${rack_id}','${unit_no}')\">${unit_no}</a></th>";
                for ($locidx = 0; $locidx < 3; $locidx++)
                {
                        $name = "atom_${rack_id}_${unit_no}_${locidx}";
index a1ec2e0..8e7048e 100644 (file)
@@ -3,6 +3,8 @@
 // Used for (un)checking an entire row of rackspace atoms
 function toggleRowOfAtoms (rackId, rowId) {
        var checkboxId;
+       var toSet;
+       toSet = null;
        for (var i=0; i<=2; i++) {
                checkboxId = "atom_" + rackId + "_" + rowId + "_" + i;
 
@@ -10,17 +12,18 @@ function toggleRowOfAtoms (rackId, rowId) {
                if (document.getElementById(checkboxId).disabled == true) continue;
 
                // Box isn't disabled, toggle it
-               if (document.getElementById(checkboxId).checked == false) {
-                       document.getElementById(checkboxId).checked = true;
-               } else {
-                       document.getElementById(checkboxId).checked = false;
+               if (toSet == null) {
+                       toSet = !document.getElementById(checkboxId).checked;
                }
+               document.getElementById(checkboxId).checked = toSet;
        }
 }
 
 // Used for (un)checking an entire column of rackspace atoms
 function toggleColumnOfAtoms (rackId, columnId, numRows) {
        var checkboxId;
+       var toSet;
+       toSet = null;
        for (var i=1; i<numRows+1; i++) {
                checkboxId = "atom_" + rackId + "_" + i + "_" + columnId;
 
@@ -28,14 +31,27 @@ function toggleColumnOfAtoms (rackId, columnId, numRows) {
                if (document.getElementById(checkboxId).disabled == true) continue;
 
                // Box isn't disabled, toggle it
-               if (document.getElementById(checkboxId).checked == false) {
-                       document.getElementById(checkboxId).checked = true;
-               } else {
-                       document.getElementById(checkboxId).checked = false;
+               if (toSet == null) {
+                       toSet = !document.getElementById(checkboxId).checked;
                }
+               document.getElementById(checkboxId).checked = toSet;
        }
 }
 
+function uncheckAll () {
+    // Get all of the inputs that are in this form
+    var elements = document.getElementsByTagName("input");
+
+    for (var i = 0; i < elements.length; i++) {
+       // Abort if the box is disabled
+       if (elements[i].disabled == true) continue;
+
+       // If it's a checkbox, uncheck it
+        if (elements[i].type == "checkbox")
+            elements[i].checked = false;
+    }
+}
+
 // used by 802.1Q sync form
 function checkColumnOfRadios (prefix, numRows, suffix)
 {
@@ -63,36 +79,6 @@ function checkColumnOfRadios (prefix, numRows, suffix)
        }
 }
 
-function blockToggleRowOfAtoms (rackId, rowId) {
-       var checkboxId;
-       var toSet;
-       toSet = null;
-       for (var i=0; i<=2; i++) {
-               checkboxId = "atom_" + rackId + "_" + rowId + "_" + i;
-               // Abort if the box is disabled
-               if (document.getElementById(checkboxId).disabled == true) continue;
-               if (toSet == null) {
-                       toSet = !document.getElementById(checkboxId).checked;
-               }
-               document.getElementById(checkboxId).checked = toSet;
-       }
-}
-
-function blockToggleColumnOfAtoms (rackId, columnId, numRows) {
-       var checkboxId;
-       var toSet;
-       toSet = null;
-       for (var i=1; i<numRows+1; i++) {
-               checkboxId = "atom_" + rackId + "_" + i + "_" + columnId;
-               // Abort if the box is disabled
-               if (document.getElementById(checkboxId).disabled == true) continue;
-               if (toSet == null) {
-                       toSet = !document.getElementById(checkboxId).checked;
-               }
-               document.getElementById(checkboxId).checked = toSet;
-       }
-}
-
 // used by portinfo.js
 function getQueryString(key, default_)
 {