1ae4225dbe
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@6485 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
463 lines
9.8 KiB
JavaScript
463 lines
9.8 KiB
JavaScript
/**
|
|
* Tab constructor
|
|
*
|
|
* @param tabId
|
|
* Tab ID
|
|
* @param tabName
|
|
* Tab name
|
|
* @return Nothing
|
|
*/
|
|
var Tab = function(tabId) {
|
|
this.tabId = tabId;
|
|
this.tabName = null;
|
|
this.tab = null;
|
|
};
|
|
|
|
/**
|
|
* Initialize the tab
|
|
*
|
|
* @param tabName
|
|
* Tab name to initialize
|
|
* @return Nothing
|
|
*/
|
|
Tab.prototype.init = function() {
|
|
// Create a division containing the tab
|
|
this.tab = $('<div class="tab" id="' + this.tabId + '"></div>');
|
|
var tabList = $('<ul></ul>');
|
|
var tabItem = $('<li><a href="#">Dummy tab item</a></li>');
|
|
tabList.append(tabItem);
|
|
this.tab.append(tabList);
|
|
|
|
// Create a template
|
|
var $tabs = this.tab
|
|
.tabs( {
|
|
tabTemplate : "<li><a href=\"#{href}\">#{label}</a><span class=\"tab-close ui-icon ui-icon-close\"></span></li>"
|
|
});
|
|
|
|
// Remove dummy tab
|
|
this.tab.tabs("remove", 0);
|
|
|
|
// Hide tab
|
|
this.tab.hide();
|
|
|
|
// Append close button to tabs
|
|
$("#" + this.tabId + " span.tab-close").live("click", function() {
|
|
var index = $('li', $tabs).index($(this).parent());
|
|
|
|
// Do not remove first tab
|
|
if (index != 0) {
|
|
$tabs.tabs('remove', index);
|
|
}
|
|
});
|
|
};
|
|
|
|
/**
|
|
* Return the tab object
|
|
*
|
|
* @param Nothing
|
|
* @return Object representing the tab
|
|
*/
|
|
Tab.prototype.object = function() {
|
|
return this.tab;
|
|
};
|
|
|
|
/**
|
|
* Add a new tab
|
|
*
|
|
* @param newTabId
|
|
* New tab ID
|
|
* @param newTabName
|
|
* New tab name
|
|
* @param newTabCont
|
|
* New tab content
|
|
* @return Nothing
|
|
*/
|
|
Tab.prototype.add = function(newTabId, newTabName, newTabCont) {
|
|
// Show tab
|
|
if (this.tab.css("display") == "none") {
|
|
this.tab.show();
|
|
}
|
|
|
|
var newTab = $('<div class="tab" id="' + newTabId + '"></div>');
|
|
newTab.append(newTabCont);
|
|
this.tab.append(newTab);
|
|
this.tab.tabs("add", "#" + newTabId, newTabName);
|
|
};
|
|
|
|
/**
|
|
* Select a tab
|
|
*
|
|
* @param id
|
|
* Tab ID to select
|
|
* @return Nothing
|
|
*/
|
|
Tab.prototype.select = function(id) {
|
|
this.tab.tabs("select", "#" + id);
|
|
};
|
|
|
|
/**
|
|
* Remove a tab
|
|
*
|
|
* @param id
|
|
* Tab ID to remove
|
|
* @return Nothing
|
|
*/
|
|
Tab.prototype.remove = function(id) {
|
|
// To be continued
|
|
};
|
|
|
|
/**
|
|
* Table constructor
|
|
*
|
|
* @param tabId
|
|
* Tab ID
|
|
* @param tabName
|
|
* Tab name
|
|
* @return Nothing
|
|
*/
|
|
var Table = function(tableId) {
|
|
if ($('#' + tableId).length) {
|
|
this.tableId = tableId;
|
|
this.table = $('#' + tableId);
|
|
} else {
|
|
this.tableId = tableId;
|
|
this.table = null;
|
|
}
|
|
};
|
|
|
|
/**
|
|
* Initialize the table
|
|
*
|
|
* @param Headers
|
|
* Array of table headers
|
|
* @return Nothing
|
|
*/
|
|
Table.prototype.init = function(headers) {
|
|
// Create a table
|
|
this.table = $('<table id="' + this.tableId + '"></table>');
|
|
var thead = $('<thead></thead>');
|
|
var headRow = $('<tr></tr>');
|
|
|
|
// Append headers
|
|
for ( var i in headers) {
|
|
headRow.append('<th>' + headers[i] + '</th>');
|
|
}
|
|
|
|
thead.append(headRow);
|
|
this.table.append(thead);
|
|
|
|
// Append table body
|
|
var tableBody = $('<tbody></tbody>');
|
|
this.table.append(tableBody);
|
|
};
|
|
|
|
/**
|
|
* Return the table object
|
|
*
|
|
* @param Nothing
|
|
* @return Object representing the table
|
|
*/
|
|
Table.prototype.object = function() {
|
|
return this.table;
|
|
};
|
|
|
|
/**
|
|
* Add a row to the table
|
|
*
|
|
* @param rowCont
|
|
* Array of table row contents
|
|
* @return Nothing
|
|
*/
|
|
Table.prototype.add = function(rowCont) {
|
|
// Create table row
|
|
var tableRow = $('<tr></tr>');
|
|
|
|
// Create a column for each content
|
|
var tableCol;
|
|
for ( var i in rowCont) {
|
|
tableCol = $('<td></td>');
|
|
tableCol.append(rowCont[i]);
|
|
tableRow.append(tableCol);
|
|
}
|
|
|
|
// Append table row to table
|
|
this.table.find('tbody').append(tableRow);
|
|
};
|
|
|
|
/**
|
|
* Add a footer to the table
|
|
*
|
|
* @param rowCont
|
|
* Array of table row contents
|
|
* @return Nothing
|
|
*/
|
|
Table.prototype.addFooter = function(rowCont) {
|
|
// Create table row
|
|
var tableFoot = $('<tfoot></tfoot>');
|
|
tableFoot.append(rowCont);
|
|
|
|
// Append table row to table
|
|
this.table.append(tableFoot);
|
|
};
|
|
|
|
/**
|
|
* Remove a row from the table
|
|
*
|
|
* @return Nothing
|
|
*/
|
|
Table.prototype.remove = function(id) {
|
|
// To be continued
|
|
};
|
|
|
|
/**
|
|
* Datatable class constructor
|
|
*
|
|
* @param tabId
|
|
* Tab ID
|
|
* @param tabName
|
|
* Tab name
|
|
* @return Nothing
|
|
*/
|
|
var DataTable = function(tableId) {
|
|
this.dataTableId = tableId;
|
|
this.dataTable = null;
|
|
};
|
|
|
|
/**
|
|
* Initialize the datatable
|
|
*
|
|
* @param Headers
|
|
* Array of table headers
|
|
* @return Nothing
|
|
*/
|
|
DataTable.prototype.init = function(headers) {
|
|
// Create a table
|
|
this.dataTable = $('<table class="datatable" id="' + this.dataTableId + '"></table>');
|
|
var thead = $('<thead></thead>');
|
|
var headRow = $('<tr></tr>');
|
|
|
|
// Append headers
|
|
for ( var i in headers) {
|
|
headRow.append('<th>' + headers[i] + '</th>');
|
|
}
|
|
|
|
thead.append(headRow);
|
|
this.dataTable.append(thead);
|
|
|
|
// Append table body
|
|
var tableBody = $('<tbody></tbody>');
|
|
this.dataTable.append(tableBody);
|
|
};
|
|
|
|
/**
|
|
* Return the datatable object
|
|
*
|
|
* @param Nothing
|
|
* @return Object representing the table
|
|
*/
|
|
DataTable.prototype.object = function() {
|
|
return this.dataTable;
|
|
};
|
|
|
|
/**
|
|
* Add a row to the datatable
|
|
*
|
|
* @param rowCont
|
|
* Array of table row contents
|
|
* @return Nothing
|
|
*/
|
|
DataTable.prototype.add = function(rowCont) {
|
|
// Create table row
|
|
var tableRow = $('<tr></tr>');
|
|
|
|
// Create a column for each content
|
|
var tableCol;
|
|
for ( var i in rowCont) {
|
|
tableCol = $('<td></td>');
|
|
tableCol.append(rowCont[i]);
|
|
tableRow.append(tableCol);
|
|
}
|
|
|
|
// Append table row to table
|
|
this.dataTable.find('tbody').append(tableRow);
|
|
};
|
|
|
|
/**
|
|
* Remove a row from the datatable
|
|
*
|
|
* @return Nothing
|
|
*/
|
|
NodesTable.prototype.remove = function(id) {
|
|
// To be continued
|
|
};
|
|
|
|
/**
|
|
* Create status bar
|
|
*
|
|
* @param barId
|
|
* Status bar ID
|
|
* @return Status bar
|
|
*/
|
|
function createStatusBar(barId) {
|
|
var statusBar = $('<div class="statusBar" id="' + barId + '"><div>');
|
|
return statusBar;
|
|
}
|
|
|
|
/**
|
|
* Create info bar
|
|
*
|
|
* @param msg
|
|
* Info message
|
|
* @return Info bar
|
|
*/
|
|
function createInfoBar(msg) {
|
|
var infoBar = $('<div class="ui-state-highlight ui-corner-all">');
|
|
var msg = $('<p class="info"><span class="ui-icon ui-icon-info"></span>' + msg + '</p>');
|
|
infoBar.append(msg);
|
|
|
|
return infoBar;
|
|
}
|
|
|
|
/**
|
|
* Create a loader
|
|
*
|
|
* @param loaderId
|
|
* Loader ID
|
|
* @return Nothing
|
|
*/
|
|
function createLoader(loaderId) {
|
|
var loader = $('<img id="' + loaderId + '" src="images/loader.gif"></img>');
|
|
return loader;
|
|
}
|
|
|
|
/**
|
|
* Create a button
|
|
*
|
|
* @param name
|
|
* Name of the button
|
|
* @return Nothing
|
|
*/
|
|
function createButton(name) {
|
|
var button = $('<button aria-disabled="false" role="button" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" id="button"><span class="ui-button-text">' + name + '</span></button>');
|
|
return button;
|
|
}
|
|
|
|
/**
|
|
* Create a menu
|
|
*
|
|
* @param items
|
|
* An array of items to go into the menu
|
|
* @return A division containing the menu
|
|
*/
|
|
function createMenu(items) {
|
|
var menu = $('<ul class="sf-menu"></ul>');
|
|
|
|
// Loop through each item
|
|
for ( var i in items) {
|
|
// Append item to menu
|
|
var item = $('<li></li>');
|
|
|
|
// If it is a sub menu
|
|
if (items[i] instanceof Array) {
|
|
// 1st index = Sub menu title
|
|
item.append(items[i][0]);
|
|
// 2nd index = Sub menu
|
|
item.append(items[i][1]);
|
|
} else {
|
|
item.append(items[i]);
|
|
}
|
|
|
|
// Do not add border for 1st item
|
|
if (i > 0) {
|
|
item.css( {
|
|
'border-left' : '1px solid #BDBDBD'
|
|
});
|
|
}
|
|
|
|
menu.append(item);
|
|
}
|
|
|
|
return menu;
|
|
}
|
|
|
|
/**
|
|
* Initialize the page
|
|
*
|
|
* @return Nothing
|
|
*/
|
|
function initPage() {
|
|
// Get the page being loaded
|
|
var url = window.location.pathname;
|
|
var page = url.replace('/xcat/', '');
|
|
|
|
var headers = $('#header ul li a');
|
|
|
|
// Show the page
|
|
$('div.content').hide();
|
|
if (page == 'index.php') {
|
|
$("#nodes_page").show();
|
|
headers.eq(0).css('background-color', '#A9D0F5');
|
|
loadNodesPage();
|
|
} else if (page == 'configure.php') {
|
|
$('#configure_page').show();
|
|
headers.eq(1).css('background-color', '#A9D0F5');
|
|
loadConfigPage();
|
|
} else if (page == 'provision.php') {
|
|
$('#provision_page').show();
|
|
headers.eq(2).css('background-color', '#A9D0F5');
|
|
loadProvisionPage();
|
|
} else if (page == 'monitor.php') {
|
|
$('#monitor_page').show();
|
|
headers.eq(3).css('background-color', '#A9D0F5');
|
|
loadMonitorPage();
|
|
} else {
|
|
$("#nodes_page").show();
|
|
headers.eq(0).css('background-color', '#A9D0F5');
|
|
loadNodesPage();
|
|
}
|
|
|
|
// Bind each link to open the page on click
|
|
for ( var i = 0; i < headers.length; i++) {
|
|
var title = headers.eq(i).text();
|
|
var link = headers.eq(i);
|
|
link.attr('href', '#');
|
|
|
|
if (title == 'Nodes') {
|
|
link.bind('click', function(event) {
|
|
$('div.content').hide();
|
|
$('#nodes_page').show();
|
|
headers.css('background-color', '');
|
|
$(this).css('background-color', '#A9D0F5');
|
|
|
|
loadNodesPage();
|
|
});
|
|
} else if (title == 'Configure') {
|
|
link.bind('click', function(event) {
|
|
$('div.content').hide();
|
|
$('#configure_page').show();
|
|
headers.css('background-color', '');
|
|
$(this).css('background-color', '#A9D0F5');
|
|
|
|
loadConfigPage();
|
|
});
|
|
} else if (title == 'Provision') {
|
|
link.bind('click', function(event) {
|
|
$('div.content').hide();
|
|
$('#provision_page').show();
|
|
headers.css('background-color', '');
|
|
$(this).css('background-color', '#A9D0F5');
|
|
|
|
loadProvisionPage();
|
|
});
|
|
} else if (title == 'Monitor') {
|
|
link.bind('click', function(event) {
|
|
$('div.content').hide();
|
|
$('#monitor_page').show();
|
|
headers.css('background-color', '');
|
|
$(this).css('background-color', '#A9D0F5');
|
|
|
|
loadMonitorPage();
|
|
});
|
|
}
|
|
}
|
|
} |