Fixed rcons to reference jquery.min.js. Added IP address and hostname range to z/VM clone and provision page. Updated update page with new links to xCAT repository. Cleaned up code.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@11850 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
parent
f1459db8ba
commit
442bbe9156
@ -4,7 +4,8 @@
|
||||
font: 12px sans-serif;
|
||||
}
|
||||
|
||||
.ui-dialog label,.ui-dialog input,.ui-dialog p,.ui-dialog button,.ui-dialog td {
|
||||
.ui-dialog label,.ui-dialog input,.ui-dialog p,.ui-dialog button,.ui-dialog td
|
||||
{
|
||||
font: 12px sans-serif;
|
||||
}
|
||||
|
||||
@ -12,7 +13,8 @@
|
||||
font: 12px sans-serif;
|
||||
}
|
||||
|
||||
.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button {
|
||||
.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button
|
||||
{
|
||||
font: 12px sans-serif;
|
||||
}
|
||||
|
||||
@ -119,7 +121,7 @@ body {
|
||||
}
|
||||
|
||||
pre {
|
||||
font-size: 10px;
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
/*--------------- Groups ---------------*/
|
||||
@ -151,11 +153,11 @@ pre {
|
||||
font-size: 15px;
|
||||
}
|
||||
|
||||
#groups .groupdiv{
|
||||
#groups .groupdiv {
|
||||
padding-left: 10px;
|
||||
}
|
||||
|
||||
#groups .groupdiv div{
|
||||
#groups .groupdiv div {
|
||||
color: blue;
|
||||
padding: 5px 0px 5px 20px;
|
||||
}
|
||||
@ -166,11 +168,11 @@ pre {
|
||||
}
|
||||
|
||||
#groups .selectgroup {
|
||||
background: #E5E5E5;
|
||||
font-weight: bold;
|
||||
background: #E5E5E5;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#groups .actionDiv{
|
||||
#groups .actionDiv {
|
||||
text-align: right;
|
||||
padding-right: 5px;
|
||||
border-top: thin solid #E7EBFF;
|
||||
@ -190,15 +192,18 @@ pre {
|
||||
width: 260px;
|
||||
height: 220px;
|
||||
}
|
||||
.summarypie td{
|
||||
min-width:0px;
|
||||
|
||||
.summarypie td {
|
||||
min-width: 0px;
|
||||
}
|
||||
#summaryTab td{
|
||||
|
||||
#summaryTab td {
|
||||
border: 0px;
|
||||
padding: 0px;
|
||||
text-align: left;
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
/*--------------- Info/warning bar ---------------*/
|
||||
span.ui-icon-info {
|
||||
float: left;
|
||||
@ -328,14 +333,14 @@ legend {
|
||||
}
|
||||
|
||||
.sf-menu {
|
||||
border-radius :0.3em 0.3em 0.3em 0.3em;
|
||||
border-radius: 0.3em 0.3em 0.3em 0.3em;
|
||||
margin-bottom: 0;
|
||||
background: none;
|
||||
border: 0px solid;
|
||||
}
|
||||
|
||||
.sf-menu ul li {
|
||||
width: 99%;
|
||||
width: 99%;
|
||||
}
|
||||
|
||||
.sf-menu .sf-menu {
|
||||
@ -346,8 +351,8 @@ legend {
|
||||
background: none;
|
||||
}
|
||||
|
||||
.sf-sub-indicator{
|
||||
right:0;
|
||||
.sf-sub-indicator {
|
||||
right: 0;
|
||||
}
|
||||
|
||||
.actionBar {
|
||||
@ -490,13 +495,13 @@ legend {
|
||||
}
|
||||
|
||||
.sorting_asc,.sorting_desc,.sorting {
|
||||
background: none;
|
||||
background: none;
|
||||
}
|
||||
|
||||
/*--------------- jQuery context menu ---------------*/
|
||||
.context-menu-theme-vista {
|
||||
background: #FAFAFA url(../images/contextmenu/context-menu-bg.gif) repeat-y left top
|
||||
;
|
||||
background: #FAFAFA url(../images/contextmenu/context-menu-bg.gif)
|
||||
repeat-y left top;
|
||||
border: 1px solid #868686;
|
||||
}
|
||||
|
||||
@ -516,8 +521,9 @@ legend {
|
||||
}
|
||||
|
||||
.context-menu-theme-vista .context-menu-item-hover {
|
||||
background: transparent url(../images/contextmenu/context-menu-item-hover.gif)
|
||||
repeat-x left center;
|
||||
background: transparent
|
||||
url(../images/contextmenu/context-menu-item-hover.gif) repeat-x left
|
||||
center;
|
||||
border: 1px solid #D7D0B3;
|
||||
}
|
||||
|
||||
@ -647,16 +653,16 @@ table a:hover {
|
||||
}
|
||||
|
||||
.mornitorwarning {
|
||||
background: #FFD700;
|
||||
background: #FFD700;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.monitorerror {
|
||||
background: #FF3030;
|
||||
background: #FF3030;
|
||||
}
|
||||
|
||||
.monitorunknown {
|
||||
background: #8B8B7A;
|
||||
background: #8B8B7A;
|
||||
}
|
||||
|
||||
.monitornodeli {
|
||||
@ -673,20 +679,21 @@ table a:hover {
|
||||
margin: 0px 0px 10px 10px;
|
||||
}
|
||||
|
||||
.monitorsumdiv td{
|
||||
.monitorsumdiv td {
|
||||
padding: 0;
|
||||
border-style: none;
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
.monitornodediv {
|
||||
width: 240px;
|
||||
height: 120px;
|
||||
margin: 0px 0px 15px 0px;
|
||||
}
|
||||
|
||||
.monitorzoomlink{
|
||||
.monitorzoomlink {
|
||||
cursor: pointer;
|
||||
color : blue;
|
||||
color: blue;
|
||||
}
|
||||
|
||||
.provision div,.monitor div {
|
||||
@ -761,12 +768,12 @@ table a:hover {
|
||||
height: 11px;
|
||||
}
|
||||
|
||||
.fspcheckbox{
|
||||
.fspcheckbox {
|
||||
padding: 0px;
|
||||
margin: 3px 3px 1px 3px;
|
||||
}
|
||||
|
||||
.chasisDiv{
|
||||
.chasisDiv {
|
||||
width: 172px;
|
||||
height: 108px;
|
||||
font-size: 10px;
|
||||
@ -777,19 +784,19 @@ table a:hover {
|
||||
padding: 11px 0px 0px 11px;
|
||||
}
|
||||
|
||||
.bladeDiv{
|
||||
float:left;
|
||||
.bladeDiv {
|
||||
float: left;
|
||||
width: 11px;
|
||||
height: 89px;
|
||||
text-align: left;
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
.bladeInsertDiv{
|
||||
.bladeInsertDiv {
|
||||
background: url(../images/nodes/blade.jpg);
|
||||
}
|
||||
|
||||
.xnodeDiv{
|
||||
.xnodeDiv {
|
||||
font-size: 12px;
|
||||
height: 21px;
|
||||
line-height: 21px;
|
||||
@ -801,6 +808,7 @@ table a:hover {
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
/*--------------- Discovery section ---------------*/
|
||||
.discoverstep {
|
||||
width: 960px;
|
||||
@ -812,9 +820,9 @@ table a:hover {
|
||||
border-radius: .3em;
|
||||
}
|
||||
|
||||
.discovercurrentstep{
|
||||
.discovercurrentstep {
|
||||
background-color: yellow;
|
||||
font: normal bold 12px/ 35px sans-serif;
|
||||
font: normal bold 12px/35px sans-serif;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
@ -824,12 +832,13 @@ table a:hover {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.discovercontent table{
|
||||
border : none;
|
||||
.discovercontent table {
|
||||
border: none;
|
||||
}
|
||||
|
||||
.discovercontent td {
|
||||
border : none;
|
||||
border: none;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.discovercontent th {
|
||||
@ -843,6 +852,6 @@ td.jqplot-table-legend {
|
||||
border-width: 0px;
|
||||
}
|
||||
|
||||
td.jqplot-table-legend > div {
|
||||
td.jqplot-table-legend>div {
|
||||
border-width: 0px;
|
||||
}
|
@ -40,36 +40,30 @@ function createDiscoverButtons(){
|
||||
var nextButton = createNextButton();
|
||||
var cancelButton = createCancelButton();
|
||||
|
||||
if (backButton){
|
||||
if (backButton)
|
||||
buttonDiv.append(backButton);
|
||||
}
|
||||
|
||||
if (nextButton){
|
||||
if (nextButton)
|
||||
buttonDiv.append(nextButton);
|
||||
}
|
||||
|
||||
if (cancelButton){
|
||||
if (cancelButton)
|
||||
buttonDiv.append(cancelButton);
|
||||
}
|
||||
|
||||
$('#discoverContentDiv').append(buttonDiv);
|
||||
}
|
||||
|
||||
function createCancelButton(){
|
||||
if (0 == currentStep){
|
||||
if (0 == currentStep)
|
||||
return undefined;
|
||||
}
|
||||
|
||||
if ((steps.length - 1) == currentStep){
|
||||
if ((steps.length - 1) == currentStep)
|
||||
return undefined;
|
||||
}
|
||||
|
||||
var cancelbutton = createButton('Cancel');
|
||||
cancelbutton.bind('click', function(){
|
||||
$('#discoverTab').empty();
|
||||
for (var name in discoverEnv){
|
||||
for (var name in discoverEnv)
|
||||
removeDiscoverEnv(name);
|
||||
}
|
||||
loadDiscoverPage();
|
||||
});
|
||||
|
||||
@ -83,19 +77,16 @@ function createCancelButton(){
|
||||
*/
|
||||
function createNextButton(){
|
||||
var tempFlag = true;
|
||||
if ((steps.length - 1) == currentStep){
|
||||
if ((steps.length - 1) == currentStep)
|
||||
return undefined;
|
||||
}
|
||||
|
||||
var nextButton = createButton('Next');
|
||||
nextButton.bind('click', function(){
|
||||
if (nextFunctions[currentStep]){
|
||||
if (nextFunctions[currentStep])
|
||||
tempFlag = nextFunctions[currentStep]('next');
|
||||
}
|
||||
|
||||
if (!tempFlag){
|
||||
if (!tempFlag)
|
||||
return;
|
||||
}
|
||||
currentStep ++;
|
||||
initFunctions[currentStep]('next');
|
||||
});
|
||||
@ -110,19 +101,16 @@ function createNextButton(){
|
||||
*/
|
||||
function createBackButton(){
|
||||
var tempFlag = true;
|
||||
if (0 == currentStep){
|
||||
if (0 == currentStep)
|
||||
return undefined;
|
||||
}
|
||||
|
||||
var backButton = createButton('Back');
|
||||
backButton.bind('click', function(){
|
||||
if (nextFunctions[currentStep]){
|
||||
if (nextFunctions[currentStep])
|
||||
tempFlag = nextFunctions[currentStep]('back');
|
||||
}
|
||||
|
||||
if (!tempFlag){
|
||||
if (!tempFlag)
|
||||
return;
|
||||
}
|
||||
|
||||
currentStep--;
|
||||
|
||||
@ -142,12 +130,10 @@ function createBackButton(){
|
||||
* else return null.
|
||||
*/
|
||||
function getDiscoverEnv(envName){
|
||||
if (discoverEnv[envName]){
|
||||
if (discoverEnv[envName])
|
||||
return discoverEnv[envName];
|
||||
}
|
||||
else{
|
||||
else
|
||||
return '';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -160,9 +146,8 @@ function getDiscoverEnv(envName){
|
||||
* @return nothing
|
||||
*/
|
||||
function setDiscoverEnv(envName, envValue){
|
||||
if (envName){
|
||||
if (envName)
|
||||
discoverEnv[envName] = envValue;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -173,9 +158,8 @@ function setDiscoverEnv(envName, envValue){
|
||||
* @return nothing
|
||||
*/
|
||||
function removeDiscoverEnv(envName){
|
||||
if (discoverEnv[envName]){
|
||||
if (discoverEnv[envName])
|
||||
delete discoverEnv[envName];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -187,25 +171,23 @@ function removeDiscoverEnv(envName){
|
||||
function expandNR(nodeRange){
|
||||
var retArray = new Array();
|
||||
var tempResult;
|
||||
if ('' == nodeRange){
|
||||
if ('' == nodeRange)
|
||||
return retArray;
|
||||
}
|
||||
|
||||
tempResult = nodeRange.match(/(.*?)\[(.*?)\](.*)/);
|
||||
if (null != tempResult){
|
||||
var parts = tempResult[2].split('-');
|
||||
if (2 > parts.length){
|
||||
if (2 > parts.length)
|
||||
return retArray;
|
||||
}
|
||||
|
||||
var start = Number(parts[0]);
|
||||
var end = Number(parts[1]);
|
||||
var len = parts[0].length;
|
||||
for (var i = parts[0]; i <= parts[1]; i++){
|
||||
var ts = i.toString();
|
||||
if (ts.length < len){
|
||||
if (ts.length < len)
|
||||
ts = "000000".substring(0, (len - ts.length)) + ts;
|
||||
}
|
||||
|
||||
retArray = retArray.concat(expandNR(tempResult[1] + ts + tempResult[3]));
|
||||
}
|
||||
return retArray;
|
||||
@ -238,9 +220,8 @@ function expandNR(nodeRange){
|
||||
var len = begin[2].length;
|
||||
for (var i = begin[2]; i <= end[2]; i++){
|
||||
var ts = i.toString();
|
||||
if (ts.length < len){
|
||||
if (ts.length < len)
|
||||
ts = "000000".substring(0, (len - ts.length)) + ts;
|
||||
}
|
||||
retArray.push(prefix + ts);
|
||||
}
|
||||
|
||||
@ -257,12 +238,10 @@ function collectInputValue(){
|
||||
$('#discoverContentDiv input[type=text]').each(function(){
|
||||
var name = $(this).attr('name');
|
||||
var value = $(this).attr('value');
|
||||
if ('' != value){
|
||||
if ('' != value)
|
||||
setDiscoverEnv(name, value);
|
||||
}
|
||||
else{
|
||||
else
|
||||
removeDiscoverEnv(name);
|
||||
}
|
||||
});
|
||||
|
||||
return true;
|
||||
@ -289,9 +268,8 @@ function verifyIp(ip){
|
||||
* @return decimal type ip address
|
||||
*/
|
||||
function ip2Decimal(ip){
|
||||
if (!verifyIp(ip)){
|
||||
if (!verifyIp(ip))
|
||||
return 0;
|
||||
}
|
||||
|
||||
var retIp = 0;
|
||||
var tempArray = ip.split('.');
|
||||
@ -303,6 +281,7 @@ function ip2Decimal(ip){
|
||||
retIp = retIp >>> 0;
|
||||
return retIp;
|
||||
}
|
||||
|
||||
/**
|
||||
* calculate the end IP address by start IP and the number of IP range.
|
||||
*
|
||||
@ -343,6 +322,7 @@ function calcEndIp(ipStart, num){
|
||||
ipArray[0] = ipArray[0] + parseInt(sum / 255);
|
||||
return (ipArray.join('.'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Step 1: show the wizard's function
|
||||
* platform selector(system P or system X)
|
||||
@ -350,27 +330,34 @@ function calcEndIp(ipStart, num){
|
||||
* @return nothing
|
||||
*/
|
||||
function initSelectPlatform(){
|
||||
var temp = '';
|
||||
var type = '';
|
||||
|
||||
$('#discoverContentDiv').empty();
|
||||
$('.tooltip').remove();
|
||||
temp += '<div style="min-height:360px"><h2>' + steps[currentStep] + '</h2>';
|
||||
temp += '<p>This wizard will guide you through the process of defining the naming conventions within' +
|
||||
'your cluster, discovering the hardware on your network, and automatically defining it in the xCAT' +
|
||||
'database.<br/>Choose which type of hardware you want to discover, and then click Next.</p>';
|
||||
temp += '<input type="radio" name="platform" id="idataplex"><label for="idataplex">iDataPlex</label></input><br/>';
|
||||
temp += '<input type="radio" name="platform" disabled="true" id="blade"><span style="color:gray;"> Blade Center</span></input><br/>';
|
||||
temp += '<input type="radio" name="platform" id="ih"> System p hardware (P7 IH)</input><br/>';
|
||||
temp += '<input type="radio" name="platform" id="nonih"> System p hardware (Non P7 IH)</input><br/>';
|
||||
temp += '</div>';
|
||||
$('#discoverContentDiv').append(temp);
|
||||
|
||||
if (getDiscoverEnv('machineType')){
|
||||
var selectPlatform = $('<div style="min-height:360px"><h2>' + steps[currentStep] + '</h2></div>');
|
||||
|
||||
var infoMsg = 'This wizard will guide you through the process of defining the naming conventions within' +
|
||||
'your cluster, discovering the hardware on your network, and automatically defining it in the xCAT' +
|
||||
'database. Choose which type of hardware you want to discover, and then click Next.';
|
||||
var info = createInfoBar(infoMsg);
|
||||
selectPlatform.append(info);
|
||||
|
||||
var hwList = $('<ol>Platforms available:</ol>');
|
||||
hwList.append('<li><input type="radio" name="platform" id="idataplex"><label>iDataPlex</label></input></li>');
|
||||
hwList.append('<li><input type="radio" name="platform" disabled="true" id="blade"><span style="color:gray;"> BladeCenter</span></input></li>');
|
||||
hwList.append('<li><input type="radio" name="platform" id="ih"> System p hardware (P7 IH)</input></li>');
|
||||
hwList.append('<li><input type="radio" name="platform" id="nonih"> System p hardware (Non P7 IH)</input></li>');
|
||||
|
||||
hwList.find('li').css('padding', '2px 10px');
|
||||
selectPlatform.append(hwList);
|
||||
|
||||
$('#discoverContentDiv').append(selectPlatform);
|
||||
|
||||
if (getDiscoverEnv('machineType'))
|
||||
type = getDiscoverEnv('machineType');
|
||||
}
|
||||
else{
|
||||
else
|
||||
type = 'ih';
|
||||
}
|
||||
|
||||
$('#discoverContentDiv #' + type).attr('checked', 'checked');
|
||||
createDiscoverButtons();
|
||||
@ -386,19 +373,16 @@ function getPlatform(){
|
||||
var platformObj;
|
||||
switch(radioValue){
|
||||
case 'ih':
|
||||
case 'nonih':{
|
||||
case 'nonih':
|
||||
platformObj = new hmcPlugin();
|
||||
}
|
||||
break;
|
||||
case 'idataplex':{
|
||||
break;
|
||||
case 'idataplex':
|
||||
platformObj = new ipmiPlugin();
|
||||
}
|
||||
break;
|
||||
case 'blade':{
|
||||
|
||||
}
|
||||
break;
|
||||
break;
|
||||
case 'blade':
|
||||
break;
|
||||
}
|
||||
|
||||
steps = ['Platform'].concat(platformObj.getStep(), 'compelte');
|
||||
initFunctions = [initSelectPlatform].concat(platformObj.getInitFunction(), complete);
|
||||
nextFunctions = [getPlatform].concat(platformObj.getNextFunction(), undefined);
|
||||
|
@ -53,12 +53,13 @@ function showRepository(data) {
|
||||
var show = "";
|
||||
|
||||
// Get the corresponding repository by OS Type
|
||||
if ("aix" == data.rsp) {
|
||||
if (data.rsp == "aix") {
|
||||
// No repository exists for AIX on sourceforge!
|
||||
develRepository = "http://xcat.sourceforge.net/aix/devel/xcat-core/";
|
||||
stableRepository = "http://xcat.sourceforge.net/aix/xcat-core/";
|
||||
} else {
|
||||
develRepository = "http://xcat.sourceforge.net/yum/devel/xcat-core/";
|
||||
stableRepository = "http://xcat.sourceforge.net/yum/xcat-core/";
|
||||
develRepository = "http://sourceforge.net/projects/xcat/files/yum/devel/xcat-core/";
|
||||
stableRepository = "http://sourceforge.net/projects/xcat/files/yum/stable/xcat-core/";
|
||||
}
|
||||
|
||||
var repoList = $('<ol></ol>');
|
||||
|
@ -187,7 +187,7 @@ bladePlugin.prototype.loadResources = function() {
|
||||
$('#' + tabId).find('img').remove();
|
||||
|
||||
// Create info bar
|
||||
var infoBar = createInfoBar('Under construction');
|
||||
var infoBar = createInfoBar('Not yet supported');
|
||||
|
||||
// Create resource form
|
||||
var resrcForm = $('<div class="form"></div>');
|
||||
|
@ -255,7 +255,7 @@ function createProvisionExisting(plugin, inst) {
|
||||
var provisionBtn = createButton('Provision');
|
||||
provisionBtn.bind('click', function(event) {
|
||||
// TODO Insert provision code here
|
||||
openDialog('info', 'Under construction');
|
||||
openDialog('info', 'Not yet supported');
|
||||
});
|
||||
provExisting.append(provisionBtn);
|
||||
|
||||
@ -377,7 +377,7 @@ function createProvisionNew(plugin, inst) {
|
||||
var provisionBtn = createButton('Provision');
|
||||
provisionBtn.bind('click', function(event) {
|
||||
// TODO Insert provision code here
|
||||
openDialog('info', 'Under construction');
|
||||
openDialog('info', 'Not yet supported');
|
||||
});
|
||||
provNew.append(provisionBtn);
|
||||
|
||||
|
@ -466,7 +466,7 @@ esxPlugin.prototype.loadResources = function() {
|
||||
$('#' + tabId).find('img').remove();
|
||||
|
||||
// Create info bar
|
||||
var infoBar = createInfoBar('Under construction');
|
||||
var infoBar = createInfoBar('Not yet supported');
|
||||
|
||||
// Create resource form
|
||||
var resrcForm = $('<div class="form"></div>');
|
||||
|
@ -167,7 +167,7 @@ hmcPlugin.prototype.loadClonePage = function(node) {
|
||||
var statBar = $('<div class="statusBar" id="' + statBarId + '"></div>').hide();
|
||||
|
||||
// Create info bar
|
||||
var infoBar = createInfoBar('Under construction');
|
||||
var infoBar = createInfoBar('Not yet supported');
|
||||
|
||||
// Create clone form
|
||||
var cloneForm = $('<div class="form"></div>');
|
||||
@ -218,7 +218,7 @@ hmcPlugin.prototype.loadResources = function() {
|
||||
$('#' + tabId).find('img').remove();
|
||||
|
||||
// Create info bar
|
||||
var infoBar = createInfoBar('Under construction');
|
||||
var infoBar = createInfoBar('Not yet supported');
|
||||
|
||||
// Create resource form
|
||||
var resrcForm = $('<div class="form"></div>');
|
||||
|
@ -208,7 +208,7 @@ ipmiPlugin.prototype.loadResources = function() {
|
||||
$('#' + tabId).find('img').remove();
|
||||
|
||||
// Create info bar
|
||||
var infoBar = createInfoBar('Under construction');
|
||||
var infoBar = createInfoBar('Not yet supported');
|
||||
|
||||
// Create resource form
|
||||
var resrcForm = $('<div class="form"></div>');
|
||||
|
@ -465,7 +465,7 @@ kvmPlugin.prototype.loadResources = function() {
|
||||
$('#' + tabId).find('img').remove();
|
||||
|
||||
// Create info bar
|
||||
var infoBar = createInfoBar('Under construction');
|
||||
var infoBar = createInfoBar('Not yet supported');
|
||||
|
||||
// Create resource form
|
||||
var resrcForm = $('<div class="form"></div>');
|
||||
|
@ -545,6 +545,24 @@ zvmPlugin.prototype.loadClonePage = function(node) {
|
||||
group.append(groupLabel);
|
||||
group.append(groupInput);
|
||||
vmAttr.append(group);
|
||||
|
||||
// Create an advanced link to set IP address and hostname
|
||||
var advancedLnk = $('<div><label><a style="color: blue; cursor: pointer;">Advanced</a></label></div>');
|
||||
vmAttr.append(advancedLnk);
|
||||
var advanced = $('<div style="margin-left: 20px;"></div>').hide();
|
||||
vmAttr.append(advanced);
|
||||
|
||||
var ip = $('<div><label>IP address range:</label><input type="text" name="ip" ' +
|
||||
'title="Optional. Specify the IP address range that will be assigned to these nodes. An IP address range must be given in the following format: 192.168.0.1-192.168.9."/></div>');
|
||||
advanced.append(ip);
|
||||
var hostname = $('<div><label>Hostname range:</label><input type="text" name="hostname" ' +
|
||||
'title="Optional. Specify the hostname range that will be assigned to these node. A hostname range must be given in the following format: ihost1.sourceforge.net-ihost9.sourceforge.net."/></div>');
|
||||
advanced.append(hostname);
|
||||
|
||||
// Show IP address and hostname inputs on-click
|
||||
advancedLnk.click(function() {
|
||||
advanced.toggle();
|
||||
});
|
||||
|
||||
// Get list of disk pools
|
||||
var temp = hcp.split('.');
|
||||
@ -610,9 +628,13 @@ zvmPlugin.prototype.loadClonePage = function(node) {
|
||||
var nodeRange = $('#' + newTabId + ' input[name=tgtNode]').val();
|
||||
// Get target user ID
|
||||
var userIdRange = $('#' + newTabId + ' input[name=tgtUserId]').val();
|
||||
// Get IP address range
|
||||
var ipRange = $('#' + newTabId + ' input[name=ip]').val();
|
||||
// Get hostname range
|
||||
var hostnameRange = $('#' + newTabId + ' input[name=hostname]').val();
|
||||
|
||||
// Check node range and user ID range
|
||||
if (nodeRange.indexOf('-') > -1 || userIdRange.indexOf('-') > -1) {
|
||||
if (nodeRange.indexOf('-') > -1 || userIdRange.indexOf('-') > -1 || ipRange.indexOf('-') > -1 || hostnameRange.indexOf('-') > -1) {
|
||||
if (nodeRange.indexOf('-') < 0 || userIdRange.indexOf('-') < 0) {
|
||||
errMsg = errMsg + 'A user ID range and node range needs to be given.<br>';
|
||||
ready = false;
|
||||
@ -634,13 +656,45 @@ zvmPlugin.prototype.loadClonePage = function(node) {
|
||||
var userIdStart = parseInt(tmp[0].match(/\d+/));
|
||||
// Get ending index
|
||||
var userIdEnd = parseInt(tmp[1].match(/\d+/));
|
||||
|
||||
|
||||
var ipStart = "", ipEnd = "";
|
||||
if (ipRange) {
|
||||
tmp = ipRange.split('-');
|
||||
|
||||
// Get starting IP address
|
||||
ipStart = tmp[0].substring(tmp[0].lastIndexOf(".") + 1);
|
||||
// Get ending IP address
|
||||
ipEnd = tmp[1].substring(tmp[1].lastIndexOf(".") + 1);
|
||||
}
|
||||
|
||||
var hostnameStart = "", hostnameEnd = "";
|
||||
if (hostnameRange) {
|
||||
tmp = hostnameRange.split('-');
|
||||
|
||||
// Get starting hostname
|
||||
hostnameStart = parseInt(tmp[0].substring(0, tmp[0].indexOf(".")).match(/\d+/));
|
||||
// Get ending hostname
|
||||
hostnameEnd = parseInt(tmp[1].substring(0, tmp[1].indexOf(".")).match(/\d+/));
|
||||
}
|
||||
|
||||
// If starting and ending index do not match
|
||||
if (!(nodeStart == userIdStart) || !(nodeEnd == userIdEnd)) {
|
||||
// Not ready to provision
|
||||
errMsg = errMsg + 'The node range and user ID range does not match.<br>';
|
||||
ready = false;
|
||||
}
|
||||
|
||||
// If an IP address range is given and the starting and ending index do not match
|
||||
if (ipRange && !(nodeStart == ipStart) || !(nodeEnd == ipEnd)) {
|
||||
errMsg = errMsg + 'The node range and IP address range does not match. ';
|
||||
ready = false;
|
||||
}
|
||||
|
||||
// If a hostname range is given and the starting and ending index do not match
|
||||
if (hostnameRange && !(nodeStart == hostnameStart) || !(nodeEnd == hostnameEnd)) {
|
||||
errMsg = errMsg + 'The node range and hostname range does not match. ';
|
||||
ready = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -672,17 +726,45 @@ zvmPlugin.prototype.loadClonePage = function(node) {
|
||||
|
||||
// Get user ID base name
|
||||
var userIdBase = tmp[0].match(/[a-zA-Z]+/);
|
||||
// Get starting index
|
||||
var userIdStart = parseInt(tmp[0].match(/\d+/));
|
||||
// Get ending index
|
||||
var userIdEnd = parseInt(tmp[1].match(/\d+/));
|
||||
|
||||
|
||||
var ipBase = "";
|
||||
if (ipRange) {
|
||||
tmp = ipRange.split('-');
|
||||
|
||||
// Get network base
|
||||
ipBase = tmp[0].substring(0, tmp[0].lastIndexOf(".") + 1);
|
||||
}
|
||||
|
||||
var domain = "";
|
||||
if (hostnameRange) {
|
||||
tmp = hostnameRange.split('-');
|
||||
|
||||
// Get domain name
|
||||
domain = tmp[0].substring(tmp[0].indexOf("."));
|
||||
}
|
||||
|
||||
// Loop through each node in the node range
|
||||
for ( var i = nodeStart; i <= nodeEnd; i++) {
|
||||
var node = nodeBase + i.toString();
|
||||
var userId = userIdBase + i.toString();
|
||||
var inst = i + '/' + nodeEnd;
|
||||
|
||||
|
||||
var args = node
|
||||
+ ';zvm.hcp=' + hcp
|
||||
+ ';zvm.userid=' + userId
|
||||
+ ';nodehm.mgt=zvm'
|
||||
+ ';groups=' + group;
|
||||
|
||||
if (ipRange) {
|
||||
var ip = ipBase + i.toString();
|
||||
args += ';hosts.ip=' + ip;
|
||||
}
|
||||
|
||||
if (hostnameRange) {
|
||||
var hostname = node + domain;
|
||||
args += ';hosts.hostnames=' + hostname;
|
||||
}
|
||||
|
||||
/**
|
||||
* (1) Define node
|
||||
*/
|
||||
@ -692,10 +774,7 @@ zvmPlugin.prototype.loadClonePage = function(node) {
|
||||
data : {
|
||||
cmd : 'nodeadd',
|
||||
tgt : '',
|
||||
args : node + ';zvm.hcp=' + hcp
|
||||
+ ';zvm.userid=' + userId
|
||||
+ ';nodehm.mgt=zvm'
|
||||
+ ';groups=' + group,
|
||||
args : args,
|
||||
msg : 'cmd=nodeadd;inst=' + inst
|
||||
+ ';out=' + statBarId
|
||||
+ ';node=' + node
|
||||
@ -704,7 +783,19 @@ zvmPlugin.prototype.loadClonePage = function(node) {
|
||||
success : updateZCloneStatus
|
||||
});
|
||||
}
|
||||
} else {
|
||||
} else {
|
||||
var args = nodeRange
|
||||
+ ';zvm.hcp=' + hcp
|
||||
+ ';zvm.userid=' + userIdRange
|
||||
+ ';nodehm.mgt=zvm'
|
||||
+ ';groups=' + group;
|
||||
|
||||
if (ipRange)
|
||||
args += ';hosts.ip=' + ipRange;
|
||||
|
||||
if (hostnameRange)
|
||||
args += ';hosts.hostnames=' + hostnameRange;
|
||||
|
||||
/**
|
||||
* (1) Define node
|
||||
*/
|
||||
@ -714,10 +805,7 @@ zvmPlugin.prototype.loadClonePage = function(node) {
|
||||
data : {
|
||||
cmd : 'nodeadd',
|
||||
tgt : '',
|
||||
args : nodeRange + ';zvm.hcp=' + hcp
|
||||
+ ';zvm.userid=' + userIdRange
|
||||
+ ';nodehm.mgt=zvm'
|
||||
+ ';groups=' + group,
|
||||
args : args,
|
||||
msg : 'cmd=nodeadd;inst=1/1;out=' + statBarId
|
||||
+ ';node=' + nodeRange
|
||||
},
|
||||
@ -727,8 +815,7 @@ zvmPlugin.prototype.loadClonePage = function(node) {
|
||||
}
|
||||
|
||||
// Create loader
|
||||
var loader = createLoader('');
|
||||
$('#' + statBarId).find('div').append(loader);
|
||||
$('#' + statBarId).find('div').append(createLoader());
|
||||
$('#' + statBarId).show();
|
||||
|
||||
// Disable clone button
|
||||
@ -1388,8 +1475,9 @@ zvmPlugin.prototype.addNode = function() {
|
||||
var info = createInfoBar('Add a z/VM node range');
|
||||
addNodeForm.append(info);
|
||||
addNodeForm.append('<div><label>Node range:</label><input type="text" name="node"/></div>');
|
||||
addNodeForm.append('<div><label>IP address range (optional):</label><input name="ip" type="text"></div>');
|
||||
addNodeForm.append('<div><label>User ID range:</label><input type="text" name="userId"/></div>');
|
||||
addNodeForm.append('<div><label>IP address range (optional):</label><input name="ip" type="text"></div>');
|
||||
addNodeForm.append('<div><label>Hostname range (optional):</label><input name="hostname" type="text"></div>');
|
||||
addNodeForm.append('<div><label>Hardware control point:</label><input type="text" name="hcp"/></div>');
|
||||
addNodeForm.append('<div><label>Groups:</label><input type="text" name="groups"/></div>');
|
||||
|
||||
@ -1406,6 +1494,7 @@ zvmPlugin.prototype.addNode = function() {
|
||||
// Get inputs
|
||||
var nodeRange = $(this).find('input[name=node]').val();
|
||||
var ipRange = $(this).find('input[name=ip]').val();
|
||||
var hostnameRange = $(this).find('input[name=hostname]').val();
|
||||
var userIdRange = $(this).find('input[name=userId]').val();
|
||||
var group = $(this).find('input[name=groups]').val();
|
||||
var hcp = $(this).find('input[name=hcp]').val();
|
||||
@ -1420,7 +1509,7 @@ zvmPlugin.prototype.addNode = function() {
|
||||
var errMsg = '';
|
||||
var ready = true;
|
||||
if (nodeRange.indexOf('-') > -1 || userIdRange.indexOf('-') > -1) {
|
||||
if (nodeRange.indexOf('-') < 0 || userIdRange.indexOf('-') < 0 || ipRange.indexOf('-') < 0) {
|
||||
if (nodeRange.indexOf('-') < 0 || userIdRange.indexOf('-') < 0) {
|
||||
errMsg = errMsg + 'A user ID range and node range needs to be given. ';
|
||||
ready = false;
|
||||
} else {
|
||||
@ -1438,12 +1527,25 @@ zvmPlugin.prototype.addNode = function() {
|
||||
// Get ending index
|
||||
var userIdEnd = parseInt(tmp[1].match(/\d+/));
|
||||
|
||||
tmp = ipRange.split('-');
|
||||
|
||||
// Get starting IP address
|
||||
var ipStart = tmp[0].substring(tmp[0].lastIndexOf(".") + 1);
|
||||
// Get ending IP address
|
||||
var ipEnd = tmp[1].substring(tmp[1].lastIndexOf(".") + 1);
|
||||
var ipStart = "", ipEnd = "";
|
||||
if (ipRange) {
|
||||
tmp = ipRange.split('-');
|
||||
|
||||
// Get starting IP address
|
||||
ipStart = tmp[0].substring(tmp[0].lastIndexOf(".") + 1);
|
||||
// Get ending IP address
|
||||
ipEnd = tmp[1].substring(tmp[1].lastIndexOf(".") + 1);
|
||||
}
|
||||
|
||||
var hostnameStart = "", hostnameEnd = "";
|
||||
if (hostnameRange) {
|
||||
tmp = hostnameRange.split('-');
|
||||
|
||||
// Get starting hostname
|
||||
hostnameStart = parseInt(tmp[0].substring(0, tmp[0].indexOf(".")).match(/\d+/));
|
||||
// Get ending hostname
|
||||
hostnameEnd = parseInt(tmp[1].substring(0, tmp[1].indexOf(".")).match(/\d+/));
|
||||
}
|
||||
|
||||
// If starting and ending index do not match
|
||||
if (!(nodeStart == userIdStart) || !(nodeEnd == userIdEnd)) {
|
||||
@ -1456,6 +1558,12 @@ zvmPlugin.prototype.addNode = function() {
|
||||
errMsg = errMsg + 'The node range and IP address range does not match. ';
|
||||
ready = false;
|
||||
}
|
||||
|
||||
// If a hostname range is given and the starting and ending index do not match
|
||||
if (hostnameRange && !(nodeStart == hostnameStart) || !(nodeEnd == hostnameEnd)) {
|
||||
errMsg = errMsg + 'The node range and hostname range does not match. ';
|
||||
ready = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1485,27 +1593,43 @@ zvmPlugin.prototype.addNode = function() {
|
||||
|
||||
// Get user ID base name
|
||||
var userIdBase = tmp[0].match(/[a-zA-Z]+/);
|
||||
// Get starting index
|
||||
var userIdStart = parseInt(tmp[0].match(/\d+/));
|
||||
// Get ending index
|
||||
var userIdEnd = parseInt(tmp[1].match(/\d+/));
|
||||
|
||||
tmp = ipRange.split('-');
|
||||
|
||||
// Get network base
|
||||
var ipBase = tmp[0].substring(0, tmp[0].lastIndexOf(".") + 1);
|
||||
// Get starting IP address
|
||||
var ipStart = tmp[0].substring(tmp[0].lastIndexOf(".") + 1);
|
||||
// Get ending IP address
|
||||
var ipEnd = tmp[1].substring(tmp[1].lastIndexOf(".") + 1);
|
||||
var ipBase = "";
|
||||
if (ipRange) {
|
||||
tmp = ipRange.split('-');
|
||||
|
||||
// Get network base
|
||||
ipBase = tmp[0].substring(0, tmp[0].lastIndexOf(".") + 1);
|
||||
}
|
||||
|
||||
var domain = "";
|
||||
if (hostnameRange) {
|
||||
tmp = hostnameRange.split('-');
|
||||
|
||||
// Get domain name
|
||||
domain = tmp[0].substring(tmp[0].indexOf("."));
|
||||
}
|
||||
|
||||
// Loop through each node in the node range
|
||||
for ( var i = nodeStart; i <= nodeEnd; i++) {
|
||||
var node = nodeBase + i.toString();
|
||||
var userId = userIdBase + i.toString();
|
||||
var ip = ipBase + i.toString();
|
||||
var inst = i + '/' + nodeEnd;
|
||||
|
||||
var args = node + ';zvm.hcp=' + hcp
|
||||
+ ';zvm.userid=' + userId
|
||||
+ ';nodehm.mgt=zvm' + ';groups=' + group;
|
||||
|
||||
if (ipRange) {
|
||||
var ip = ipBase + i.toString();
|
||||
args += ';hosts.ip=' + ip;
|
||||
}
|
||||
|
||||
if (hostnameRange) {
|
||||
var hostname = node + domain;
|
||||
args += ';hosts.hostnames=' + hostname;
|
||||
}
|
||||
|
||||
/**
|
||||
* (1) Define node
|
||||
*/
|
||||
@ -1515,10 +1639,7 @@ zvmPlugin.prototype.addNode = function() {
|
||||
data : {
|
||||
cmd : 'nodeadd',
|
||||
tgt : '',
|
||||
args : node + ';zvm.hcp=' + hcp
|
||||
+ ';zvm.userid=' + userId
|
||||
+ ';nodehm.mgt=zvm' + ';groups=' + group
|
||||
+ ';hosts.ip=' + ip,
|
||||
args : args,
|
||||
msg : 'cmd=addnewnode;inst=' + inst + ';noderange=' + nodeRange
|
||||
},
|
||||
|
||||
@ -1567,6 +1688,16 @@ zvmPlugin.prototype.addNode = function() {
|
||||
});
|
||||
}
|
||||
} else {
|
||||
var args = nodeRange + ';zvm.hcp=' + hcp
|
||||
+ ';zvm.userid=' + userIdRange
|
||||
+ ';nodehm.mgt=zvm' + ';groups=' + group;
|
||||
|
||||
if (ipRange)
|
||||
args += ';hosts.ip=' + ipRange;
|
||||
|
||||
if (hostnameRange)
|
||||
args += ';hosts.hostnames=' + hostnameRange;
|
||||
|
||||
// Only one node to add
|
||||
$.ajax( {
|
||||
url : 'lib/cmd.php',
|
||||
@ -1574,10 +1705,7 @@ zvmPlugin.prototype.addNode = function() {
|
||||
data : {
|
||||
cmd : 'nodeadd',
|
||||
tgt : '',
|
||||
args : nodeRange + ';zvm.hcp=' + hcp
|
||||
+ ';zvm.userid=' + userIdRange
|
||||
+ ';nodehm.mgt=zvm' + ';groups=' + group
|
||||
+ ';hosts.ip=' + ipRange,
|
||||
args : args,
|
||||
msg : 'cmd=addnewnode;node=' + nodeRange
|
||||
},
|
||||
|
||||
|
@ -101,8 +101,8 @@ function loadHcpInfo(data) {
|
||||
} // End of if (hcp)
|
||||
} else {
|
||||
// Create warning dialog
|
||||
var msg = createWarnBar('z/VM SMAPI is not responding to ' + hcp + '. It needs to be reset.');
|
||||
var warnDialog = $('<div></div>').append(msg);
|
||||
var warning = createWarnBar('z/VM SMAPI is not responding to ' + hcp + '. It needs to be reset.');
|
||||
var warnDialog = $('<div></div>').append(warning);
|
||||
|
||||
// Open dialog
|
||||
warnDialog.dialog({
|
||||
@ -2279,6 +2279,24 @@ function createZProvisionNew(inst) {
|
||||
hcpDiv.append(hcpInput);
|
||||
vmAttr.append(hcpDiv);
|
||||
|
||||
// Create an advanced link to set IP address and hostname
|
||||
var advancedLnk = $('<div><label><a style="color: blue; cursor: pointer;">Advanced</a></label></div>');
|
||||
vmAttr.append(advancedLnk);
|
||||
var advanced = $('<div style="margin-left: 20px;"></div>').hide();
|
||||
vmAttr.append(advanced);
|
||||
|
||||
var ip = $('<div><label>IP address:</label><input type="text" name="ip" ' +
|
||||
'title="Optional. Specify the IP address that will be assigned to this node. An IP address must be given in the following format: 192.168.0.1."/></div>');
|
||||
advanced.append(ip);
|
||||
var hostname = $('<div><label>Hostname:</label><input type="text" name="hostname" ' +
|
||||
'title="Optional. Specify the hostname that will be assigned to this node. A hostname must be given in the following format: ihost1.sourceforge.net."/></div>');
|
||||
advanced.append(hostname);
|
||||
|
||||
// Show IP address and hostname inputs on-click
|
||||
advancedLnk.click(function() {
|
||||
advanced.toggle();
|
||||
});
|
||||
|
||||
// Create operating system image input
|
||||
var os = $('<div></div>');
|
||||
var osLabel = $('<label for="os">Operating system image:</label>');
|
||||
@ -2568,7 +2586,7 @@ function createZProvisionNew(inst) {
|
||||
diskArgs.eq(i).css('border', 'solid #BDBDBD 1px');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// If inputs are valid, ready to provision
|
||||
if (ready) {
|
||||
if (!os.val()) {
|
||||
@ -2627,6 +2645,20 @@ function createZProvisionNew(inst) {
|
||||
var hcp = $('#' + thisTabId + ' input[name=hcp]').val();
|
||||
// Get group
|
||||
var group = $('#' + thisTabId + ' input[name=group]').val();
|
||||
// Get IP address and hostname
|
||||
var ip = $('#' + thisTabId + ' input[name=ip]').val();
|
||||
var hostname = $('#' + thisTabId + ' input[name=hostname]').val();
|
||||
|
||||
// Generate arguments to sent
|
||||
var args = node + ';zvm.hcp=' + hcp
|
||||
+ ';zvm.userid=' + userId
|
||||
+ ';nodehm.mgt=zvm'
|
||||
+ ';groups=' + group;
|
||||
if (ip)
|
||||
args += ';hosts.ip=' + ip;
|
||||
|
||||
if (hostname)
|
||||
args += ';hosts.hostnames=' + hostname;
|
||||
|
||||
/**
|
||||
* (1) Define node
|
||||
@ -2637,9 +2669,7 @@ function createZProvisionNew(inst) {
|
||||
data : {
|
||||
cmd : 'nodeadd',
|
||||
tgt : '',
|
||||
args : node + ';zvm.hcp=' + hcp
|
||||
+ ';zvm.userid=' + userId
|
||||
+ ';nodehm.mgt=zvm' + ';groups=' + group,
|
||||
args : args,
|
||||
msg : 'cmd=nodeadd;out=' + inst
|
||||
},
|
||||
|
||||
@ -2702,6 +2732,20 @@ function createZProvisionNew(inst) {
|
||||
var hcp = $('#' + thisTabId + ' input[name=hcp]').val();
|
||||
// Get group
|
||||
var group = $('#' + thisTabId + ' input[name=group]').val();
|
||||
// Get IP address and hostname
|
||||
var ip = $('#' + thisTabId + ' input[name=ip]').val();
|
||||
var hostname = $('#' + thisTabId + ' input[name=hostname]').val();
|
||||
|
||||
// Generate arguments to sent
|
||||
var args = node + ';zvm.hcp=' + hcp
|
||||
+ ';zvm.userid=' + userId
|
||||
+ ';nodehm.mgt=zvm'
|
||||
+ ';groups=' + group;
|
||||
if (ip)
|
||||
args += ';hosts.ip=' + ip;
|
||||
|
||||
if (hostname)
|
||||
args += ';hosts.hostnames=' + hostname;
|
||||
|
||||
/**
|
||||
* (1) Define node
|
||||
@ -2712,9 +2756,7 @@ function createZProvisionNew(inst) {
|
||||
data : {
|
||||
cmd : 'nodeadd',
|
||||
tgt : '',
|
||||
args : node + ';zvm.hcp=' + hcp + ';zvm.userid='
|
||||
+ userId + ';nodehm.mgt=zvm' + ';groups='
|
||||
+ group,
|
||||
args : args,
|
||||
msg : 'cmd=nodeadd;out=' + inst
|
||||
},
|
||||
|
||||
|
@ -152,7 +152,7 @@ function loadMonitorPage() {
|
||||
var pcpMon = $('<tr></tr>');
|
||||
pcpMon.append($('<td><a href="#" name="pcpmon">PCP</a></td>'));
|
||||
pcpMon.append($('<td></td>').append(statusButtonHash['pcpmon']));
|
||||
pcpMon.append($('<td>Under construction.</td>'));
|
||||
pcpMon.append($('<td>Not yet supported</td>'));
|
||||
monTableBody.append(pcpMon);
|
||||
|
||||
// Do not word wrap
|
||||
@ -303,7 +303,7 @@ function loadMonitorTab(name) {
|
||||
*/
|
||||
function loadUnfinish(monitorName, tab) {
|
||||
var unfinishPage = $('<div></div>');
|
||||
unfinishPage.append(createInfoBar('Under construction'));
|
||||
unfinishPage.append(createInfoBar('Not yet supported'));
|
||||
tab.add(monitorName, 'Unfinished', unfinishPage, true);
|
||||
}
|
||||
|
||||
|
@ -898,7 +898,7 @@ function chCondScopeDia() {
|
||||
*/
|
||||
function mkResponseDia() {
|
||||
var diaDiv = $('<div title="Make Response"><div>');
|
||||
diaDiv.append('under construction.');
|
||||
diaDiv.append('Not yet supported.');
|
||||
|
||||
diaDiv.dialog({
|
||||
modal: true,
|
||||
|
@ -1,161 +1,151 @@
|
||||
/**
|
||||
* global variable
|
||||
* Global variables
|
||||
*/
|
||||
var XcatmonTableId="XcatMonsettingTable";
|
||||
var xcatMonTableId = "xcatMonSettingTable";
|
||||
|
||||
/**
|
||||
* load xCAT monitor
|
||||
* Load xCAT monitoring
|
||||
*/
|
||||
function loadXcatMon(){
|
||||
//find the xcat mon tab
|
||||
function loadXcatMon() {
|
||||
// Find xCAT monitoring tab
|
||||
var xcatMonTab = $('#xcatmon');
|
||||
|
||||
xcatMonTab.append("<div id= xcatmonTable></div>");
|
||||
|
||||
//show the content of the table monsetting
|
||||
|
||||
// Show content of monsetting table
|
||||
$.ajax({
|
||||
url:'lib/cmd.php',
|
||||
dataType: 'json',
|
||||
data:{
|
||||
url : 'lib/cmd.php',
|
||||
dataType : 'json',
|
||||
data : {
|
||||
cmd : 'tabdump',
|
||||
tgt :'',
|
||||
tgt : '',
|
||||
args : 'monsetting',
|
||||
msg : ''
|
||||
},
|
||||
success: loadXcatMonSetting
|
||||
});
|
||||
success : loadXcatMonSetting
|
||||
});
|
||||
}
|
||||
|
||||
function loadXcatMonSetting(data){
|
||||
var apps; //contain the xcatmon apps config
|
||||
var rsp = data.rsp;
|
||||
var apps_flag = 0; //is the apps is stored?
|
||||
var ping; //contain the xcatmon ping-interval setting
|
||||
function loadXcatMonSetting(data) {
|
||||
var apps = ""; // Contains the xcatmon config
|
||||
var rsp = data.rsp;
|
||||
var apps_flag = 0;
|
||||
var ping; // xcatmon ping interval
|
||||
var ping_flag = 0;
|
||||
|
||||
//create a infoBar
|
||||
var infoBar=createInfoBar('Click on a cell to edit. Click outside the table to write to the cell. Once you are finished configuring the xCAT monitor, click on Apply.');
|
||||
// Create an info bar
|
||||
var infoBar = createInfoBar('Click on a cell to edit. Click outside the table to write to the cell. Once you are finished configuring the xCAT monitor, click on Apply.');
|
||||
$('#xcatmonTable').append(infoBar);
|
||||
|
||||
//create xcatmonTable
|
||||
var XcatmonTable= new DataTable(XcatmonTableId);
|
||||
|
||||
//create Datatable
|
||||
|
||||
// Create xcatmon table
|
||||
var xcatmonTable = new DataTable(xcatMonTableId);
|
||||
|
||||
// Create datatable
|
||||
var dTable;
|
||||
|
||||
//create the xcatmonTable header
|
||||
var header=rsp[0].split(",");
|
||||
header.splice(3,2);
|
||||
header.splice(0,1);
|
||||
header[0]="apps name";
|
||||
header[1]="configure";
|
||||
|
||||
// Create table header
|
||||
var header = rsp[0].split(",");
|
||||
header.splice(3, 2);
|
||||
header.splice(0, 1);
|
||||
header[0] = "App Name";
|
||||
header[1] = "Configure";
|
||||
header.push('<input type="checkbox" onclick="selectAllCheckbox(event,$(this))">');
|
||||
|
||||
header.unshift('');
|
||||
XcatmonTable.init(header); //create the table header
|
||||
xcatmonTable.init(header);
|
||||
|
||||
//create container of original table contents
|
||||
var origCont= new Array();
|
||||
origCont[0]=header; //table header
|
||||
// Create container for original table contents
|
||||
var origCont = new Array();
|
||||
origCont[0] = header; // Table headers
|
||||
|
||||
//create contariner for new contents use for update the monsetting table
|
||||
var newCont =new Object();
|
||||
newCont[0]=rsp[0].split(","); //table header
|
||||
|
||||
//create container for other monsetting lines not xcatmon
|
||||
var otherCont =new Array();
|
||||
// Create container for new contents to use later updating monsetting table
|
||||
var newCont = new Object();
|
||||
newCont[0] = rsp[0].split(","); // Table headers
|
||||
|
||||
$('#xcatmonTable').append(XcatmonTable.object()); //add table object
|
||||
var m = 1; //the count for origCont
|
||||
// Create container for other monsetting lines
|
||||
var otherCont = new Array();
|
||||
|
||||
$('#xcatmonTable').append(xcatmonTable.object());
|
||||
var m = 1; // Count for origCont
|
||||
var n = 0;
|
||||
for (var i=1; i<rsp.length; i++) { //get the apps and the ping-interval configure
|
||||
var pos = rsp[i].indexOf("xcatmon"); //only check the xcatmon setting
|
||||
for ( var i = 1; i < rsp.length; i++) {
|
||||
var pos = rsp[i].indexOf("xcatmon"); // Only check xcatmon setting
|
||||
if (pos == 1) {
|
||||
//get the useful info and add it to the page.
|
||||
if ((rsp[i].indexOf("apps")== -1 ) && (rsp[i].indexOf("ping")== -1)) {
|
||||
var cols=rsp[i].split(',');
|
||||
|
||||
//pair the semicolon of the content
|
||||
for (var j=0; j<cols.length; j++) {
|
||||
if (cols[j].count('"')%2 == 1) {
|
||||
while (cols[j].count('"')%2 == 1) {
|
||||
cols[j]=cols[j]+","+cols[j+1];
|
||||
cols.splice(j+1,1);
|
||||
if ((rsp[i].indexOf("apps") == -1) && (rsp[i].indexOf("ping") == -1)) {
|
||||
var cols = rsp[i].split(',');
|
||||
for ( var j = 0; j < cols.length; j++) {
|
||||
if (cols[j].count('"') % 2 == 1) {
|
||||
while (cols[j].count('"') % 2 == 1) {
|
||||
cols[j] = cols[j] + "," + cols[j + 1];
|
||||
cols.splice(j + 1, 1);
|
||||
}
|
||||
}
|
||||
cols[j] = cols[j].replace(new RegExp('"','g'),'');
|
||||
cols[j] = cols[j].replace(new RegExp('"', 'g'), '');
|
||||
}
|
||||
|
||||
//remove the commend disable
|
||||
cols.splice(3,2);
|
||||
//remove the xcatmon
|
||||
cols.splice(0,1);
|
||||
|
||||
cols.push('<input type="checkbox" name="' + cols[0] + '" title="Checking this checkbox will add/remove the app from the configure apps value" />');
|
||||
cols.unshift('<span class="ui-icon ui-icon-close" onclick="deleteRow1(this)"></span>');
|
||||
|
||||
//add the column tho the table
|
||||
XcatmonTable.add(cols);
|
||||
|
||||
|
||||
cols.splice(3, 2);
|
||||
cols.splice(0, 1);
|
||||
cols.push('<input type="checkbox" name="' + cols[0] + '" title="Checking this box will add/remove the app from the configured app value"/>');
|
||||
cols.unshift('<span class="ui-icon ui-icon-close" onclick="deleteXcatMonRow(this)"></span>');
|
||||
|
||||
// Add column to table
|
||||
xcatmonTable.add(cols);
|
||||
origCont[m++] = cols;
|
||||
} else {
|
||||
if (!apps_flag) { //check the apps setting
|
||||
if (rsp[i].indexOf("apps") > -1) { //check for is apps or not
|
||||
apps=rsp[i].split(',');
|
||||
|
||||
for (var j=0; j<apps.length; j++) { //pair the semicolon
|
||||
if (apps[j].count('"')%2 == 1) {
|
||||
while (apps[j].count('"')%2 == 1){
|
||||
apps[j] = apps[j]+","+apps[j+1];
|
||||
apps.splice(j+1,1);
|
||||
if (!apps_flag) { // Check the apps setting
|
||||
if (rsp[i].indexOf("apps") > -1) {
|
||||
apps = rsp[i].split(',');
|
||||
|
||||
for ( var j = 0; j < apps.length; j++) {
|
||||
if (apps[j].count('"') % 2 == 1) {
|
||||
while (apps[j].count('"') % 2 == 1) {
|
||||
apps[j] = apps[j] + "," + apps[j + 1];
|
||||
apps.splice(j + 1, 1);
|
||||
}
|
||||
}
|
||||
apps[j] = apps[j].replace(new RegExp('"','g'),'');
|
||||
apps[j] = apps[j].replace(new RegExp('"', 'g'), '');
|
||||
}
|
||||
|
||||
apps_flag=1; //set the flag to 1 to avoid this subroute
|
||||
|
||||
apps_flag = 1; // Set the flag to 1 to avoid this subroute
|
||||
}
|
||||
}
|
||||
|
||||
//get into the ping setting subroute
|
||||
|
||||
// Get into the ping settings
|
||||
if (!ping_flag) {
|
||||
//check the ping-interval config
|
||||
// Check the ping interval
|
||||
if (rsp[i].indexOf("ping-interval") > -1) {
|
||||
ping=rsp[i].split(',');
|
||||
//pair the semicolon
|
||||
for (var j=0; j<ping.length; j++) {
|
||||
if (ping[j].count('"')%2 == 1) {
|
||||
while (ping[j].count('"')%2 == 1) {
|
||||
ping[j] = ping[j]+"," + ping[j+1];
|
||||
ping.splice(j+1,1);
|
||||
ping = rsp[i].split(',');
|
||||
for ( var j = 0; j < ping.length; j++) {
|
||||
if (ping[j].count('"') % 2 == 1) {
|
||||
while (ping[j].count('"') % 2 == 1) {
|
||||
ping[j] = ping[j] + "," + ping[j + 1];
|
||||
ping.splice(j + 1, 1);
|
||||
}
|
||||
}
|
||||
ping[j] = ping[j].replace((new RegExp('"','g')),'');
|
||||
ping[j] = ping[j].replace((new RegExp('"', 'g')),
|
||||
'');
|
||||
}
|
||||
ping_flag = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (pos != 1) {
|
||||
//the other monitor in the monsetting table
|
||||
// The other monitor in the monsetting table
|
||||
var otherCols = rsp[i].split(',');
|
||||
for (var k=0; k<otherCols.length; k++) {
|
||||
if (otherCols[k].count('"')%2 == 1) {
|
||||
while (otherCols[k].count('"')%2 == 1) {
|
||||
otherCols[k] = otherCols[k]+","+otherCols[k+1];
|
||||
otherCols.splice(k+1,1);
|
||||
for ( var k = 0; k < otherCols.length; k++) {
|
||||
if (otherCols[k].count('"') % 2 == 1) {
|
||||
while (otherCols[k].count('"') % 2 == 1) {
|
||||
otherCols[k] = otherCols[k] + "," + otherCols[k + 1];
|
||||
otherCols.splice(k + 1, 1);
|
||||
}
|
||||
}
|
||||
otherCols[k] = otherCols[k].replace(new RegExp('"','g'),'');
|
||||
otherCols[k] = otherCols[k].replace(new RegExp('"', 'g'), '');
|
||||
}
|
||||
//add the rows to the otherCont.
|
||||
|
||||
otherCont[n++] = otherCols;
|
||||
|
||||
}
|
||||
}
|
||||
//if the apps is not in the monsetting table.Then create the default apps row.
|
||||
//when saving the changes,add the row to the table.
|
||||
if(!apps_flag) {
|
||||
// If app is not in the monsetting table, then create default apps row
|
||||
if (!apps_flag) {
|
||||
apps = rsp[0].split(',');
|
||||
apps[0] = "xcatmon";
|
||||
apps[1] = "apps";
|
||||
@ -164,196 +154,176 @@ function loadXcatMonSetting(data){
|
||||
apps[4] = "";
|
||||
}
|
||||
|
||||
//if the ping-interval is not in the monsetting table.Then create the default ping-interval row.
|
||||
//when saving the changes,add the row to the table.
|
||||
if(!ping_flag) {
|
||||
// If the ping interval is not in the monsetting table, then create the
|
||||
// default ping-interval
|
||||
if (!ping_flag) {
|
||||
ping = rsp[0].split(',');
|
||||
ping[0] = "xcatmon";
|
||||
ping[1] = "ping-interval";
|
||||
//the default ping-interval setting is 5
|
||||
|
||||
// Set default ping-interval setting to 5
|
||||
ping[2] = "5";
|
||||
ping[3] = "";
|
||||
ping[4] = "";
|
||||
}
|
||||
|
||||
//set the checkbox to be true according to the apps
|
||||
// Set checkbox to be true
|
||||
var checked = apps[2].split(',');
|
||||
for (var i=0; i<checked.length; i++) {
|
||||
//set the selcet checkbox to true
|
||||
$("input:checkbox[name="+checked[i]+"]").attr('checked',true);
|
||||
for (var j=0; j<origCont.length; j++) {
|
||||
//set the origCont's checkbox to true
|
||||
for ( var i = 0; i < checked.length; i++) {
|
||||
$("input:checkbox[name=" + checked[i] + "]").attr('checked', true);
|
||||
for ( var j = 0; j < origCont.length; j++) {
|
||||
if (origCont[j][1] == checked[i]) {
|
||||
origCont[j].splice(3,1);
|
||||
origCont[j].push('<input type="checkbox" name="'+origCont[j][1]+'" title="Click this checkbox will add/remove the app from the configure apps value." checked=true/>');
|
||||
origCont[j].splice(3, 1);
|
||||
origCont[j].push('<input type="checkbox" name="' + origCont[j][1] + '" title="Check this checkbox to add/remove the app from the configured app value." checked=true/>');
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
$(":checkbox").tooltip();
|
||||
|
||||
//make the table editable
|
||||
$('#'+ XcatmonTableId + ' td:not(td:nth-child(1),td:last-child)').editable(
|
||||
function (value,settings) {
|
||||
var colPos = this.cellIndex;
|
||||
var rowPos = dTable.fnGetPosition(this.parentNode);
|
||||
dTable.fnUpdate(value,rowPos,colPos);
|
||||
return (value);
|
||||
},{
|
||||
onblur : 'submit',
|
||||
type : 'textarea',
|
||||
placeholder: ' ',
|
||||
height : '30px'
|
||||
}
|
||||
);
|
||||
|
||||
//save the datatable
|
||||
dTable = $('#' + XcatmonTableId).dataTable({
|
||||
'iDisplayLength': 50,
|
||||
'bLengthChange': false,
|
||||
"sScrollX": "100%",
|
||||
"bAutoWidth": true
|
||||
// Make the table editable
|
||||
$('#' + xcatMonTableId + ' td:not(td:nth-child(1),td:last-child)').editable(function(value, settings) {
|
||||
var colPos = this.cellIndex;
|
||||
var rowPos = dTable.fnGetPosition(this.parentNode);
|
||||
dTable.fnUpdate(value, rowPos, colPos);
|
||||
return (value);
|
||||
}, {
|
||||
onblur : 'submit',
|
||||
type : 'textarea',
|
||||
placeholder : ' ',
|
||||
height : '30px'
|
||||
});
|
||||
|
||||
//create action bar
|
||||
// Save datatable
|
||||
dTable = $('#' + xcatMonTableId).dataTable({
|
||||
'iDisplayLength' : 50,
|
||||
'bLengthChange' : false,
|
||||
"sScrollX" : "100%",
|
||||
"bAutoWidth" : true
|
||||
});
|
||||
|
||||
// Create action bar
|
||||
var actionBar = $('<div class="actionBar"></div>');
|
||||
var addRowLnk = $('<a>Add row</a>');
|
||||
addRowLnk.bind('click', function(event) {
|
||||
//create the container of the new row
|
||||
// Create container for new row
|
||||
var row = new Array();
|
||||
|
||||
//add the delete button to the row
|
||||
row.push('<span class="ui-icon ui-icon-close" onclick="deleteRow1(this)"></span>');
|
||||
//add the xcatmon
|
||||
//add the contain of the setting
|
||||
for (var i=0; i<header.length-2; i++) {
|
||||
|
||||
// Add delete button to row
|
||||
row.push('<span class="ui-icon ui-icon-close" onclick="deleteXcatMonRow(this)"></span>');
|
||||
for ( var i = 0; i < header.length - 2; i++)
|
||||
row.push('');
|
||||
}
|
||||
|
||||
//add the checkbox
|
||||
row.push('<input type="checkbox" name="'+row[2]+'" title="Checking this checkbox will add/remove the app from the configure apps value"/>');
|
||||
//get the datatable of the table
|
||||
var dTable = $('#' + XcatmonTableId).dataTable();
|
||||
//add the new row to the datatable
|
||||
|
||||
// Add checkbox
|
||||
row.push('<input type="checkbox" name="' + row[2] + '" title="Checking this checkbox will add/remove the app from the configured apps value"/>');
|
||||
// Get the datatable of the table
|
||||
var dTable = $('#' + xcatMonTableId).dataTable();
|
||||
// Add the new row to the datatable
|
||||
dTable.fnAddData(row);
|
||||
|
||||
//make the datatable editable
|
||||
|
||||
// make the datatable editable
|
||||
$(":checkbox[title]").tooltip();
|
||||
$('#' + XcatmonTableId+' td:not(td:nth-child(1),td:last-child)').editable(
|
||||
function(value,settings) {
|
||||
var colPos = this.cellIndex;
|
||||
var rowPos = dTable.fnGetPosition(this.parentNode);
|
||||
dTable.fnUpdate(value,rowPos,colPos);
|
||||
return (value);
|
||||
},{
|
||||
onblur : 'submit',
|
||||
type : 'textarea',
|
||||
placeholder: ' ',
|
||||
height : '30px'
|
||||
}
|
||||
);
|
||||
$('#' + xcatMonTableId + ' td:not(td:nth-child(1),td:last-child)').editable(function(value, settings) {
|
||||
var colPos = this.cellIndex;
|
||||
var rowPos = dTable
|
||||
.fnGetPosition(this.parentNode);
|
||||
dTable.fnUpdate(value, rowPos,
|
||||
colPos);
|
||||
return (value);
|
||||
}, {
|
||||
onblur : 'submit',
|
||||
type : 'textarea',
|
||||
placeholder : ' ',
|
||||
height : '30px'
|
||||
});
|
||||
});
|
||||
|
||||
/**
|
||||
* apply button
|
||||
*
|
||||
* the Apply button is used to store the contain of the table in the page to
|
||||
* the monsetting table on the MN.
|
||||
*/
|
||||
|
||||
// Create apply button to store the contents of the table to the monsetting table
|
||||
var applyLnk = $('<a>Apply</a>');
|
||||
applyLnk.bind('click', function(event){
|
||||
//get the datatable of the page
|
||||
var dTable = $('#' + XcatmonTableId).dataTable();
|
||||
//get the rows of the datatable
|
||||
var dRows = dTable.fnGetNodes();
|
||||
applyLnk.bind('click', function(event) {
|
||||
// Get the datatable
|
||||
var dTable = $('#' + xcatMonTableId).dataTable();
|
||||
// Get datatable rows
|
||||
var dRows = dTable.fnGetNodes();
|
||||
var count = 0;
|
||||
//create the new container of the apps' value.
|
||||
|
||||
// Create a new container for the apps value
|
||||
var appValue = '';
|
||||
var tableName = 'monsetting';
|
||||
var tmp;
|
||||
var tmp1;
|
||||
var closeBtn = createButton('close');
|
||||
|
||||
//get the contain of the rows
|
||||
for (var i=0; i<dRows.length; i++) {
|
||||
|
||||
// Get the row contents
|
||||
for ( var i = 0; i < dRows.length; i++) {
|
||||
if (dRows[i]) {
|
||||
//get the columns fo the row
|
||||
// Get the row columns
|
||||
var cols = dRows[i].childNodes;
|
||||
//create the container of the new column
|
||||
// Create a container for the new columns
|
||||
var vals = new Array();
|
||||
|
||||
for (var j=1; j<cols.length-1; j++) {
|
||||
//get the value of every column(except the first and the last.why ? .ni dong de)
|
||||
var val=cols.item(j).firstChild.nodeValue;
|
||||
|
||||
if (val == ' ') {
|
||||
vals[j-1] = '';
|
||||
} else {
|
||||
vals[j-1] = val;
|
||||
}
|
||||
for ( var j = 1; j < cols.length - 1; j++) {
|
||||
var val = cols.item(j).firstChild.nodeValue;
|
||||
if (val == ' ')
|
||||
vals[j - 1] = '';
|
||||
else
|
||||
vals[j - 1] = val;
|
||||
}
|
||||
|
||||
//prepare another space for the array/
|
||||
|
||||
var vals_orig = new Array();
|
||||
//copy the data from vals to vals_orig
|
||||
for (var p=0; p<2; p++) {
|
||||
// Copy data from vals to vals_orig
|
||||
for ( var p = 0; p < 2; p++) {
|
||||
var val = vals[p];
|
||||
vals_orig[p] = val;
|
||||
vals_orig[p] = val;
|
||||
}
|
||||
|
||||
vals.push('');
|
||||
vals.push('');
|
||||
vals.unshift('xcatmon');
|
||||
//stored the new column to the newCont
|
||||
newCont[i+1] = vals;
|
||||
|
||||
// Stored new column to newCont
|
||||
newCont[i + 1] = vals;
|
||||
|
||||
//check the checkbox of the row and add different checkbox to the orignCont
|
||||
//for the cancle button
|
||||
if (cols.item(cols.length-1).firstChild.checked) {
|
||||
vals_orig.push('<input type="checkbox" name="' + vals_orig[0] + '" title="Click this checkbox will add/remove the app from the configure apps value." checked=true/>');
|
||||
if (cols.item(cols.length - 1).firstChild.checked) {
|
||||
vals_orig.push('<input type="checkbox" name="' + vals_orig[0] + '" title="Checking this checkbox will add/remove the app from the configured apps value" checked=true/>');
|
||||
} else {
|
||||
vals_orig.push('<input type="checkbox" name="' + vals_orig[0] + '" title="Click this checkbox will add/remove the app from the configure apps value."/>');
|
||||
}
|
||||
|
||||
//push the delete button to the row
|
||||
vals_orig.unshift('<span class="ui-icon ui-icon-close" onclick="deleteRow1(this)"></span>');
|
||||
//add the row to the orignCont
|
||||
origCont[i+1] = vals_orig;
|
||||
count = i+1;
|
||||
|
||||
//check the checkbox fo everyrow for merging the appName to the apps values
|
||||
if (cols.item(cols.length-1).firstChild.checked) {
|
||||
//the new value for the apps.get the name fo every app.
|
||||
appValue = appValue.concat(cols.item(2).firstChild.nodeValue+",");
|
||||
vals_orig.push('<input type="checkbox" name="' + vals_orig[0] + '" title="Checking this checkbox will add/remove the app from the configured apps value"/>');
|
||||
}
|
||||
|
||||
// Add delete button to row
|
||||
vals_orig.unshift('<span class="ui-icon ui-icon-close" onclick="deleteXcatMonRow(this)"></span>');
|
||||
// Add row to origCont
|
||||
origCont[i + 1] = vals_orig;
|
||||
count = i + 1;
|
||||
|
||||
// Check checkbox for every row when merging the app name with the apps values
|
||||
if (cols.item(cols.length - 1).firstChild.checked)
|
||||
appValue = appValue.concat(cols.item(2).firstChild.nodeValue + ",");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
count++;
|
||||
//delete the last "," of the apps value
|
||||
appValue = appValue.substring(0,(appValue.length-1));
|
||||
apps[2] = appValue;
|
||||
|
||||
//newCont add the apps row
|
||||
// Delete the last comma of the apps value
|
||||
appValue = appValue.substring(0, (appValue.length - 1));
|
||||
apps[2] = appValue;
|
||||
|
||||
newCont[count++] = apps;
|
||||
//newCont add the ping-interval row
|
||||
newCont[count++] = ping;
|
||||
|
||||
//add the other monitor setting of the mosetting
|
||||
for (var j=0; j<otherCont.length; j++) {
|
||||
// Add to other monitor settings
|
||||
for ( var j = 0; j < otherCont.length; j++) {
|
||||
newCont[count++] = otherCont[j];
|
||||
}
|
||||
|
||||
//create the save dialog
|
||||
var dialogSave = $('<div id="saveDialog" align="center">saving the configuration </div>');
|
||||
dialogSave.append(createLoader());
|
||||
$('#xcatmon').append(dialogSave);
|
||||
//open the dialog..modal is true
|
||||
$("#saveDialog").dialog({modal: true});
|
||||
//hide the cross...
|
||||
$('.ui-dialog-titlebar-close').hide();
|
||||
|
||||
//put the table name and the contain to the tabRestore.php
|
||||
// Create save dialog
|
||||
var dialogSave = $('<div id="saveDialog" align="center">Saving configuration</div>');
|
||||
dialogSave.append(createLoader());
|
||||
|
||||
$('#xcatmon').append(dialogSave);
|
||||
$("#saveDialog").dialog({
|
||||
modal : true
|
||||
});
|
||||
|
||||
$('.ui-dialog-titlebar-close').hide();
|
||||
$.ajax({
|
||||
type : 'POST',
|
||||
url : 'lib/tabRestore.php',
|
||||
@ -362,83 +332,76 @@ function loadXcatMonSetting(data){
|
||||
table : tableName,
|
||||
cont : newCont
|
||||
},
|
||||
success : function(data){
|
||||
//empty the dialog.add the close button
|
||||
$("#saveDialog").empty().append('<p>The Configure has saved!</p>');
|
||||
success : function(data) {
|
||||
// empty the dialog.add the close button
|
||||
$("#saveDialog").empty().append('<p>Configuration saved!</p>');
|
||||
$("#saveDialog").append(closeBtn);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
//close button function
|
||||
closeBtn.bind('click', function(event){
|
||||
$("#saveDialog").dialog("distroy");
|
||||
|
||||
// Close button
|
||||
closeBtn.bind('click', function(event) {
|
||||
$("#saveDialog").dialog("destroy");
|
||||
$("#saveDialog").remove();
|
||||
|
||||
});
|
||||
|
||||
//clear the newCont
|
||||
// Clear the newCont
|
||||
newCont = null;
|
||||
newCont = new Object();
|
||||
//just for tmp=newCont;
|
||||
newCont[0] = rsp[0].split(",");
|
||||
});
|
||||
|
||||
|
||||
var cancelLnk = $('<a>Cancel</a>');
|
||||
cancelLnk.bind('click', function(event){
|
||||
//get the datatable of the page
|
||||
var dTable = $('#' + XcatmonTableId).dataTable();
|
||||
|
||||
//clear the datatable
|
||||
cancelLnk.bind('click', function(event) {
|
||||
// Get the datatable for the page
|
||||
var dTable = $('#' + xcatMonTableId).dataTable();
|
||||
|
||||
// Clear the datatable
|
||||
dTable.fnClearTable();
|
||||
|
||||
//add the contain of the origCont to the datatable
|
||||
for (var i=1; i<origCont.length; i++){
|
||||
dTable.fnAddData(origCont[i],true);
|
||||
}
|
||||
// Add the contents of origCont to the datatable
|
||||
for ( var i = 1; i < origCont.length; i++)
|
||||
dTable.fnAddData(origCont[i], true);
|
||||
|
||||
$(":checkbox[title]").tooltip();
|
||||
$('#'+XcatmonTableId+' td:not(td:nth-child(1),td:last-child)').editable(
|
||||
function (value,settings){
|
||||
$('#' + xcatMonTableId + ' td:not(td:nth-child(1),td:last-child)').editable(function(value, settings) {
|
||||
var colPos = this.cellIndex;
|
||||
var rowPos = dTable.fnGetPosition(this.parentNode);
|
||||
dTable.fnUpdate(value,rowPos,colPos);
|
||||
dTable.fnUpdate(value, rowPos, colPos);
|
||||
return (value);
|
||||
},{
|
||||
}, {
|
||||
onblur : 'submit',
|
||||
type : 'textarea',
|
||||
placeholder: ' ',
|
||||
placeholder : ' ',
|
||||
height : '30px'
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
//actions
|
||||
var actionsLnk = '<a>Actions</a>';
|
||||
var actsMenu = createMenu([addRowLnk, applyLnk, cancelLnk]);
|
||||
|
||||
//create an action menu
|
||||
// Create actions menu
|
||||
var actionsLnk = '<a>Actions</a>';
|
||||
var actsMenu = createMenu([ addRowLnk, applyLnk, cancelLnk ]);
|
||||
var actionsMenu = createMenu([ [ actionsLnk, actsMenu ] ]);
|
||||
actionsMenu.superfish();
|
||||
actionsMenu.css('display', 'inline-block');
|
||||
actionBar.append(actionsMenu);
|
||||
|
||||
//create a division to hold actions menu
|
||||
var menuDiv = $('<div id="' + XcatmonTableId + '_menuDiv" class="menuDiv"></div>');
|
||||
$('#' + XcatmonTableId + '_wrapper').prepend(menuDiv);
|
||||
menuDiv.append(actionBar);
|
||||
$('#' + XcatmonTableId + '_filter').appendTo(menuDiv);
|
||||
|
||||
// Create a division to hold actions menu
|
||||
var menuDiv = $('<div id="' + xcatMonTableId + '_menuDiv" class="menuDiv"></div>');
|
||||
$('#' + xcatMonTableId + '_wrapper').prepend(menuDiv);
|
||||
menuDiv.append(actionBar);
|
||||
$('#' + xcatMonTableId + '_filter').appendTo(menuDiv);
|
||||
}
|
||||
|
||||
/**
|
||||
* delete a row from the table
|
||||
* Delete a row from the table
|
||||
*/
|
||||
function deleteRow1(obj){
|
||||
var dTable = $('#' + XcatmonTableId).dataTable();
|
||||
function deleteXcatMonRow(obj) {
|
||||
var dTable = $('#' + xcatMonTableId).dataTable();
|
||||
var rows = dTable.fnGetNodes();
|
||||
var tgtRow = $(obj).parent().parent().get(0);
|
||||
for (var i in rows) {
|
||||
for ( var i in rows) {
|
||||
if (rows[i] == tgtRow) {
|
||||
dTable.fnDeleteRow(i, null,true);
|
||||
dTable.fnDeleteRow(i, null, true);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -2402,10 +2402,10 @@ function loadRconsPage(tgtNodes){
|
||||
redirectUrl += hostName;
|
||||
pos = urlPath.lastIndexOf('/');
|
||||
redirectUrl += urlPath.substring(0, pos + 1);
|
||||
redirectUrl += 'rconsShow.php';
|
||||
redirectUrl += 'rcons.php';
|
||||
|
||||
// Open the rcons page
|
||||
window.open(redirectUrl + "?rconsnd=" + tgtNodes, '', "toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,width=670,height=436");
|
||||
window.open(redirectUrl + "?rconsnd=" + tgtNodes, '', "toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,width=590,height=436");
|
||||
}
|
||||
|
||||
/**
|
||||
@ -3266,7 +3266,7 @@ function advancedLoad(group){
|
||||
}
|
||||
|
||||
/**
|
||||
* Jump to provision page onclick
|
||||
* Jump to provision page on-click
|
||||
*
|
||||
* @param tgtNodes
|
||||
* Target nodes
|
||||
@ -3281,7 +3281,7 @@ function jump2Provision(tgtNodes){
|
||||
var master = '';
|
||||
var tftpserver = '';
|
||||
var nfsserver = '';
|
||||
var diaDiv = $('<div title="Provision (only supported for Linux)" class="form" id="deployDiv"></div>');
|
||||
var diaDiv = $('<div title="Provision" class="form" id="deployDiv"></div>');
|
||||
|
||||
// Check the first node's arch type
|
||||
for (index in nodeArray){
|
||||
@ -3293,7 +3293,7 @@ function jump2Provision(tgtNodes){
|
||||
break;
|
||||
}
|
||||
|
||||
if (0 == index) {
|
||||
if (index == 0) {
|
||||
archType = origAttrs[nodeName]['arch'];
|
||||
}
|
||||
|
||||
@ -3313,11 +3313,11 @@ function jump2Provision(tgtNodes){
|
||||
}
|
||||
|
||||
if (archType.indexOf('390') != -1) {
|
||||
errorMsg += 'Please use the provision page.';
|
||||
errorMsg += 'Please use the provision page';
|
||||
}
|
||||
|
||||
// Open dialog to show error message
|
||||
if ('' != errorMsg){
|
||||
if (errorMsg){
|
||||
diaDiv.append(createWarnBar(errorMsg));
|
||||
diaDiv.dialog({
|
||||
modal: true,
|
||||
|
@ -254,7 +254,7 @@ function fillList(nodeName, defaultnodetype){
|
||||
|
||||
function createGraphical(){
|
||||
var tabarea = $('#graphTab');
|
||||
var selectNodeDiv = $('<div id="selectNodeDiv" style="margin: 20px;">Nodes:</div>');
|
||||
var selectNodeDiv = $('<div id="selectNodeDiv" style="margin: 20px;"></div>');
|
||||
var temp = 0;
|
||||
for (var i in selectNode){
|
||||
temp ++;
|
||||
@ -262,7 +262,7 @@ function createGraphical(){
|
||||
}
|
||||
|
||||
//there is not selected lpars, show the info bar
|
||||
if (0 == temp){
|
||||
if (temp == 0){
|
||||
tabarea.append(createInfoBar('Hover over a CEC and select the LPARs to do operations against.'));
|
||||
}
|
||||
//show selected lpars
|
||||
@ -578,19 +578,23 @@ function createSystemxGraphical(xnodes, area){
|
||||
}
|
||||
}
|
||||
|
||||
function addUnknownGraphical(unknownnode, area){
|
||||
var graphTab = $('#graphTab');
|
||||
var index = 0;
|
||||
|
||||
if (unknownnode.length < 1){
|
||||
function addUnknownGraphical(unknownNodes, tab){
|
||||
// Do not continue if no nodes were found
|
||||
if (unknownNodes.length < 1)
|
||||
return;
|
||||
|
||||
var list = "";
|
||||
tab.append('<label>Unknown Type Nodes</label><hr/>');
|
||||
for (var index in unknownNodes){
|
||||
list += unknownNodes[index] + ', ';
|
||||
|
||||
}
|
||||
|
||||
graphTab.append('Unknown Type Nodes:<hr/>');
|
||||
for (index in unknownnode){
|
||||
graphTab.append(unknownnode[index] + '; ');
|
||||
}
|
||||
// Delete last comma
|
||||
list = list.substr(0, list.length - 2);
|
||||
tab.append(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* update the lpars' background in cec, lpars area and selectNode
|
||||
*
|
||||
@ -602,13 +606,15 @@ function updateSelectNodeDiv(){
|
||||
$('#selectNodeDiv').empty();
|
||||
|
||||
//add buttons
|
||||
$('#selectNodeDiv').append('Nodes: ');
|
||||
for(var lparName in selectNode){
|
||||
$('#selectNodeDiv').append(lparName + ' ');
|
||||
temp ++;
|
||||
if (6 < temp){
|
||||
$('#selectNodeDiv').append('...');
|
||||
break;
|
||||
if (selectNode.length) {
|
||||
$('#selectNodeDiv').append('Nodes: ');
|
||||
for (var lparName in selectNode){
|
||||
$('#selectNodeDiv').append(lparName + ' ');
|
||||
temp ++;
|
||||
if (temp > 6){
|
||||
$('#selectNodeDiv').append('...');
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,8 +1,8 @@
|
||||
/**
|
||||
* Global variables
|
||||
*/
|
||||
var origAttrs = new Object(); // Original image attributes
|
||||
var defAttrs; // Definable image attributes
|
||||
var origAttrs = new Object(); // Original image attributes
|
||||
var defAttrs; // Definable image attributes
|
||||
var imgTableId = 'imagesDatatable'; // Images datatable ID
|
||||
var softwareList = {
|
||||
"rsct" : ["rsct.core.utils", "rsct.core", "src"],
|
||||
@ -308,8 +308,6 @@ function setImageDefAttrs(data) {
|
||||
|
||||
/**
|
||||
* Load create image page
|
||||
*
|
||||
* @return Nothing
|
||||
*/
|
||||
function loadCreateImage() {
|
||||
// Get nodes tab
|
||||
@ -322,48 +320,48 @@ function loadCreateImage() {
|
||||
return;
|
||||
}
|
||||
|
||||
var imageOsvers = $.cookie("osvers").split(",");
|
||||
var imageOsVers = $.cookie("osvers").split(",");
|
||||
var imageArch = $.cookie("osarchs").split(",");
|
||||
var profileArray = $.cookie("profiles").split(",");
|
||||
var profiles = $.cookie("profiles").split(",");
|
||||
|
||||
var parm = '';
|
||||
var i = 0;
|
||||
var createImgForm = $('<div class="form"></div>');
|
||||
var createImgFS = $('<fieldset></fieldset>').append('<legend>Create Image</legend>');
|
||||
createImgForm.append(createImgFS);
|
||||
|
||||
// Create set properties form
|
||||
var createImgForm = $('<div class="form" ></div>');
|
||||
|
||||
// Show the infomation
|
||||
// Show info bar
|
||||
var infoBar = createInfoBar('Specify the parameters for the image (stateless or statelite) you want to create, then click Create.');
|
||||
createImgForm.append(infoBar);
|
||||
createImgFS.append(infoBar);
|
||||
|
||||
// OS version selector
|
||||
parm += '<div><label>OS version:</label><select id="osvers" onchange="hpcShow()">';
|
||||
for (i in imageOsvers) {
|
||||
parm += '<option value="' + imageOsvers[i] + '">' + imageOsvers[i] + '</option>';
|
||||
}
|
||||
parm += '</select></div>';
|
||||
// Drop down for OS versions
|
||||
var osVerSelect = $('<select id="osvers" onchange="hpcShow()"></select>');
|
||||
for (var i in imageOsVers)
|
||||
osVerSelect.append('<option value="' + imageOsVers[i] + '">' + imageOsVers[i] + '</option>');
|
||||
createImgFS.append($('<div><label>OS version:</label></div>').append(osVerSelect));
|
||||
|
||||
// OS arch selector
|
||||
parm += '<div><label>OS architecture:</label><select id="osarch" onchange="hpcShow()">';
|
||||
for (i in imageArch) {
|
||||
parm += '<option value="' + imageArch[i] + '">' + imageArch[i] + '</option>';
|
||||
}
|
||||
parm += '</select></div>';
|
||||
// Drop down for OS architectures
|
||||
var imgSelect = $('<select id="osarch" onchange="hpcShow()"></select>');
|
||||
for (var i in imageArch)
|
||||
imgSelect.append('<option value="' + imageArch[i] + '">' + imageArch[i] + '</option>');
|
||||
createImgFS.append($('<div><label>OS architecture:</label></div>').append(imgSelect));
|
||||
|
||||
// Netboot interface input
|
||||
parm += '<div><label>Netboot interface:</label><input type="text" id="netbootif"></div>';
|
||||
createImgFS.append($('<div><label>Netboot interface:</label><input type="text" id="netbootif"/></div>'));
|
||||
|
||||
// Profile selector
|
||||
parm += '<div><label>Profile:</label><select id="profile" onchange="hpcShow()">';
|
||||
for (i in profileArray) {
|
||||
parm += '<option value="' + profileArray[i] + '">' + profileArray[i] + '</option>';
|
||||
}
|
||||
parm += '</select></div>';
|
||||
var profileSelect = $('<select id="profile" onchange="hpcShow()">');
|
||||
for (var i in profiles)
|
||||
profileSelect.append('<option value="' + profiles[i] + '">' + profiles[i] + '</option>');
|
||||
createImgFS.append($('<div><label>Profile:</label></div>').append(profileSelect));
|
||||
|
||||
// Boot method selector
|
||||
parm += '<div><label>Boot method:</label><select id="bootmethod"><option value="stateless">stateless</option></select></div>';
|
||||
createImgForm.append(parm);
|
||||
createHpcSelect(createImgForm);
|
||||
// Boot method drop down
|
||||
createImgFS.append($('<div><label>Boot method:</label>' +
|
||||
'<select id="bootmethod">' +
|
||||
'<option value="stateless">stateless</option>' +
|
||||
'<option value="statelite">statelite</option>' +
|
||||
'</select></div>'));
|
||||
|
||||
// Create HPC software stack fieldset
|
||||
createHpcFS(createImgForm);
|
||||
|
||||
// The button used to create images is created here
|
||||
var createImageBtn = createButton("Create");
|
||||
@ -373,39 +371,40 @@ function loadCreateImage() {
|
||||
|
||||
createImgForm.append(createImageBtn);
|
||||
|
||||
// Add and show the tab
|
||||
// Add tab
|
||||
tab.add(tabId, 'Create', createImgForm, true);
|
||||
tab.select(tabId);
|
||||
|
||||
// Check the selected osver and osarch for hcp stack select
|
||||
// If they are valid, show the hpc stack select area
|
||||
// Check the selected OS version and OS arch for HPC stack
|
||||
// If they are valid, show the HCP stack fieldset
|
||||
hpcShow();
|
||||
}
|
||||
|
||||
/**
|
||||
* Create HPC select
|
||||
* Create HPC fieldset
|
||||
*
|
||||
* @param container
|
||||
* The container to hold the HPC select
|
||||
* @return HPC select appended to the container
|
||||
* The container to hold the HPC fieldset
|
||||
* @return Nothing
|
||||
*/
|
||||
function createHpcSelect(container) {
|
||||
function createHpcFS(container) {
|
||||
var hpcFieldset = $('<fieldset id="hpcsoft"></fieldset>');
|
||||
hpcFieldset.append('<legend>HPC Software Stack</legend>');
|
||||
var str = 'Before selecting the software, you should have the following already completed for your xCAT cluster:<br/><br/>'
|
||||
+ '1. If you are using xCAT hierarchy, your service nodes are installed and running.<br/>'
|
||||
+ '2. Your compute nodes are defined to xCAT, and you have verified your hardware control capabilities, '
|
||||
|
||||
var str = 'Before selecting the software, you should have the following already completed on your xCAT cluster:<br/><br/>'
|
||||
+ '1. If you are using the xCAT hierarchy, your service nodes are installed and running.<br/>'
|
||||
+ '2. Your compute nodes are defined in xCAT, and you have verified your hardware control capabilities, '
|
||||
+ 'gathered MAC addresses, and done all the other necessary preparations for a diskless install.<br/>'
|
||||
+ '3. You should have a diskless image created with the base OS installed and verified on at least one test node.<br/>'
|
||||
+ '4. You should install the softwares on the management node, and copy all correponding packages into the location ' + '"/install/custom/otherpkgs/" based on '
|
||||
+ '<a href="http://sourceforge.net/apps/mediawiki/xcat/index.php?title=IBM_HPC_Stack_in_an_xCAT_Cluster" target="_blank">these documentations</a>.<br/>';
|
||||
+ '3. You should have a diskless image created with the base OS installed and verified it on at least one test node.<br/>'
|
||||
+ '4. You should install the software on the management node and copy all correponding packages into the location "/install/custom/otherpkgs/" based on '
|
||||
+ 'these <a href="http://sourceforge.net/apps/mediawiki/xcat/index.php?title=IBM_HPC_Stack_in_an_xCAT_Cluster" target="_blank">documents</a>.<br/>';
|
||||
hpcFieldset.append(createInfoBar(str));
|
||||
|
||||
// Advanced software when select the compute profile
|
||||
// Advanced software
|
||||
str = '<div id="partlysupport"><ul><li id="gpfsli"><input type="checkbox" onclick="softwareCheck(this)" name="gpfs">GPFS</li>' +
|
||||
'<li id="rsctli"><input type="checkbox" onclick="softwareCheck(this)" name="rsct">RSCT</li>' +
|
||||
'<li id="peli"><input type="checkbox" onclick="softwareCheck(this)" name="pe">PE</li>' +
|
||||
'<li id="esslli"><input type="checkbox" onclick="esslCheck(this)" name="essl">ESSl&PESSL</li>' +
|
||||
'<li id="esslli"><input type="checkbox" onclick="esslCheck(this)" name="essl">ESSl & PESSL</li>' +
|
||||
'</ul></div>' +
|
||||
'<div><ul><li id="gangliali"><input type="checkbox" onclick="softwareCheck(this)" name="ganglia">Ganglia</li>' +
|
||||
'</ul></div>';
|
||||
|
@ -1,67 +1,67 @@
|
||||
rconsTerm = function(nodeName, height, width){
|
||||
var sid=nodeName;
|
||||
rconsTerm = function(nodeName, height, width) {
|
||||
var sid = nodeName;
|
||||
var keyBuf = [];
|
||||
var receivingFlag = false;
|
||||
var sendTimeout;
|
||||
var errorTimeout;
|
||||
var sendTimeout = "";
|
||||
var errorTimeout = "";
|
||||
var queryStable = 's=' + sid + '&w=' + height + '&h=' + width + '&c=1&k=';
|
||||
var maxDelay = 200;
|
||||
var firstFlag = true;
|
||||
|
||||
var workingStatus;
|
||||
var termArea;
|
||||
var errorArea;
|
||||
|
||||
var ie=0;
|
||||
if(window.ActiveXObject){
|
||||
ie=1;
|
||||
|
||||
var workingStatus = "";
|
||||
var termArea = "";
|
||||
var errorArea = "";
|
||||
|
||||
var ie = 0;
|
||||
if (window.ActiveXObject) {
|
||||
ie = 1;
|
||||
}
|
||||
|
||||
|
||||
rconsInit();
|
||||
//init
|
||||
function rconsInit(){
|
||||
//create status, configure the css
|
||||
// init
|
||||
function rconsInit() {
|
||||
// create status, configure the css
|
||||
workingStatus = $('<span>.</span>');
|
||||
workingStatus.attr('class', 'off');
|
||||
|
||||
//create the disconnect button
|
||||
|
||||
// create the disconnect button
|
||||
var disconnectButton = $('<a class="off">Disconnect</a>');
|
||||
disconnectButton.bind('click', function(){
|
||||
disconnectButton.bind('click', function() {
|
||||
window.close();
|
||||
});
|
||||
|
||||
//create the control panel, add to the rcons div
|
||||
|
||||
// create the control panel, add to the rcons div
|
||||
var controlPanel = $('<pre class="stat"></pre>');
|
||||
$('#term').append(controlPanel);
|
||||
|
||||
//create the error erea
|
||||
|
||||
// create the error erea
|
||||
errorArea = $('<span></span>');
|
||||
|
||||
//add all item to controlPanel
|
||||
|
||||
// add all item to controlPanel
|
||||
controlPanel.append(workingStatus);
|
||||
controlPanel.append(disconnectButton);
|
||||
controlPanel.append(errorArea);
|
||||
|
||||
//create the termArea
|
||||
|
||||
// create the termArea
|
||||
termArea = $('<div></div>');
|
||||
$('#term').append(termArea);
|
||||
|
||||
//bind keypress event
|
||||
document.onkeypress=rconsKeypress;
|
||||
document.onkeydown=rconsKeydown;
|
||||
window.onbeforeunload = function(){
|
||||
|
||||
// bind keypress event
|
||||
document.onkeypress = rconsKeypress;
|
||||
document.onkeydown = rconsKeydown;
|
||||
window.onbeforeunload = function() {
|
||||
rconsDisconnect();
|
||||
alert("This rcons page is closed.");
|
||||
alert("Closing remote console");
|
||||
};
|
||||
|
||||
|
||||
rconsSend();
|
||||
}
|
||||
|
||||
//close the connection
|
||||
function rconsDisconnect(){
|
||||
|
||||
// close the connection
|
||||
function rconsDisconnect() {
|
||||
window.clearTimeout(sendTimeout);
|
||||
window.clearTimeout(errorTimeout);
|
||||
|
||||
|
||||
$.ajax({
|
||||
type : "POST",
|
||||
url : "lib/rcons.php",
|
||||
@ -70,153 +70,217 @@ rconsTerm = function(nodeName, height, width){
|
||||
});
|
||||
}
|
||||
|
||||
//translate the key press
|
||||
function rconsKeypress(event){
|
||||
if (!event) var event=window.event;
|
||||
var kc;
|
||||
var k="";
|
||||
// translate the key press
|
||||
function rconsKeypress(event) {
|
||||
if (!event)
|
||||
var event = window.event;
|
||||
var kc = "";
|
||||
var k = "";
|
||||
if (event.keyCode)
|
||||
kc=event.keyCode;
|
||||
kc = event.keyCode;
|
||||
if (event.which)
|
||||
kc=event.which;
|
||||
kc = event.which;
|
||||
if (event.altKey) {
|
||||
if (kc>=65 && kc<=90)
|
||||
kc+=32;
|
||||
if (kc>=97 && kc<=122) {
|
||||
k=String.fromCharCode(27)+String.fromCharCode(kc);
|
||||
if (kc >= 65 && kc <= 90)
|
||||
kc += 32;
|
||||
if (kc >= 97 && kc <= 122) {
|
||||
k = String.fromCharCode(27) + String.fromCharCode(kc);
|
||||
}
|
||||
} else if (event.ctrlKey) {
|
||||
if (kc>=65 && kc<=90) k=String.fromCharCode(kc-64); // Ctrl-A..Z
|
||||
else if (kc>=97 && kc<=122) k=String.fromCharCode(kc-96); // Ctrl-A..Z
|
||||
else if (kc==54) k=String.fromCharCode(30); // Ctrl-^
|
||||
else if (kc==109) k=String.fromCharCode(31); // Ctrl-_
|
||||
else if (kc==219) k=String.fromCharCode(27); // Ctrl-[
|
||||
else if (kc==220) k=String.fromCharCode(28); // Ctrl-\
|
||||
else if (kc==221) k=String.fromCharCode(29); // Ctrl-]
|
||||
else if (kc==219) k=String.fromCharCode(29); // Ctrl-]
|
||||
else if (kc==219) k=String.fromCharCode(0); // Ctrl-@
|
||||
} else if (event.which==0) {
|
||||
if (kc==9) k=String.fromCharCode(9); // Tab
|
||||
else if (kc==8) k=String.fromCharCode(127); // Backspace
|
||||
else if (kc==27) k=String.fromCharCode(27); // Escape
|
||||
if (kc >= 65 && kc <= 90)
|
||||
k = String.fromCharCode(kc - 64); // Ctrl-A..Z
|
||||
else if (kc >= 97 && kc <= 122)
|
||||
k = String.fromCharCode(kc - 96); // Ctrl-A..Z
|
||||
else if (kc == 54)
|
||||
k = String.fromCharCode(30); // Ctrl-^
|
||||
else if (kc == 109)
|
||||
k = String.fromCharCode(31); // Ctrl-_
|
||||
else if (kc == 219)
|
||||
k = String.fromCharCode(27); // Ctrl-[
|
||||
else if (kc == 220)
|
||||
k = String.fromCharCode(28); // Ctrl-\
|
||||
else if (kc == 221)
|
||||
k = String.fromCharCode(29); // Ctrl-]
|
||||
else if (kc == 219)
|
||||
k = String.fromCharCode(29); // Ctrl-]
|
||||
else if (kc == 219)
|
||||
k = String.fromCharCode(0); // Ctrl-@
|
||||
} else if (event.which == 0) {
|
||||
if (kc == 9)
|
||||
k = String.fromCharCode(9); // Tab
|
||||
else if (kc == 8)
|
||||
k = String.fromCharCode(127); // Backspace
|
||||
else if (kc == 27)
|
||||
k = String.fromCharCode(27); // Escape
|
||||
else {
|
||||
if (kc==33) k="[5~"; // PgUp
|
||||
else if (kc==34) k="[6~"; // PgDn
|
||||
else if (kc==35) k="[4~"; // End
|
||||
else if (kc==36) k="[1~"; // Home
|
||||
else if (kc==37) k="[D"; // Left
|
||||
else if (kc==38) k="[A"; // Up
|
||||
else if (kc==39) k="[C"; // Right
|
||||
else if (kc==40) k="[B"; // Down
|
||||
else if (kc==45) k="[2~"; // Ins
|
||||
else if (kc==46) k="[3~"; // Del
|
||||
else if (kc==112) k="[[A"; // F1
|
||||
else if (kc==113) k="[[B"; // F2
|
||||
else if (kc==114) k="[[C"; // F3
|
||||
else if (kc==115) k="[[D"; // F4
|
||||
else if (kc==116) k="[[E"; // F5
|
||||
else if (kc==117) k="[17~"; // F6
|
||||
else if (kc==118) k="[18~"; // F7
|
||||
else if (kc==119) k="[19~"; // F8
|
||||
else if (kc==120) k="[20~"; // F9
|
||||
else if (kc==121) k="[21~"; // F10
|
||||
else if (kc==122) k="[23~"; // F11
|
||||
else if (kc==123) k="[24~"; // F12
|
||||
if (kc == 33)
|
||||
k = "[5~"; // PgUp
|
||||
else if (kc == 34)
|
||||
k = "[6~"; // PgDn
|
||||
else if (kc == 35)
|
||||
k = "[4~"; // End
|
||||
else if (kc == 36)
|
||||
k = "[1~"; // Home
|
||||
else if (kc == 37)
|
||||
k = "[D"; // Left
|
||||
else if (kc == 38)
|
||||
k = "[A"; // Up
|
||||
else if (kc == 39)
|
||||
k = "[C"; // Right
|
||||
else if (kc == 40)
|
||||
k = "[B"; // Down
|
||||
else if (kc == 45)
|
||||
k = "[2~"; // Ins
|
||||
else if (kc == 46)
|
||||
k = "[3~"; // Del
|
||||
else if (kc == 112)
|
||||
k = "[[A"; // F1
|
||||
else if (kc == 113)
|
||||
k = "[[B"; // F2
|
||||
else if (kc == 114)
|
||||
k = "[[C"; // F3
|
||||
else if (kc == 115)
|
||||
k = "[[D"; // F4
|
||||
else if (kc == 116)
|
||||
k = "[[E"; // F5
|
||||
else if (kc == 117)
|
||||
k = "[17~"; // F6
|
||||
else if (kc == 118)
|
||||
k = "[18~"; // F7
|
||||
else if (kc == 119)
|
||||
k = "[19~"; // F8
|
||||
else if (kc == 120)
|
||||
k = "[20~"; // F9
|
||||
else if (kc == 121)
|
||||
k = "[21~"; // F10
|
||||
else if (kc == 122)
|
||||
k = "[23~"; // F11
|
||||
else if (kc == 123)
|
||||
k = "[24~"; // F12
|
||||
if (k.length) {
|
||||
k=String.fromCharCode(27)+k;
|
||||
k = String.fromCharCode(27) + k;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (kc==8)
|
||||
k=String.fromCharCode(127); // Backspace
|
||||
if (kc == 8)
|
||||
k = String.fromCharCode(127); // Backspace
|
||||
else
|
||||
k=String.fromCharCode(kc);
|
||||
k = String.fromCharCode(kc);
|
||||
}
|
||||
if(k.length) {
|
||||
if(k=="+") {
|
||||
if (k.length) {
|
||||
if (k == "+") {
|
||||
rconsQueue("%2B");
|
||||
} else {
|
||||
rconsQueue(escape(k));
|
||||
}
|
||||
}
|
||||
event.cancelBubble=true;
|
||||
if (event.stopPropagation) event.stopPropagation();
|
||||
if (event.preventDefault) event.preventDefault();
|
||||
return false;
|
||||
event.cancelBubble = true;
|
||||
if (event.stopPropagation)
|
||||
event.stopPropagation();
|
||||
if (event.preventDefault)
|
||||
event.preventDefault();
|
||||
return false;
|
||||
}
|
||||
|
||||
//translate the key press, same with rconsKeypress
|
||||
function rconsKeydown(event){
|
||||
if (!event) var event=window.event;
|
||||
|
||||
// translate the key press, same with rconsKeypress
|
||||
function rconsKeydown(event) {
|
||||
if (!event)
|
||||
var event = window.event;
|
||||
if (ie) {
|
||||
o={9:1,8:1,27:1,33:1,34:1,35:1,36:1,37:1,38:1,39:1,40:1,45:1,46:1,112:1, 113:1,114:1,115:1,116:1,117:1,118:1,119:1,120:1,121:1,122:1,123:1};
|
||||
o = {
|
||||
9 : 1,
|
||||
8 : 1,
|
||||
27 : 1,
|
||||
33 : 1,
|
||||
34 : 1,
|
||||
35 : 1,
|
||||
36 : 1,
|
||||
37 : 1,
|
||||
38 : 1,
|
||||
39 : 1,
|
||||
40 : 1,
|
||||
45 : 1,
|
||||
46 : 1,
|
||||
112 : 1,
|
||||
113 : 1,
|
||||
114 : 1,
|
||||
115 : 1,
|
||||
116 : 1,
|
||||
117 : 1,
|
||||
118 : 1,
|
||||
119 : 1,
|
||||
120 : 1,
|
||||
121 : 1,
|
||||
122 : 1,
|
||||
123 : 1
|
||||
};
|
||||
if (o[event.keyCode] || event.ctrlKey || event.altKey) {
|
||||
event.which=0;
|
||||
event.which = 0;
|
||||
return keypress(event);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//send the command and request to server
|
||||
function rconsSend(){
|
||||
|
||||
// send the command and request to server
|
||||
function rconsSend() {
|
||||
var keyPressList = '';
|
||||
var requireString = '';
|
||||
if(receivingFlag){
|
||||
if (receivingFlag) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
receivingFlag = true;
|
||||
workingStatus.attr('class', 'on');
|
||||
|
||||
while(keyBuf.length > 0){
|
||||
keyPressList += keyBuf.pop();
|
||||
|
||||
while (keyBuf.length > 0) {
|
||||
keyPressList += keyBuf.pop();
|
||||
}
|
||||
|
||||
if (firstFlag){
|
||||
|
||||
if (firstFlag) {
|
||||
requireString = queryStable + keyPressList + '&f=1';
|
||||
firstFlag = false;
|
||||
} else{
|
||||
} else {
|
||||
requireString = queryStable + keyPressList;
|
||||
}
|
||||
|
||||
|
||||
$.ajax({
|
||||
type : "POST",
|
||||
url : "lib/rcons.php",
|
||||
data : requireString,
|
||||
dataType : 'json',
|
||||
success : function(data){
|
||||
rconsUpdate(data);
|
||||
}
|
||||
success : function(data) {
|
||||
rconsUpdate(data);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
errorTimeout = window.setTimeout(rconsSendError, 15000);
|
||||
|
||||
|
||||
}
|
||||
|
||||
//when receive the response, update the term area
|
||||
function rconsUpdate(data){
|
||||
|
||||
// when receive the response, update the term area
|
||||
function rconsUpdate(data) {
|
||||
window.clearTimeout(errorTimeout);
|
||||
errorArea.empty();
|
||||
if (data.term){
|
||||
if (data.term) {
|
||||
termArea.empty().append(data.term);
|
||||
maxDelay = 200;
|
||||
} else{
|
||||
} else {
|
||||
maxDelay = 2000;
|
||||
}
|
||||
|
||||
|
||||
receivingFlag = false;
|
||||
workingStatus.attr('class', 'off');
|
||||
sendTimeout = window.setTimeout(rconsSend, maxDelay);
|
||||
}
|
||||
|
||||
function rconsSendError(){
|
||||
|
||||
function rconsSendError() {
|
||||
workingStatus.attr('class', 'off');
|
||||
errorArea.empty().append('Send require error.');
|
||||
}
|
||||
|
||||
function rconsQueue(kc){
|
||||
|
||||
function rconsQueue(kc) {
|
||||
keyBuf.unshift(kc);
|
||||
if (false == receivingFlag){
|
||||
if (false == receivingFlag) {
|
||||
window.clearTimeout(sendTimeout);
|
||||
sendTimeout = window.setTimeout(rconsSend, 1);
|
||||
}
|
||||
|
@ -800,7 +800,7 @@ function createIFrame(src) {
|
||||
function openSettings() {
|
||||
// Create form to add node range
|
||||
var dialog = $('<div class="form"></div>');
|
||||
var info = createInfoBar('Select the settings you desire');
|
||||
var info = createInfoBar('Select from the following options');
|
||||
dialog.append(info);
|
||||
|
||||
var style = {
|
||||
|
Loading…
Reference in New Issue
Block a user