View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
380 | RackTables | default | public | 2010-11-28 19:03 | 2010-11-29 13:19 |
Reporter | infrastation | Assigned To | infrastation | ||
Priority | normal | Severity | minor | Reproducibility | N/A |
Status | closed | Resolution | fixed | ||
Target Version | 0.19.0 | Fixed in Version | 0.19.0 | ||
Summary | 380: test and commit checkbox helpers patch by Jeroen | ||||
Description | http://www.freelists.org/post/racktables-users/A-question-about-the-interface | ||||
Tags | No tags attached. | ||||
2010-11-28 19:03
|
Jeroen-checkbox-helpers.patch (7,546 bytes)
Index: ChangeLog =================================================================== --- ChangeLog (revision 4023) +++ ChangeLog (working copy) @@ -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: inc/interface.php =================================================================== --- inc/interface.php (revision 4023) +++ inc/interface.php (working copy) @@ -889,9 +889,9 @@ echo "<center>\n"; echo "<table class=rack border=0 cellspacing=0 cellpadding=1>\n"; echo "<tr><th width='10%'> </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 @@ echo "<center>\n<h2>${rackData['name']}</h2>\n"; echo "<table class=rack border=0 cellspacing=0 cellpadding=1>\n"; echo "<tr><th width='10%'> </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%'> </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 @@ $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: js/racktables.js =================================================================== --- js/racktables.js (revision 4023) +++ js/racktables.js (working copy) @@ -141,3 +141,65 @@ tr.show(); }); } + +// Used for (un)checking an entire row of rackspace atoms +function toggleRowOfAtoms (rackId, rowId) { + var checkboxId; + 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; + // Box isn't disabled, toggle it + if (document.getElementById(checkboxId).checked == false) { + document.getElementById(checkboxId).checked = true; + } else { + document.getElementById(checkboxId).checked = false; + } + } +} + +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; + } +} + +// Used for (un)checking an entire column of rackspace atoms +function toggleColumnOfAtoms (rackId, columnId, numRows) { + var checkboxId; + 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; + // Box isn't disabled, toggle it + if (document.getElementById(checkboxId).checked == false) { + document.getElementById(checkboxId).checked = true; + } else { + document.getElementById(checkboxId).checked = false; + } + } +} + +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; + } +} |
Tested and committed with minor justifications. | |
Date Modified | Username | Field | Change |
---|---|---|---|
2010-11-28 19:03 | infrastation | New Issue | |
2010-11-28 19:03 | infrastation | File Added: Jeroen-checkbox-helpers.patch | |
2010-11-28 19:05 | infrastation | Projection | none => tweak |
2010-11-28 19:05 | infrastation | ETA | none => < 1 day |
2010-11-28 19:05 | infrastation | Target Version | => 0.19.0 |
2010-11-29 13:19 | infrastation | Note Added: 0000195 | |
2010-11-29 13:19 | infrastation | Assigned To | => infrastation |
2010-11-29 13:19 | infrastation | Status | new => closed |
2010-11-29 13:19 | infrastation | Resolution | open => fixed |
2010-11-29 13:19 | infrastation | Fixed in Version | => 0.19.0 |