var GroupNodeTableUpdater = {};
GroupNodeTableUpdater.updateCommandResult = function() {
var commandQueryId = "commandQuery";
var copyChkBoxId = "copyChkBox";
var nodenameHiddenTxtId = "nodename";
var nodegrpsCboBoxId = "nodegrpsCboBox";
var pshChkBoxId = "pshChkBox";
var serialChkBoxId = "serialChkBox";
var verifyChkBoxId = "verifyChkBox";
var fanoutTxtBoxId = "fanoutTxtBox";
var userIDTxtBoxId = "userIDTxtBox";
var rshellTxtBoxId = "rshellTxtBox";
var rshellTxtBoxId = "rshellTxtBox";
var monitorChkBoxId = "monitorChkBox";
var ret_codeChkBoxId = "ret_codeChkBox";
var copyChkBoxObj = $(copyChkBoxId);
var commandQueryObj = $(commandQueryId);
var nodenameHiddenTxtObj = $(nodenameHiddenTxtId);
var nodegrpsCboBoxObj = $(nodegrpsCboBoxId);
var pshChkBoxObj = $(pshChkBoxId);
var serialChkBoxObj = $(serialChkBoxId);
var verifyChkBoxObj = $(verifyChkBoxId);
var fanoutTxtBoxObj = $(fanoutTxtBoxId);
var userIDTxtBoxObj = $(userIDTxtBoxId);
var rshellTxtBoxObj = $(rshellTxtBoxId);
var monitorChkBoxObj = $(monitorChkBoxId);
var ret_codeChkBoxObj = $(ret_codeChkBoxId);
// Do AJAX call and get HTML here.
var url = "dsh_action.php";
var postPara = "command=" + encodeURIComponent(commandQueryObj.value);
postPara += "&node=" + encodeURIComponent(nodenameHiddenTxtObj.value);
postPara += "&nodegrps=" + encodeURIComponent(nodegrpsCboBoxObj.options[nodegrpsCboBoxObj.selectedIndex].value);
if (copyChkBoxObj.checked == true) postPara += "©=on"; else postPara += "©=off";
if (pshChkBoxObj.checked == true) postPara += "&psh=on"; else postPara += "&psh=off";
if (serialChkBoxObj.checked == true) postPara += "&serial=on"; else postPara += "&serial=off";
if (verifyChkBoxObj.checked == true) postPara += "&verify=on"; else postPara += "&verify=off";
postPara += "&fanout=" + encodeURIComponent(fanoutTxtBoxObj.value);
postPara += "&userID=" + encodeURIComponent(userIDTxtBoxObj.value);
postPara += "&rshell=" + encodeURIComponent(rshellTxtBoxObj.value);
if (monitorChkBoxObj.checked == true) postPara += "&monitor=on"; else postPara += "&monitor=off";
if (ret_codeChkBoxObj.checked == true) postPara += "&ret_code=on"; else postPara += "&ret_code=off";
new Ajax.Request(url, {
method: 'post', postBody: postPara,
onSuccess: function(transport) {
var htmlContent = transport.responseText;
var win = new Window({className: "dialog",
width: 350,
height: 400,
zIndex: 100,
resizable: true,
title: "Running commands",
showEffect: Effect.BlindDown,
hideEffect: Effect.SwitchOff,
draggable: true,
wiredDrag: true});
win.getContent().innerHTML = htmlContent;
//win.setStatusBar("Status bar info");
win.showCenter();
}
});
};
/**
* Hides/shows the nodes in a node group table.
*/
GroupNodeTableUpdater.toggleSection = function(nodeGroupName) {
var tableId = "div_" + nodeGroupName;
var imageId = tableId + '-im';
var expandSpanId = "img_gr_" + nodeGroupName;
var tableObj = $(tableId);
if(null == tableObj) {
alert('Error: section ' + tableId + ' not found.');
return false;
}
var imageTag = $(imageId);
var expandSpanObj = $(expandSpanId);
if(!tableObj.style.display || tableObj.style.display == 'inline') {
// the inner table is currently visible
tableObj.style.display = 'none';
imageTag.src = "../images/plus-sign.gif";
expandSpanObj.title = "Click to expand section";
} else {
// the inner table is currently invisible
tableObj.style.display = 'inline';
imageTag.src = "../images/minus-sign.gif";
expandSpanObj.title = "Click to collapse section";
}
return true;
};
GroupNodeTableUpdater.getFailureSpanHTML = function(nodeGroupName) {
var spanId = "nodegroup_" + nodeGroupName + "_failure";
var html = 'There was a problem loading the node for the group ' + nodeGroupName + '';
return html;
}
GroupNodeTableUpdater.getLoadingSpanHTML = function(nodeGroupName) {
var spanId = "nodegroup_" + nodeGroupName + "_loading";
var html = 'Loading ...';
return html;
}
/**
* This is the onCreate callback for the AJAX request made in GroupNodeTableUpdater.updateNodeList.
* It updates the interface to show that the request is loading.
* See http://www.prototypejs.org/api/ajax/options
*/
GroupNodeTableUpdater.updateNodeListLoading = function(nodeGroupName) {
var spanId = 'img_gr_' + nodeGroupName;
new Insertion.Bottom(spanId, GroupNodeTableUpdater.getLoadingSpanHTML(nodeGroupName));
var loadingSpanId = "nodegroup_" + nodeGroupName + "_loading";
new Effect.Appear(loadingSpanId);
}
/**
* This is the onFailure callback for the AJAX request made in GroupNodeTableUpdater.updateNodeList.
* It updates the interface to show that the request failed.
* See http://www.prototypejs.org/api/ajax/options
*/
GroupNodeTableUpdater.updateNodeListFailure = function(nodeGroupName) {
var spanId = 'img_gr_' + nodeGroupName;
new Insertion.Bottom(spanId, GroupNodeTableUpdater.getFailureSpanHTML(nodeGroupName));
var failureSpanId = "nodegroup_" + nodeGroupName + "_failure";
new Effect.Shake(failureSpanId);
}
/**
* Add table rows representing nodes to the table that represents the node group
* identified by the given name.
*/
GroupNodeTableUpdater.updateNodeList = function(nodeGroupName) {
var tableId = "div_" + nodeGroupName;
var imageId = tableId + '-im';
var expandSpanId = "img_gr_" + nodeGroupName;
var tableObj = $(tableId);
if(null == tableObj) {
alert('Error: section ' + tableId + ' not found.');
return false;
}
var imageTag = $(imageId);
var expandSpanObj = $(expandSpanId);
if(!tableObj.style.display || tableObj.style.display == 'inline') {// currently visible
tableObj.style.display = 'none';
imageTag.src = "../images/plus-sign.gif";
expandSpanObj.title = "Click to expand section";
} else { //currently invisible
imageTag.src = "../images/minus-sign.gif";
expandSpanObj.title = "Click to collapse section";
var target = "div_" + nodeGroupName;
var pars = 'nodeGroupName=' + nodeGroupName;
var URL = 'nodes_by_group.php';
// Check whether the table already exists and has already been updated?
//var URL = "webservice.php?method=getXCATNodeRows&nodeGroupName=" + encodeURIComponent(nodeGroupName);
//alert('About to call Ajax.Updater');
new Ajax.Updater(target, URL, {
method: 'post', parameters: pars,
onCreate: function() { GroupNodeTableUpdater.updateNodeListLoading(nodeGroupName) }, // Needs Prototype 1.5.1
onFailure: function() {GroupNodeTableUpdater.updateNodeListFailure(nodeGroupName) },
onComplete: function() {new Effect.Fade("nodegroup_" + nodeGroupName + "_loading")}
});
// the inner table is currently invisible
tableObj.style.display = 'inline';
//alert('Back from Ajax.Updater');
}
//return true;
//GroupNodeTableUpdater.toggleSection(nodeGroupName);
}