mirror of
				https://github.com/xcat2/xcat-core.git
				synced 2025-10-31 11:22:27 +00:00 
			
		
		
		
	git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@2279 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
		
			
				
	
	
		
			110 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			110 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| // Javascript functions needed by the frames (racks) page, mostly
 | |
| // to handle the check boxes that are actually images.
 | |
| 
 | |
| function imageCBClick(image, mode)
 | |
| {
 | |
| if (mode==1 || (mode==2 && (image.checked === undefined || !image.checked))) {
 | |
|  image.src = '../images/checked-box.gif';
 | |
|  image.checked = true;
 | |
| } else {
 | |
|  image.src = '../images/unchecked-box.gif';
 | |
|  image.checked = false;
 | |
|  var s=image.alt.split(/-/);
 | |
|  var rackCB = document.frameForm['selAll'+s[0]+'Checkbox'];
 | |
|  rackCB.checked = false;
 | |
| }
 | |
| }
 | |
| 
 | |
| 
 | |
| function selectAll(element, rack)	// element is the select all checkbox, rack is the rack #
 | |
| {
 | |
|  var sel = element.checked;
 | |
|  for (var i=0; i < document.images.length; i++) {
 | |
|   var image = document.images[i];
 | |
|   if (image.src.search(/checked-box\.gif$/)>-1 && image.alt.search('^'+rack+'-')>-1) { imageCBClick(image,sel); }
 | |
|  }
 | |
| }
 | |
| 
 | |
| /*
 | |
| function isNodeSelected(form)
 | |
| {
 | |
| if (document.paramForm.rack.checked) { return (form.Nodes.value.length>0 || form.rackNodes.value.length>0); }
 | |
| // we only continue here if it is the non-rack display
 | |
| for(var i = 0; i < form.length; i++)
 | |
|  {
 | |
|   var e = form.elements[i];
 | |
|   if (e.type == "checkbox" && e.name.search(/^node\d/) > -1 && e.checked) { return true; }
 | |
|  }
 | |
| return false;
 | |
| }
 | |
| 
 | |
| function numNodesSelected(form)
 | |
| {
 | |
| if (document.paramForm.rack.checked) {
 | |
|  if (form.Nodes.value.length>0) { return 2; }  // just have to guess that the group or range has more than 1
 | |
|  var val = form.rackNodes.value;
 | |
|  var matches = val.match(/,/g);
 | |
|  if (!matches) { return (val.length>0 ? 1 : 0); }
 | |
|  else { return matches.length + 1; }
 | |
| }
 | |
| // we only continue here if it is the non-rack display
 | |
| var j = 0;
 | |
| for(var i = 0; i < form.length; i++)
 | |
|  {
 | |
|   var e = form.elements[i];
 | |
|   if (e.type == "checkbox" && e.name.search(/^node\d/) > -1 && e.checked)
 | |
|    {
 | |
|     if (++j == 2) { return j; }
 | |
|    }
 | |
|  }
 | |
| return j;
 | |
| }
 | |
| 
 | |
| function gatherRackNodes(form)
 | |
| {
 | |
|  if (allSelected(form)) {
 | |
|   if (document.paramForm.nodeRange.value.length > 0) { form.Nodes.value = document.paramForm.nodeRange.value; }
 | |
|   else { form.Nodes.value = '+' + document.paramForm.nodegrps.value; }
 | |
|   form.rackNodes.value='';
 | |
|   return;
 | |
|  }
 | |
|  else { form.Nodes.value=''; }
 | |
|  if (!document.paramForm.rack.checked) { form.rackNodes.value=''; return; }
 | |
| 
 | |
|  var nodes='';
 | |
|  for (var i=0; i < document.images.length; i++) {
 | |
|   var image = document.images[i];
 | |
|   if (image.checked) { var s=image.alt.split(/-/); nodes += s[1] + ','; }
 | |
|  }
 | |
|  form.rackNodes.value = nodes.replace(/,$/, '');
 | |
| }
 | |
| 
 | |
| function allSelected(form)
 | |
| {
 | |
| if (document.paramForm.rack.checked) {
 | |
|  for(var i = 0; i < form.length; i++)
 | |
|   {
 | |
|    var e = form.elements[i];
 | |
|    if (e.type=="checkbox" && e.name.search(/^selAll\d+Checkbox/)>-1 && !e.checked) { return false; }
 | |
|   }
 | |
|  return true;
 | |
| }
 | |
| else { return form.selAllCheckbox.checked; }   // non-rack display
 | |
| }
 | |
| 
 | |
| function frameFormSubmit(form) {
 | |
| gatherRackNodes(form);
 | |
| if (form.nodesNeeded === undefined || form.nodesNeeded == 2) {    // need 1 or more nodes
 | |
|  if (isNodeSelected(form)) { return true; }
 | |
|  else { alert('Select one or more nodes before pressing an action button.');  return false; }
 | |
| }
 | |
| else if (form.nodesNeeded == 1) {                          // need exactly 1 node
 | |
|  if (numNodesSelected(form) == 1) { return true; }
 | |
|  else { alert('Exactly one node must be selected for this action.'); form.nodesNeeded=undefined; return false; }
 | |
| }
 | |
| else if (form.nodesNeeded == 0) { return true; }          // 0 or more nodes is ok
 | |
| else { return true; }
 | |
| }
 | |
| */
 | |
| 
 |