|  |  |  | @@ -35,14 +35,14 @@ function loadNodesPage() { | 
		
	
		
			
				|  |  |  |  | 	// If groups are not already loaded | 
		
	
		
			
				|  |  |  |  | 	if (!$('#groups').length) { | 
		
	
		
			
				|  |  |  |  | 		// Create a groups division | 
		
	
		
			
				|  |  |  |  | 		groupDIV = $('<div id="groups"></div>'); | 
		
	
		
			
				|  |  |  |  | 		nodesDIV = $('<div id="nodes"></div>'); | 
		
	
		
			
				|  |  |  |  | 		$('#content').append(groupDIV); | 
		
	
		
			
				|  |  |  |  | 		$('#content').append(nodesDIV); | 
		
	
		
			
				|  |  |  |  | 		var groups = $('<div id="groups"></div>'); | 
		
	
		
			
				|  |  |  |  | 		var nodes = $('<div id="nodes"></div>'); | 
		
	
		
			
				|  |  |  |  | 		$('#content').append(groups); | 
		
	
		
			
				|  |  |  |  | 		$('#content').append(nodes); | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | 		// Create loader | 
		
	
		
			
				|  |  |  |  | 		var loader = createLoader(); | 
		
	
		
			
				|  |  |  |  | 		groupDIV.append(loader); | 
		
	
		
			
				|  |  |  |  | 		groups.append(loader); | 
		
	
		
			
				|  |  |  |  | 		 | 
		
	
		
			
				|  |  |  |  | 		// Create info bar | 
		
	
		
			
				|  |  |  |  | 		var info = createInfoBar('Select a group to view its nodes.'); | 
		
	
	
		
			
				
					
					|  |  |  | @@ -89,14 +89,15 @@ function loadGroups(data) { | 
		
	
		
			
				|  |  |  |  | 	// Remove loader | 
		
	
		
			
				|  |  |  |  | 	$('#groups').find('img').remove(); | 
		
	
		
			
				|  |  |  |  | 	 | 
		
	
		
			
				|  |  |  |  | 	// Save group in cookie | 
		
	
		
			
				|  |  |  |  | 	var groups = data.rsp; | 
		
	
		
			
				|  |  |  |  | 	setGroupsCookies(data); | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | 	// Create a list of groups | 
		
	
		
			
				|  |  |  |  | 	var ul = $('<ul></ul>'); | 
		
	
		
			
				|  |  |  |  | 	var item = $('<li id="root"><h3>Groups</h3></li>'); | 
		
	
		
			
				|  |  |  |  | 	ul.append(item); | 
		
	
		
			
				|  |  |  |  | 	var subUL = $('<ul></ul>'); | 
		
	
		
			
				|  |  |  |  | 	ul.append(item); | 
		
	
		
			
				|  |  |  |  | 	item.append(subUL); | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | 	// Create a link for each group | 
		
	
	
		
			
				
					
					|  |  |  | @@ -193,7 +194,7 @@ function loadGroups(data) { | 
		
	
		
			
				|  |  |  |  | 		var addNodeForm = $('<div class="form"></div>'); | 
		
	
		
			
				|  |  |  |  | 		addNodeForm.append(info); | 
		
	
		
			
				|  |  |  |  | 		addNodeForm.append('<div><label for="mgt">Hardware management:</label>' | 
		
	
		
			
				|  |  |  |  |     			+ '<select id="mgt" name="mgt">' | 
		
	
		
			
				|  |  |  |  |     		+ '<select id="mgt" name="mgt">' | 
		
	
		
			
				|  |  |  |  |     			+ '<option>ipmi</option>'  | 
		
	
		
			
				|  |  |  |  |     			+ '<option>blade</option>' | 
		
	
		
			
				|  |  |  |  |     			+ '<option>hmc</option>'  | 
		
	
	
		
			
				
					
					|  |  |  | @@ -337,8 +338,7 @@ function loadNodes(data) { | 
		
	
		
			
				|  |  |  |  | 	// Variable to send command and request node status | 
		
	
		
			
				|  |  |  |  | 	var getNodeStatus = true; | 
		
	
		
			
				|  |  |  |  | 	 | 
		
	
		
			
				|  |  |  |  | 	// Clear cookie containing list of nodes where | 
		
	
		
			
				|  |  |  |  | 	// their attributes need to be updated | 
		
	
		
			
				|  |  |  |  | 	// Clear cookie containing list of nodes where their attributes need to be updated | 
		
	
		
			
				|  |  |  |  | 	$.cookie('nodes2update', ''); | 
		
	
		
			
				|  |  |  |  | 	// Clear hash table containing node attributes | 
		
	
		
			
				|  |  |  |  | 	origAttrs = ''; | 
		
	
	
		
			
				
					
					|  |  |  | @@ -387,7 +387,6 @@ function loadNodes(data) { | 
		
	
		
			
				|  |  |  |  | 	sorted.sort(); | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | 	// Add column for check box, node, ping, power, and comments | 
		
	
		
			
				|  |  |  |  | 	// Power status for nodes will not be requested until user clicks on power link | 
		
	
		
			
				|  |  |  |  | 	sorted.unshift('<input type="checkbox" onclick="selectAllCheckbox(event, $(this))">',  | 
		
	
		
			
				|  |  |  |  | 		'node',  | 
		
	
		
			
				|  |  |  |  | 		'<span><a>status</a></span><img src="images/loader.gif"></img>',  | 
		
	
	
		
			
				
					
					|  |  |  | @@ -395,7 +394,7 @@ function loadNodes(data) { | 
		
	
		
			
				|  |  |  |  | 		'comments'); | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | 	// Create a datatable | 
		
	
		
			
				|  |  |  |  | 	var dTable = new DataTable('nodesDataTable'); | 
		
	
		
			
				|  |  |  |  | 	var dTable = new DataTable('nodesDatatable'); | 
		
	
		
			
				|  |  |  |  | 	dTable.init(sorted); | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | 	// Go through each node | 
		
	
	
		
			
				
					
					|  |  |  | @@ -403,11 +402,9 @@ function loadNodes(data) { | 
		
	
		
			
				|  |  |  |  | 		// Create a row | 
		
	
		
			
				|  |  |  |  | 		var row = new Array(); | 
		
	
		
			
				|  |  |  |  | 		 | 
		
	
		
			
				|  |  |  |  | 		// Create a check box | 
		
	
		
			
				|  |  |  |  | 		// Create a check box, node link, and get node status | 
		
	
		
			
				|  |  |  |  | 		var checkBx = '<input type="checkbox" name="' + node + '"/>'; | 
		
	
		
			
				|  |  |  |  | 		// Open node onclick | 
		
	
		
			
				|  |  |  |  | 		var nodeLink = $('<a class="node" id="' + node + '">' + node + '</a>').bind('click', loadNode); | 
		
	
		
			
				|  |  |  |  | 		// Get node status | 
		
	
		
			
				|  |  |  |  | 		var status = attrs[node]['status'].replace('sshd', 'ping'); | 
		
	
		
			
				|  |  |  |  | 		 | 
		
	
		
			
				|  |  |  |  | 		// Push in checkbox, node link, status, and power | 
		
	
	
		
			
				
					
					|  |  |  | @@ -433,7 +430,6 @@ function loadNodes(data) { | 
		
	
		
			
				|  |  |  |  | 		 | 
		
	
		
			
				|  |  |  |  | 		// Create tooltip | 
		
	
		
			
				|  |  |  |  | 		var tip = createCommentsToolTip(comment); | 
		
	
		
			
				|  |  |  |  | 		// Create container to put icon and comment in | 
		
	
		
			
				|  |  |  |  | 		var col = $('<span></span>').append(icon); | 
		
	
		
			
				|  |  |  |  | 		col.append(tip); | 
		
	
		
			
				|  |  |  |  | 		row.push(col); | 
		
	
	
		
			
				
					
					|  |  |  | @@ -461,7 +457,7 @@ function loadNodes(data) { | 
		
	
		
			
				|  |  |  |  |     			} else { | 
		
	
		
			
				|  |  |  |  |     				row.push(''); | 
		
	
		
			
				|  |  |  |  |     			} | 
		
	
		
			
				|  |  |  |  | 			} // End of if | 
		
	
		
			
				|  |  |  |  | 			} | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | 		// Add the row to the table | 
		
	
	
		
			
				
					
					|  |  |  | @@ -488,7 +484,7 @@ function loadNodes(data) { | 
		
	
		
			
				|  |  |  |  | 	// Power on | 
		
	
		
			
				|  |  |  |  | 	var powerOnLnk = $('<a>Power on</a>'); | 
		
	
		
			
				|  |  |  |  | 	powerOnLnk.bind('click', function(event) { | 
		
	
		
			
				|  |  |  |  | 		var tgtNodes = getNodesChecked('nodesDataTable'); | 
		
	
		
			
				|  |  |  |  | 		var tgtNodes = getNodesChecked('nodesDatatable'); | 
		
	
		
			
				|  |  |  |  | 		if (tgtNodes) { | 
		
	
		
			
				|  |  |  |  | 			powerNode(tgtNodes, 'on'); | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
	
		
			
				
					
					|  |  |  | @@ -497,7 +493,7 @@ function loadNodes(data) { | 
		
	
		
			
				|  |  |  |  | 	// Power off | 
		
	
		
			
				|  |  |  |  | 	var powerOffLnk = $('<a>Power off</a>'); | 
		
	
		
			
				|  |  |  |  | 	powerOffLnk.bind('click', function(event) { | 
		
	
		
			
				|  |  |  |  | 		var tgtNodes = getNodesChecked('nodesDataTable'); | 
		
	
		
			
				|  |  |  |  | 		var tgtNodes = getNodesChecked('nodesDatatable'); | 
		
	
		
			
				|  |  |  |  | 		if (tgtNodes) { | 
		
	
		
			
				|  |  |  |  | 			powerNode(tgtNodes, 'off'); | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
	
		
			
				
					
					|  |  |  | @@ -506,7 +502,7 @@ function loadNodes(data) { | 
		
	
		
			
				|  |  |  |  | 	// Clone | 
		
	
		
			
				|  |  |  |  | 	var cloneLnk = $('<a>Clone</a>'); | 
		
	
		
			
				|  |  |  |  | 	cloneLnk.bind('click', function(event) { | 
		
	
		
			
				|  |  |  |  | 		var tgtNodes = getNodesChecked('nodesDataTable').split(','); | 
		
	
		
			
				|  |  |  |  | 		var tgtNodes = getNodesChecked('nodesDatatable').split(','); | 
		
	
		
			
				|  |  |  |  | 		for (var i in tgtNodes) { | 
		
	
		
			
				|  |  |  |  | 			var mgt = getNodeAttr(tgtNodes[i], 'mgt'); | 
		
	
		
			
				|  |  |  |  | 			 | 
		
	
	
		
			
				
					
					|  |  |  | @@ -540,7 +536,7 @@ function loadNodes(data) { | 
		
	
		
			
				|  |  |  |  | 	// Delete | 
		
	
		
			
				|  |  |  |  | 	var deleteLnk = $('<a>Delete</a>'); | 
		
	
		
			
				|  |  |  |  | 	deleteLnk.bind('click', function(event) { | 
		
	
		
			
				|  |  |  |  | 		var tgtNodes = getNodesChecked('nodesDataTable'); | 
		
	
		
			
				|  |  |  |  | 		var tgtNodes = getNodesChecked('nodesDatatable'); | 
		
	
		
			
				|  |  |  |  | 		if (tgtNodes) { | 
		
	
		
			
				|  |  |  |  | 			loadDeletePage(tgtNodes); | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
	
		
			
				
					
					|  |  |  | @@ -549,7 +545,7 @@ function loadNodes(data) { | 
		
	
		
			
				|  |  |  |  | 	// Unlock | 
		
	
		
			
				|  |  |  |  | 	var unlockLnk = $('<a>Unlock</a>'); | 
		
	
		
			
				|  |  |  |  | 	unlockLnk.bind('click', function(event) { | 
		
	
		
			
				|  |  |  |  | 		var tgtNodes = getNodesChecked('nodesDataTable'); | 
		
	
		
			
				|  |  |  |  | 		var tgtNodes = getNodesChecked('nodesDatatable'); | 
		
	
		
			
				|  |  |  |  | 		if (tgtNodes) { | 
		
	
		
			
				|  |  |  |  | 			loadUnlockPage(tgtNodes); | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
	
		
			
				
					
					|  |  |  | @@ -558,7 +554,7 @@ function loadNodes(data) { | 
		
	
		
			
				|  |  |  |  | 	// Run script | 
		
	
		
			
				|  |  |  |  | 	var scriptLnk = $('<a>Run script</a>'); | 
		
	
		
			
				|  |  |  |  | 	scriptLnk.bind('click', function(event) { | 
		
	
		
			
				|  |  |  |  | 		var tgtNodes = getNodesChecked('nodesDataTable'); | 
		
	
		
			
				|  |  |  |  | 		var tgtNodes = getNodesChecked('nodesDatatable'); | 
		
	
		
			
				|  |  |  |  | 		if (tgtNodes) { | 
		
	
		
			
				|  |  |  |  | 			loadScriptPage(tgtNodes); | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
	
		
			
				
					
					|  |  |  | @@ -567,7 +563,7 @@ function loadNodes(data) { | 
		
	
		
			
				|  |  |  |  | 	// Update | 
		
	
		
			
				|  |  |  |  | 	var updateLnk = $('<a>Update</a>'); | 
		
	
		
			
				|  |  |  |  | 	updateLnk.bind('click', function(event) { | 
		
	
		
			
				|  |  |  |  | 		var tgtNodes = getNodesChecked('nodesDataTable'); | 
		
	
		
			
				|  |  |  |  | 		var tgtNodes = getNodesChecked('nodesDatatable'); | 
		
	
		
			
				|  |  |  |  | 		if (tgtNodes) { | 
		
	
		
			
				|  |  |  |  | 			loadUpdatenodePage(tgtNodes); | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
	
		
			
				
					
					|  |  |  | @@ -576,7 +572,7 @@ function loadNodes(data) { | 
		
	
		
			
				|  |  |  |  | 	// Set boot state | 
		
	
		
			
				|  |  |  |  | 	var setBootStateLnk = $('<a>Set boot state</a>'); | 
		
	
		
			
				|  |  |  |  | 	setBootStateLnk.bind('click', function(event) { | 
		
	
		
			
				|  |  |  |  | 		var tgtNodes = getNodesChecked('nodesDataTable'); | 
		
	
		
			
				|  |  |  |  | 		var tgtNodes = getNodesChecked('nodesDatatable'); | 
		
	
		
			
				|  |  |  |  | 		if (tgtNodes) { | 
		
	
		
			
				|  |  |  |  | 			loadNodesetPage(tgtNodes); | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
	
		
			
				
					
					|  |  |  | @@ -586,7 +582,7 @@ function loadNodes(data) { | 
		
	
		
			
				|  |  |  |  | 	// Boot to network | 
		
	
		
			
				|  |  |  |  | 	var boot2NetworkLnk = $('<a>Boot to network</a>'); | 
		
	
		
			
				|  |  |  |  | 	boot2NetworkLnk.bind('click', function(event) { | 
		
	
		
			
				|  |  |  |  | 		var tgtNodes = getNodesChecked('nodesDataTable'); | 
		
	
		
			
				|  |  |  |  | 		var tgtNodes = getNodesChecked('nodesDatatable'); | 
		
	
		
			
				|  |  |  |  | 		if (tgtNodes) { | 
		
	
		
			
				|  |  |  |  | 			loadNetbootPage(tgtNodes); | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
	
		
			
				
					
					|  |  |  | @@ -595,7 +591,7 @@ function loadNodes(data) { | 
		
	
		
			
				|  |  |  |  | 	// Remote console | 
		
	
		
			
				|  |  |  |  | 	var rcons = $('<a>Open console</a>'); | 
		
	
		
			
				|  |  |  |  | 	rcons.bind('click', function(event){ | 
		
	
		
			
				|  |  |  |  | 		var tgtNodes = getNodesChecked('nodesDataTable'); | 
		
	
		
			
				|  |  |  |  | 		var tgtNodes = getNodesChecked('nodesDatatable'); | 
		
	
		
			
				|  |  |  |  | 		if (tgtNodes) { | 
		
	
		
			
				|  |  |  |  | 			loadRconsPage(tgtNodes); | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
	
		
			
				
					
					|  |  |  | @@ -604,19 +600,18 @@ function loadNodes(data) { | 
		
	
		
			
				|  |  |  |  | 	// Edit properties | 
		
	
		
			
				|  |  |  |  | 	var editProps = $('<a>Edit properties</a>'); | 
		
	
		
			
				|  |  |  |  | 	editProps.bind('click', function(event){ | 
		
	
		
			
				|  |  |  |  | 		var tgtNodes = getNodesChecked('nodesDataTable').split(','); | 
		
	
		
			
				|  |  |  |  | 		var tgtNodes = getNodesChecked('nodesDatatable').split(','); | 
		
	
		
			
				|  |  |  |  | 		for (var i in tgtNodes) { | 
		
	
		
			
				|  |  |  |  | 			loadEditPropsPage(tgtNodes[i]); | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
		
			
				|  |  |  |  | 	}); | 
		
	
		
			
				|  |  |  |  | 	 | 
		
	
		
			
				|  |  |  |  | 	var advancedLnk = $('<a>Advanced</a>'); | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | 	// Power actions | 
		
	
		
			
				|  |  |  |  | 	var powerActions = [ powerOnLnk, powerOffLnk ]; | 
		
	
		
			
				|  |  |  |  | 	var powerActionMenu = createMenu(powerActions); | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | 	// Advanced actions | 
		
	
		
			
				|  |  |  |  | 	var advancedLnk = $('<a>Advanced</a>'); | 
		
	
		
			
				|  |  |  |  | 	var advancedActions; | 
		
	
		
			
				|  |  |  |  | 	if ('compute' == group) { | 
		
	
		
			
				|  |  |  |  | 		advancedActions = [ boot2NetworkLnk, scriptLnk, setBootStateLnk, updateLnk, rcons, editProps ]; | 
		
	
	
		
			
				
					
					|  |  |  | @@ -634,11 +629,15 @@ function loadNodes(data) { | 
		
	
		
			
				|  |  |  |  | 	actionMenu.superfish(); | 
		
	
		
			
				|  |  |  |  | 	actionsDIV.append(actionMenu); | 
		
	
		
			
				|  |  |  |  | 	actionBar.append(actionsDIV); | 
		
	
		
			
				|  |  |  |  | 	$('#nodesTab').append(actionBar); | 
		
	
		
			
				|  |  |  |  | 	 | 
		
	
		
			
				|  |  |  |  | 	// Insert table | 
		
	
		
			
				|  |  |  |  | 	// Insert action bar and nodes datatable | 
		
	
		
			
				|  |  |  |  | 	$('#nodesTab').append(actionBar); | 
		
	
		
			
				|  |  |  |  | 	$('#nodesTab').append(dTable.object()); | 
		
	
		
			
				|  |  |  |  | 	 | 
		
	
		
			
				|  |  |  |  | 	/** | 
		
	
		
			
				|  |  |  |  | 	 * Create menu to save and undo table changes | 
		
	
		
			
				|  |  |  |  | 	 */ | 
		
	
		
			
				|  |  |  |  | 	 | 
		
	
		
			
				|  |  |  |  | 	// Save changes | 
		
	
		
			
				|  |  |  |  | 	var saveLnk = $('<a>Save</a>'); | 
		
	
		
			
				|  |  |  |  | 	saveLnk.bind('click', function(event){ | 
		
	
	
		
			
				
					
					|  |  |  | @@ -650,36 +649,37 @@ function loadNodes(data) { | 
		
	
		
			
				|  |  |  |  | 	undoLnk.bind('click', function(event){ | 
		
	
		
			
				|  |  |  |  | 		restoreNodeAttrs(); | 
		
	
		
			
				|  |  |  |  | 	}); | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | 	/** | 
		
	
		
			
				|  |  |  |  | 	 * Create menu to save and undo table changes | 
		
	
		
			
				|  |  |  |  | 	 */ | 
		
	
		
			
				|  |  |  |  | 	 | 
		
	
		
			
				|  |  |  |  | 	// It will be hidden until a change is made | 
		
	
		
			
				|  |  |  |  | 	var tableActionsMenu = createMenu([saveLnk, undoLnk]).hide(); | 
		
	
		
			
				|  |  |  |  | 	tableActionsMenu.css('margin-left', '100px'); | 
		
	
		
			
				|  |  |  |  | 	actionsDIV.append(tableActionsMenu); | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | 	// Turn table into a datatable | 
		
	
		
			
				|  |  |  |  | 	var myDataTable = $('#nodesDataTable').dataTable({ | 
		
	
		
			
				|  |  |  |  | 	var myDataTable = $('#nodesDatatable').dataTable({ | 
		
	
		
			
				|  |  |  |  | 		'iDisplayLength': 50 | 
		
	
		
			
				|  |  |  |  | 	}); | 
		
	
		
			
				|  |  |  |  | 	 | 
		
	
		
			
				|  |  |  |  | 	/** | 
		
	
		
			
				|  |  |  |  | 	 * Change how datatable behaves  | 
		
	
		
			
				|  |  |  |  | 	 */ | 
		
	
		
			
				|  |  |  |  | 	 | 
		
	
		
			
				|  |  |  |  | 	// Do not sort ping, power, and comment column | 
		
	
		
			
				|  |  |  |  | 	var pingCol = $('#nodesDataTable thead tr th').eq(2); | 
		
	
		
			
				|  |  |  |  | 	var powerCol = $('#nodesDataTable thead tr th').eq(3); | 
		
	
		
			
				|  |  |  |  | 	var commentCol = $('#nodesDataTable thead tr th').eq(4); | 
		
	
		
			
				|  |  |  |  | 	var pingCol = $('#nodesDatatable thead tr th').eq(2); | 
		
	
		
			
				|  |  |  |  | 	var powerCol = $('#nodesDatatable thead tr th').eq(3); | 
		
	
		
			
				|  |  |  |  | 	var commentCol = $('#nodesDatatable thead tr th').eq(4); | 
		
	
		
			
				|  |  |  |  | 	pingCol.unbind('click'); | 
		
	
		
			
				|  |  |  |  | 	powerCol.unbind('click'); | 
		
	
		
			
				|  |  |  |  | 	commentCol.unbind('click'); | 
		
	
		
			
				|  |  |  |  | 	 | 
		
	
		
			
				|  |  |  |  | 	// Create enough space for loader to be displayed | 
		
	
		
			
				|  |  |  |  | 	$('#nodesDataTable tbody tr td:nth-child(3)').css('min-width', '60px'); | 
		
	
		
			
				|  |  |  |  | 	$('#nodesDataTable tbody tr td:nth-child(4)').css('min-width', '60px'); | 
		
	
		
			
				|  |  |  |  | 	$('#nodesDatatable tbody tr td:nth-child(3)').css('min-width', '60px'); | 
		
	
		
			
				|  |  |  |  | 	$('#nodesDatatable tbody tr td:nth-child(4)').css('min-width', '60px'); | 
		
	
		
			
				|  |  |  |  | 	 | 
		
	
		
			
				|  |  |  |  | 	// Center align power, ping, and comments | 
		
	
		
			
				|  |  |  |  | 	$('#nodesDataTable tbody tr td:nth-child(3)').css('text-align', 'center'); | 
		
	
		
			
				|  |  |  |  | 	$('#nodesDataTable tbody tr td:nth-child(4)').css('text-align', 'center'); | 
		
	
		
			
				|  |  |  |  | 	$('#nodesDataTable tbody tr td:nth-child(5)').css('text-align', 'center'); | 
		
	
		
			
				|  |  |  |  | 	$('#nodesDatatable tbody tr td:nth-child(3)').css('text-align', 'center'); | 
		
	
		
			
				|  |  |  |  | 	$('#nodesDatatable tbody tr td:nth-child(4)').css('text-align', 'center'); | 
		
	
		
			
				|  |  |  |  | 	$('#nodesDatatable tbody tr td:nth-child(5)').css('text-align', 'center'); | 
		
	
		
			
				|  |  |  |  | 	 | 
		
	
		
			
				|  |  |  |  | 	// Instead refresh the node status and power status | 
		
	
		
			
				|  |  |  |  | 	pingCol.find('span a').bind('click', function(event) { | 
		
	
	
		
			
				
					
					|  |  |  | @@ -716,8 +716,9 @@ function loadNodes(data) { | 
		
	
		
			
				|  |  |  |  | 	/** | 
		
	
		
			
				|  |  |  |  | 	 * Enable editable columns | 
		
	
		
			
				|  |  |  |  | 	 */ | 
		
	
		
			
				|  |  |  |  | 	 | 
		
	
		
			
				|  |  |  |  | 	// Do not make 1st, 2nd, 3rd, 4th, or 5th column editable | 
		
	
		
			
				|  |  |  |  | 	$('#nodesDataTable td:not(td:nth-child(1),td:nth-child(2),td:nth-child(3),td:nth-child(4),td:nth-child(5))').editable( | 
		
	
		
			
				|  |  |  |  | 	$('#nodesDatatable td:not(td:nth-child(1),td:nth-child(2),td:nth-child(3),td:nth-child(4),td:nth-child(5))').editable( | 
		
	
		
			
				|  |  |  |  | 		function(value, settings) {			 | 
		
	
		
			
				|  |  |  |  | 			// Change text color to red | 
		
	
		
			
				|  |  |  |  | 			$(this).css('color', 'red'); | 
		
	
	
		
			
				
					
					|  |  |  | @@ -726,7 +727,7 @@ function loadNodes(data) { | 
		
	
		
			
				|  |  |  |  | 			var colPos = this.cellIndex; | 
		
	
		
			
				|  |  |  |  | 						 | 
		
	
		
			
				|  |  |  |  | 			// Get row index | 
		
	
		
			
				|  |  |  |  | 			var dTable = $('#nodesDataTable').dataTable(); | 
		
	
		
			
				|  |  |  |  | 			var dTable = $('#nodesDatatable').dataTable(); | 
		
	
		
			
				|  |  |  |  | 			var rowPos = dTable.fnGetPosition(this.parentNode); | 
		
	
		
			
				|  |  |  |  | 			 | 
		
	
		
			
				|  |  |  |  | 			// Update datatable | 
		
	
	
		
			
				
					
					|  |  |  | @@ -743,8 +744,7 @@ function loadNodes(data) { | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | 			return (value); | 
		
	
		
			
				|  |  |  |  | 		}, { | 
		
	
		
			
				|  |  |  |  | 			onblur : 'submit', 	// Clicking outside editable area submits | 
		
	
		
			
				|  |  |  |  | 								// changes | 
		
	
		
			
				|  |  |  |  | 			onblur : 'submit', 	// Clicking outside editable area submits changes | 
		
	
		
			
				|  |  |  |  | 			type : 'textarea', | 
		
	
		
			
				|  |  |  |  | 			placeholder: ' ', | 
		
	
		
			
				|  |  |  |  | 			height : '30px' 	// The height of the text area | 
		
	
	
		
			
				
					
					|  |  |  | @@ -771,7 +771,7 @@ function loadNodes(data) { | 
		
	
		
			
				|  |  |  |  |     	}); | 
		
	
		
			
				|  |  |  |  | 	} else { | 
		
	
		
			
				|  |  |  |  | 		// Hide status loader | 
		
	
		
			
				|  |  |  |  | 		var statCol = $('#nodesDataTable thead tr th').eq(2); | 
		
	
		
			
				|  |  |  |  | 		var statCol = $('#nodesDatatable thead tr th').eq(2); | 
		
	
		
			
				|  |  |  |  | 		statCol.find('img').hide(); | 
		
	
		
			
				|  |  |  |  | 	} | 
		
	
		
			
				|  |  |  |  | 	 | 
		
	
	
		
			
				
					
					|  |  |  | @@ -839,7 +839,7 @@ function loadNodes(data) { | 
		
	
		
			
				|  |  |  |  |  */ | 
		
	
		
			
				|  |  |  |  | function loadPowerStatus(data) { | 
		
	
		
			
				|  |  |  |  | 	// Get datatable | 
		
	
		
			
				|  |  |  |  | 	var dTable = $('#nodesDataTable').dataTable(); | 
		
	
		
			
				|  |  |  |  | 	var dTable = $('#nodesDatatable').dataTable(); | 
		
	
		
			
				|  |  |  |  | 	var power = data.rsp; | 
		
	
		
			
				|  |  |  |  | 	var rowPos, node, status, args; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
	
		
			
				
					
					|  |  |  | @@ -849,14 +849,14 @@ function loadPowerStatus(data) { | 
		
	
		
			
				|  |  |  |  | 		node = jQuery.trim(args[0]); | 
		
	
		
			
				|  |  |  |  | 		status = jQuery.trim(args[1]); | 
		
	
		
			
				|  |  |  |  | 		// Get the row containing the node | 
		
	
		
			
				|  |  |  |  | 		rowPos = findRowIndexUsingCol(node, '#nodesDataTable', 1); | 
		
	
		
			
				|  |  |  |  | 		rowPos = findRowIndexUsingCol(node, '#nodesDatatable', 1); | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | 		// Update the power status column | 
		
	
		
			
				|  |  |  |  | 		dTable.fnUpdate(status, rowPos, 3); | 
		
	
		
			
				|  |  |  |  | 	} | 
		
	
		
			
				|  |  |  |  | 	 | 
		
	
		
			
				|  |  |  |  | 	// Hide power loader | 
		
	
		
			
				|  |  |  |  | 	var powerCol = $('#nodesDataTable thead tr th').eq(3); | 
		
	
		
			
				|  |  |  |  | 	var powerCol = $('#nodesDatatable thead tr th').eq(3); | 
		
	
		
			
				|  |  |  |  | 	powerCol.find('img').hide(); | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  |  | 
		
	
	
		
			
				
					
					|  |  |  | @@ -869,7 +869,7 @@ function loadPowerStatus(data) { | 
		
	
		
			
				|  |  |  |  |  */ | 
		
	
		
			
				|  |  |  |  | function refreshPowerStatus(group) { | 
		
	
		
			
				|  |  |  |  | 	// Show power loader | 
		
	
		
			
				|  |  |  |  | 	var powerCol = $('#nodesDataTable thead tr th').eq(3); | 
		
	
		
			
				|  |  |  |  | 	var powerCol = $('#nodesDatatable thead tr th').eq(3); | 
		
	
		
			
				|  |  |  |  | 	powerCol.find('img').show(); | 
		
	
		
			
				|  |  |  |  | 	 | 
		
	
		
			
				|  |  |  |  | 	// Get the power status | 
		
	
	
		
			
				
					
					|  |  |  | @@ -896,25 +896,26 @@ function refreshPowerStatus(group) { | 
		
	
		
			
				|  |  |  |  |  */ | 
		
	
		
			
				|  |  |  |  | function loadNodeStatus(data) { | 
		
	
		
			
				|  |  |  |  | 	// Get data table | 
		
	
		
			
				|  |  |  |  | 	var dTable = $('#nodesDataTable').dataTable(); | 
		
	
		
			
				|  |  |  |  | 	var dTable = $('#nodesDatatable').dataTable(); | 
		
	
		
			
				|  |  |  |  | 	var rsp = data.rsp; | 
		
	
		
			
				|  |  |  |  | 	var args, rowPos, node, status; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | 	// Get all nodes within the datatable | 
		
	
		
			
				|  |  |  |  | 	for (var i in rsp) { | 
		
	
		
			
				|  |  |  |  | 		args = rsp[i].split(':'); | 
		
	
		
			
				|  |  |  |  | 		 | 
		
	
		
			
				|  |  |  |  | 		// args[0] = node and args[1] = status | 
		
	
		
			
				|  |  |  |  | 		node = jQuery.trim(args[0]); | 
		
	
		
			
				|  |  |  |  | 		status = jQuery.trim(args[1]).replace('sshd', 'ping'); | 
		
	
		
			
				|  |  |  |  | 		// Get the row containing the node | 
		
	
		
			
				|  |  |  |  | 		rowPos = findRowIndexUsingCol(node, '#nodesDataTable', 1); | 
		
	
		
			
				|  |  |  |  | 		rowPos = findRowIndexUsingCol(node, '#nodesDatatable', 1); | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | 		// Update the ping status column | 
		
	
		
			
				|  |  |  |  | 		dTable.fnUpdate(status, rowPos, 2); | 
		
	
		
			
				|  |  |  |  | 	} | 
		
	
		
			
				|  |  |  |  | 	 | 
		
	
		
			
				|  |  |  |  | 	// Hide status loader | 
		
	
		
			
				|  |  |  |  | 	var statCol = $('#nodesDataTable thead tr th').eq(2); | 
		
	
		
			
				|  |  |  |  | 	var statCol = $('#nodesDatatable thead tr th').eq(2); | 
		
	
		
			
				|  |  |  |  | 	statCol.find('img').hide(); | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  |  | 
		
	
	
		
			
				
					
					|  |  |  | @@ -927,7 +928,7 @@ function loadNodeStatus(data) { | 
		
	
		
			
				|  |  |  |  |  */ | 
		
	
		
			
				|  |  |  |  | function refreshNodeStatus(group) { | 
		
	
		
			
				|  |  |  |  | 	// Show ping loader | 
		
	
		
			
				|  |  |  |  | 	var pingCol = $('#nodesDataTable thead tr th').eq(2); | 
		
	
		
			
				|  |  |  |  | 	var pingCol = $('#nodesDatatable thead tr th').eq(2); | 
		
	
		
			
				|  |  |  |  | 	pingCol.find('img').show(); | 
		
	
		
			
				|  |  |  |  | 	 | 
		
	
		
			
				|  |  |  |  | 	// Get the node status | 
		
	
	
		
			
				
					
					|  |  |  | @@ -1317,6 +1318,7 @@ function loadDeletePage(tgtNodes) { | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
		
			
				|  |  |  |  | 	} | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | 	// Create delete form | 
		
	
		
			
				|  |  |  |  | 	var deleteForm = $('<div class="form"></div>'); | 
		
	
		
			
				|  |  |  |  | 	deleteForm.append(statBar); | 
		
	
		
			
				|  |  |  |  | 	deleteForm.append(statBar); | 
		
	
	
		
			
				
					
					|  |  |  | @@ -1351,6 +1353,9 @@ function loadDeletePage(tgtNodes) { | 
		
	
		
			
				|  |  |  |  | 		$(this).attr('disabled', 'true'); | 
		
	
		
			
				|  |  |  |  | 	}); | 
		
	
		
			
				|  |  |  |  | 	 | 
		
	
		
			
				|  |  |  |  | 	/** | 
		
	
		
			
				|  |  |  |  | 	 * Cancel | 
		
	
		
			
				|  |  |  |  | 	 */ | 
		
	
		
			
				|  |  |  |  | 	var cancelBtn = createButton('Cancel'); | 
		
	
		
			
				|  |  |  |  | 	cancelBtn.bind('click', function(){ | 
		
	
		
			
				|  |  |  |  | 		myTab.remove($(this).parent().parent().attr('id')); | 
		
	
	
		
			
				
					
					|  |  |  | @@ -1387,7 +1392,7 @@ function updateStatusBar(data) { | 
		
	
		
			
				|  |  |  |  | 		$('#' + statBarId).append(prg);	 | 
		
	
		
			
				|  |  |  |  | 	} else if (cmd == 'rmvm') { | 
		
	
		
			
				|  |  |  |  | 		// Get data table | 
		
	
		
			
				|  |  |  |  | 		var dTable = $('#nodesDataTable').dataTable(); | 
		
	
		
			
				|  |  |  |  | 		var dTable = $('#nodesDatatable').dataTable(); | 
		
	
		
			
				|  |  |  |  | 		var failed = false; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | 		// Hide loader | 
		
	
	
		
			
				
					
					|  |  |  | @@ -1407,7 +1412,7 @@ function updateStatusBar(data) { | 
		
	
		
			
				|  |  |  |  | 		for (var i in tgts) { | 
		
	
		
			
				|  |  |  |  | 			if (!failed) { | 
		
	
		
			
				|  |  |  |  | 				// Get the row containing the node link and delete it | 
		
	
		
			
				|  |  |  |  | 				rowPos = findRowIndexUsingCol(tgts[i], '#nodesDataTable', 1); | 
		
	
		
			
				|  |  |  |  | 				rowPos = findRowIndexUsingCol(tgts[i], '#nodesDatatable', 1); | 
		
	
		
			
				|  |  |  |  | 				dTable.fnDeleteRow(rowPos); | 
		
	
		
			
				|  |  |  |  | 			} | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
	
		
			
				
					
					|  |  |  | @@ -1452,7 +1457,7 @@ function updateStatusBar(data) { | 
		
	
		
			
				|  |  |  |  |  */ | 
		
	
		
			
				|  |  |  |  | function updatePowerStatus(data) { | 
		
	
		
			
				|  |  |  |  | 	// Get datatable | 
		
	
		
			
				|  |  |  |  | 	var dTable = $('#nodesDataTable').dataTable(); | 
		
	
		
			
				|  |  |  |  | 	var dTable = $('#nodesDatatable').dataTable(); | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | 	// Get xCAT response | 
		
	
		
			
				|  |  |  |  | 	var rsp = data.rsp; | 
		
	
	
		
			
				
					
					|  |  |  | @@ -1465,7 +1470,7 @@ function updatePowerStatus(data) { | 
		
	
		
			
				|  |  |  |  | 		// If there is no error | 
		
	
		
			
				|  |  |  |  | 		if (rsp[i].indexOf("Error") < 0 || rsp[i].indexOf("Failed") < 0) { | 
		
	
		
			
				|  |  |  |  | 			// Get the row containing the node link | 
		
	
		
			
				|  |  |  |  | 			rowPos = findRowIndexUsingCol(node, '#nodesDataTable', 1); | 
		
	
		
			
				|  |  |  |  | 			rowPos = findRowIndexUsingCol(node, '#nodesDatatable', 1); | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | 			// If it was power on, then the data return would contain "Starting" | 
		
	
		
			
				|  |  |  |  | 			strPos = rsp[i].indexOf("Starting"); | 
		
	
	
		
			
				
					
					|  |  |  | @@ -1492,8 +1497,8 @@ function updatePowerStatus(data) { | 
		
	
		
			
				|  |  |  |  |  * @return Nothing | 
		
	
		
			
				|  |  |  |  |  */ | 
		
	
		
			
				|  |  |  |  | function runScript(inst) { | 
		
	
		
			
				|  |  |  |  | 	// Get tab ID | 
		
	
		
			
				|  |  |  |  | 	var tabId = 'scriptTab' + inst; | 
		
	
		
			
				|  |  |  |  | 	 | 
		
	
		
			
				|  |  |  |  | 	// Get node name | 
		
	
		
			
				|  |  |  |  | 	var tgts = $('#' + tabId + ' input[name=target]').val(); | 
		
	
		
			
				|  |  |  |  | 	// Get script | 
		
	
	
		
			
				
					
					|  |  |  | @@ -1559,7 +1564,6 @@ function getNodeAttr(node, attrName) { | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | 		// Get the attribute for the given node | 
		
	
		
			
				|  |  |  |  | 		var attr = row.find('td:eq(' + attrIndex + ')'); | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | 		return attr.text(); | 
		
	
		
			
				|  |  |  |  | 	} else { | 
		
	
		
			
				|  |  |  |  | 		return ''; | 
		
	
	
		
			
				
					
					|  |  |  | @@ -1574,6 +1578,7 @@ function getNodeAttr(node, attrName) { | 
		
	
		
			
				|  |  |  |  |  * @return Nothing | 
		
	
		
			
				|  |  |  |  |  */ | 
		
	
		
			
				|  |  |  |  | function setOSImageCookies(data) { | 
		
	
		
			
				|  |  |  |  | 	// Get response | 
		
	
		
			
				|  |  |  |  | 	var rsp = data.rsp; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | 	var imageNames = new Array; | 
		
	
	
		
			
				
					
					|  |  |  | @@ -1581,6 +1586,7 @@ function setOSImageCookies(data) { | 
		
	
		
			
				|  |  |  |  | 	var osVersHash = new Object(); | 
		
	
		
			
				|  |  |  |  | 	var osArchsHash = new Object(); | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | 	// Go through each index | 
		
	
		
			
				|  |  |  |  | 	for (var i = 1; i < rsp.length; i++) { | 
		
	
		
			
				|  |  |  |  | 		// Get the image name | 
		
	
		
			
				|  |  |  |  | 		var cols = rsp[i].split(','); | 
		
	
	
		
			
				
					
					|  |  |  | @@ -1588,6 +1594,7 @@ function setOSImageCookies(data) { | 
		
	
		
			
				|  |  |  |  | 		var profile = cols[1].replace(new RegExp('"', 'g'), ''); | 
		
	
		
			
				|  |  |  |  | 		var osVer = cols[5].replace(new RegExp('"', 'g'), ''); | 
		
	
		
			
				|  |  |  |  | 		var osArch = cols[7].replace(new RegExp('"', 'g'), ''); | 
		
	
		
			
				|  |  |  |  | 		 | 
		
	
		
			
				|  |  |  |  | 		imageNames.push(osImage); | 
		
	
		
			
				|  |  |  |  | 		profilesHash[profile] = 1; | 
		
	
		
			
				|  |  |  |  | 		osVersHash[osVer] = 1; | 
		
	
	
		
			
				
					
					|  |  |  | @@ -1765,12 +1772,12 @@ function flagNode2Update(node) { | 
		
	
		
			
				|  |  |  |  |  */ | 
		
	
		
			
				|  |  |  |  | function updateNodeAttrs(group) { | 
		
	
		
			
				|  |  |  |  | 	// Get the nodes datatable | 
		
	
		
			
				|  |  |  |  | 	var dTable = $('#nodesDataTable').dataTable(); | 
		
	
		
			
				|  |  |  |  | 	var dTable = $('#nodesDatatable').dataTable(); | 
		
	
		
			
				|  |  |  |  | 	// Get all nodes within the datatable | 
		
	
		
			
				|  |  |  |  | 	var rows = dTable.fnGetNodes(); | 
		
	
		
			
				|  |  |  |  | 	 | 
		
	
		
			
				|  |  |  |  | 	// Get table headers | 
		
	
		
			
				|  |  |  |  | 	var headers = $('#nodesDataTable thead tr th'); | 
		
	
		
			
				|  |  |  |  | 	var headers = $('#nodesDatatable thead tr th'); | 
		
	
		
			
				|  |  |  |  | 							 | 
		
	
		
			
				|  |  |  |  | 	// Get list of nodes to update | 
		
	
		
			
				|  |  |  |  | 	var nodesList = $.cookie('nodes2update'); | 
		
	
	
		
			
				
					
					|  |  |  | @@ -1786,7 +1793,7 @@ function updateNodeAttrs(group) { | 
		
	
		
			
				|  |  |  |  | 			args = ''; | 
		
	
		
			
				|  |  |  |  | 			 | 
		
	
		
			
				|  |  |  |  |         	// Get the row containing the node link | 
		
	
		
			
				|  |  |  |  |         	rowPos = findRowIndexUsingCol(nodes[i], '#nodesDataTable', 1); | 
		
	
		
			
				|  |  |  |  |         	rowPos = findRowIndexUsingCol(nodes[i], '#nodesDatatable', 1); | 
		
	
		
			
				|  |  |  |  |         	$(rows[rowPos]).find('td').each(function (){ | 
		
	
		
			
				|  |  |  |  |         		if ($(this).css('color') == 'red') { | 
		
	
		
			
				|  |  |  |  |         			// Change color back to normal | 
		
	
	
		
			
				
					
					|  |  |  | @@ -1843,9 +1850,9 @@ function restoreNodeAttrs() { | 
		
	
		
			
				|  |  |  |  | 	var nodes = nodesList.split(';'); | 
		
	
		
			
				|  |  |  |  | 	 | 
		
	
		
			
				|  |  |  |  | 	// Get the nodes datatable | 
		
	
		
			
				|  |  |  |  | 	var dTable = $('#nodesDataTable').dataTable(); | 
		
	
		
			
				|  |  |  |  | 	var dTable = $('#nodesDatatable').dataTable(); | 
		
	
		
			
				|  |  |  |  | 	// Get table headers | 
		
	
		
			
				|  |  |  |  | 	var headers = $('#nodesDataTable thead tr th'); | 
		
	
		
			
				|  |  |  |  | 	var headers = $('#nodesDatatable thead tr th'); | 
		
	
		
			
				|  |  |  |  | 	// Get all nodes within the datatable | 
		
	
		
			
				|  |  |  |  | 	var rows = dTable.fnGetNodes(); | 
		
	
		
			
				|  |  |  |  | 		 | 
		
	
	
		
			
				
					
					|  |  |  | @@ -1855,7 +1862,7 @@ function restoreNodeAttrs() { | 
		
	
		
			
				|  |  |  |  | 	for (var i in nodes) { | 
		
	
		
			
				|  |  |  |  | 		if (nodes[i]) {			 | 
		
	
		
			
				|  |  |  |  | 			// Get the row containing the node link | 
		
	
		
			
				|  |  |  |  |         	rowPos = findRowIndexUsingCol(nodes[i], '#nodesDataTable', 1); | 
		
	
		
			
				|  |  |  |  |         	rowPos = findRowIndexUsingCol(nodes[i], '#nodesDatatable', 1); | 
		
	
		
			
				|  |  |  |  |         	$(rows[rowPos]).find('td').each(function (){ | 
		
	
		
			
				|  |  |  |  |         		if ($(this).css('color') == 'red') { | 
		
	
		
			
				|  |  |  |  |         			// Change color back to normal | 
		
	
	
		
			
				
					
					|  |  |  | @@ -1875,8 +1882,7 @@ function restoreNodeAttrs() { | 
		
	
		
			
				|  |  |  |  | 		} // End of if | 
		
	
		
			
				|  |  |  |  | 	} // End of for | 
		
	
		
			
				|  |  |  |  | 	 | 
		
	
		
			
				|  |  |  |  | 	// Clear cookie containing list of nodes where | 
		
	
		
			
				|  |  |  |  | 	// their attributes need to be updated | 
		
	
		
			
				|  |  |  |  | 	// Clear cookie containing list of nodes where their attributes need to be updated | 
		
	
		
			
				|  |  |  |  | 	$.cookie('nodes2update', ''); | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  |  | 
		
	
	
		
			
				
					
					|  |  |  | @@ -2447,8 +2453,12 @@ function openSetPropsDialog() { | 
		
	
		
			
				|  |  |  |  |             		}, | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |             		/** | 
		
	
		
			
				|  |  |  |  |             		 * Show results | 
		
	
		
			
				|  |  |  |  |             		 */ | 
		
	
		
			
				|  |  |  |  | 					 * Show results | 
		
	
		
			
				|  |  |  |  | 					 *  | 
		
	
		
			
				|  |  |  |  | 					 * @param data | 
		
	
		
			
				|  |  |  |  | 					 *            Data returned from HTTP request | 
		
	
		
			
				|  |  |  |  | 					 * @return Nothing | 
		
	
		
			
				|  |  |  |  | 					 */ | 
		
	
		
			
				|  |  |  |  |             		success: function(data) { | 
		
	
		
			
				|  |  |  |  |             			// Get output | 
		
	
		
			
				|  |  |  |  |             			var out = data.rsp; | 
		
	
	
		
			
				
					
					|  |  |  |   |