View Issue Details

IDProjectCategoryView StatusLast Update
380RackTablesdefaultpublic2010-11-29 13:19
Reporterinfrastation Assigned Toinfrastation  
PrioritynormalSeverityminorReproducibilityN/A
Status closedResolutionfixed 
Target Version0.19.0Fixed in Version0.19.0 
Summary380: test and commit checkbox helpers patch by Jeroen
Descriptionhttp://www.freelists.org/post/racktables-users/A-question-about-the-interface
TagsNo tags attached.

Activities

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%'>&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 @@
 		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 @@
 	$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;
+	}
+}
Jeroen-checkbox-helpers.patch (7,546 bytes)   
infrastation

infrastation

2010-11-29 13:19

administrator   ~0000195

Tested and committed with minor justifications.

Issue History

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