r4024 A patch by Jeroen Benda (#380, JS checkbox helpers)
authorDenis Ovsienko <infrastation@yandex.ru>
Mon, 29 Nov 2010 13:17:22 +0000 (13:17 +0000)
committerDenis Ovsienko <infrastation@yandex.ru>
Mon, 29 Nov 2010 13:17:22 +0000 (13:17 +0000)
renderGridForm(): extend JS bits in table header
renderRackSpaceForObject(): idem
renderAtomGrid(): idem
blockToggleRowOfAtoms(): new JS function
blockToggleColumnOfAtoms(): idem

ChangeLog
inc/interface.php
js/racktables.js

index 8e253ba6a5bca337e3d890e0de3b86b76f30c9dd..6d9fdef6507b3117a2326e335d76de2bb16b96bf 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -3,6 +3,7 @@
        new feature: cable ID column for links (#328, by Giovani Zamboni and Jens Weibler)
        new feature: SNMPv3 support (#379, by Jens Weibler)
        update: cache image files thumbnails and make them JPEGs (#369, by Matt Mills)
+       update: enhance rackspace click helpers (by Jeroen Benda)
 0.18.6
        bugfix: draw administrator's attention to missing LDAP extension (by Matt Mills)
        bugfix: minor issues on LiveCDP/LLDP tab
index c65c2270dc42cc5cc1fea276631b7e7537f57a1b..e5650989b9ae6e87cea89c1090716bbdad5a7109 100644 (file)
@@ -889,9 +889,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:;' 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 "<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";
        printOpFormIntro ('updateRack');
        markupAtomGrid ($rackData, $state2);
        renderAtomGrid ($rackData);
@@ -1990,14 +1990,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:;' 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 "<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";
                renderAtomGrid ($rackData);
                echo "<tr><th width='10%'>&nbsp;</th>";
-               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 "<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 "</table></center>\n";
                echo '</td>';
        }
@@ -4027,7 +4027,7 @@ function renderAtomGrid ($data)
        $rack_id = $data['id'];
        for ($unit_no = $data['height']; $unit_no > 0; $unit_no--)
        {
-               echo "<tr><th><a href='javascript:;' onclick=\"toggleRowOfAtoms('${rack_id}','${unit_no}')\">${unit_no}</a></th>";
+               echo "<tr><th><a href='javascript:;' oncontextmenu=\"blockToggleRowOfAtoms('${rack_id}','${unit_no}'); return false;\" onclick=\"toggleRowOfAtoms('${rack_id}','${unit_no}')\">${unit_no}</a></th>";
                for ($locidx = 0; $locidx < 3; $locidx++)
                {
                        $name = "atom_${rack_id}_${unit_no}_${locidx}";
index b7ef75a51be967b780420d9939ece6ff3266dbe4..449204ae9abebf9b3936581b2e38af0ff8fd7efc 100644 (file)
@@ -141,3 +141,33 @@ function fullTreeMode() {
                tr.show();
        });
 }
+
+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;
+       }
+}