make the "Uncheck all" button rack-specific
authorDenis Ovsienko <denis@ovsienko.info>
Fri, 2 Nov 2018 18:19:34 +0000 (18:19 +0000)
committerDenis Ovsienko <denis@ovsienko.info>
Fri, 2 Nov 2018 20:19:27 +0000 (20:19 +0000)
When the rackspace tab summoned more than one rack for the current
object, there was a button under each rack, but each button would unset
all checkboxes on the page, so make it work more like it looks.

* uncheckAll(): replace with uncheckAllAtoms(), which unchecks all
  checkboxes within the specified rack only
* renderRackSpaceForObject(): provide required rack-specific arguments to
  the JavaScript function

ChangeLog
wwwroot/inc/interface.php
wwwroot/js/racktables.js

index 557df89..1c18cdd 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -9,6 +9,7 @@
        new feature: optional tag descriptions
        new feature: support for HP N.11.78 and IOS 15 (GH #225 by Vasilii Shashkov)
        bugfix: fixup an SQL query in the integrity report
+       bugfix: make the "Uncheck all" button rack-specific
 0.21.1 2017-10-22
        update: improve Percona server support (Mantis#1793)
        bugfix: fix an upgrade bug introduced in 0.21.0 (found by Chris James)
index 2386480..3470aee 100644 (file)
@@ -2277,7 +2277,7 @@ function renderRackSpaceForObject ($object_id)
                        $checked = in_array($rack_id, $parentRacks) ? 'checked' : '';
                $disabled_text = $is_ro ? ' disabled' : '';
                echo "<label for=zerou_${rack_id}>Zero-U:</label> <input type=checkbox ${checked} name=zerou_${rack_id} id=zerou_${rack_id}${disabled_text}>\n<br><br>\n";
-               echo "<input type='button' onclick='uncheckAll();' value='Uncheck all'>\n";
+               echo "<input type='button' onclick='uncheckAllAtoms({$rack_id}, {$rackData['height']});' value='Uncheck all'>\n";
                echo '</center></td>';
        }
        echo "</tr></table>";
index 616e37f..3b318fd 100644 (file)
@@ -38,18 +38,16 @@ function toggleColumnOfAtoms (rackId, columnId, numRows) {
        }
 }
 
-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;
-    }
+// Unchecks all checkboxes in the specified rack.
+function uncheckAllAtoms (rackId, numRows) {
+       var element;
+       for (var rowId=1; rowId<numRows+1; rowId++) {
+               for (var columnId=0; columnId<=2; columnId++) {
+                       element = document.getElementById("atom_" + rackId + "_" + rowId + "_" + columnId);
+                       if (element != null && ! element.disabled)
+                               element.checked = false;
+               }
+       }
 }
 
 // used by portinfo.js