/** * Create nodes datatable for a given group * * @param group * Group name * @param outId * Division ID to append datatable * @return Nodes datatable */ function createNodesDatatable(group, outId) { // Get group nodes $.ajax( { url : 'lib/cmd.php', dataType : 'json', data : { cmd : 'lsdef', tgt : '', args : group, msg : outId }, /** * Create nodes datatable * * @param data * Data returned from HTTP request * @return Nothing */ success : function(data) { // Data returned var rsp = data.rsp; // Get output ID var outId = data.msg; // Get datatable ID var dTableId = outId.replace('DIV', ''); // Node attributes hash var attrs = new Object(); // Node attributes var headers = new Object(); // Clear nodes datatable division $('#' + outId).children().remove(); // Create nodes datatable var node, args; for ( var i in rsp) { // Get node var pos = rsp[i].indexOf('Object name:'); if (pos > -1) { var temp = rsp[i].split(': '); node = jQuery.trim(temp[1]); // Create a hash for the node attributes attrs[node] = new Object(); i++; } // Get key and value args = rsp[i].split('='); var key = jQuery.trim(args[0]); var val = jQuery.trim(args[1]); // Create hash table attrs[node][key] = val; headers[key] = 1; } // Sort headers var sorted = new Array(); for ( var key in headers) { sorted.push(key); } sorted.sort(); // Add column for check box and node sorted.unshift('', 'node'); // Create nodes datatable var dTable = new DataTable(dTableId); dTable.init(sorted); // Go through each node for ( var node in attrs) { // Create a row var row = new Array(); // Create a check box var checkBx = ''; row.push(checkBx, node); // Go through each header for ( var i = 2; i < sorted.length; i++) { // Add node attributes to the row var key = sorted[i]; var val = attrs[node][key]; if (val) { row.push(val); } else { row.push(''); } } // Add row to table dTable.add(row); } $('#' + outId).append(dTable.object()); $('#' + dTableId).dataTable(); } // End of function(data) }); } /** * Create provision existing node division * * @param plugin * Plugin name to create division for * @param inst * Provision tab instance * @return Provision existing node division */ function createProvisionExisting(plugin, inst) { // Create provision existing division and hide it var provExisting = $('
').hide(); // Create group input var group = $('
'); var groupLabel = $(''); group.append(groupLabel); // Turn on auto complete for group var dTableDivId = plugin + 'NodesDatatableDIV' + inst; // Division ID where nodes datatable will be appended var groupNames = $.cookie('Groups'); if (groupNames) { // Split group names into an array var tmp = groupNames.split(','); // Create drop down for groups var groupSelect = $(''); groupSelect.append(''); for ( var i in tmp) { // Add group into drop down var opt = $(''); groupSelect.append(opt); } group.append(groupSelect); // Create node datatable groupSelect.change(function() { // Get group selected var thisGroup = $(this).val(); // If a valid group is selected if (thisGroup) { createNodesDatatable(thisGroup, dTableDivId); } // End of if (thisGroup) }); } else { // If no groups are cookied var groupInput = $(''); group.append(groupInput); } provExisting.append(group); // Create node input var node = $('
'); var nodeLabel = $(''); var nodeDatatable = $('

Select a group to view its nodes

'); node.append(nodeLabel); node.append(nodeDatatable); provExisting.append(node); // Create boot method drop down var method = $('
'); var methodLabel = $(''); var methodSelect = $(''); methodSelect.append('' + '' + '' + '' + '' ); method.append(methodLabel); method.append(methodSelect); provExisting.append(method); // Create boot type drop down var type = $('
'); var typeLabel = $(''); var typeSelect = $(''); typeSelect.append('' + '' + '' ); type.append(typeLabel); type.append(typeSelect); provExisting.append(type); // Create operating system input var os = $('
'); var osLabel = $(''); var osInput = $(''); osInput.one('focus', function() { var tmp = $.cookie('OSVers'); if (tmp) { // Turn on auto complete $(this).autocomplete(tmp.split(',')); } }); os.append(osLabel); os.append(osInput); provExisting.append(os); // Create architecture input var arch = $('
'); var archLabel = $(''); var archInput = $(''); archInput.one('focus', function() { var tmp = $.cookie('OSArchs'); if (tmp) { // Turn on auto complete $(this).autocomplete(tmp.split(',')); } }); arch.append(archLabel); arch.append(archInput); provExisting.append(arch); // Create profile input var profile = $('
'); var profileLabel = $(''); var profileInput = $(''); profileInput.one('focus', function() { var tmp = $.cookie('Profiles'); if (tmp) { // Turn on auto complete $(this).autocomplete(tmp.split(',')); } }); profile.append(profileLabel); profile.append(profileInput); provExisting.append(profile); /** * Provision existing */ var provisionBtn = createButton('Provision'); provisionBtn.bind('click', function(event) { // TODO Insert provision code here openDialog('info', 'Under construction'); }); provExisting.append(provisionBtn); return provExisting; } /** * Create provision new node division * * @param inst * Provision tab instance * @return Provision new node division */ function createProvisionNew(plugin, inst) { // Create provision new node division var provNew = $('
'); // Create node input var nodeName = $('
'); provNew.append(nodeName); // Create group input var group = $('
'); var groupLabel = $(''); var groupInput = $(''); groupInput.one('focus', function() { var groupNames = $.cookie('Groups'); if (groupNames) { // Turn on auto complete $(this).autocomplete(groupNames.split(',')); } }); group.append(groupLabel); group.append(groupInput); provNew.append(group); // Create boot method drop down var method = $('
'); var methodLabel = $(''); var methodSelect = $(''); methodSelect.append('' + '' + '' + '' + '' ); method.append(methodLabel); method.append(methodSelect); provNew.append(method); // Create boot type drop down var type = $('
'); var typeLabel = $(''); var typeSelect = $(''); typeSelect.append('' + '' + '' ); type.append(typeLabel); type.append(typeSelect); provNew.append(type); // Create operating system input var os = $('
'); var osLabel = $(''); var osInput = $(''); osInput.one('focus', function() { var tmp = $.cookie('OSVers'); if (tmp) { // Turn on auto complete $(this).autocomplete(tmp.split(',')); } }); os.append(osLabel); os.append(osInput); provNew.append(os); // Create architecture input var arch = $('
'); var archLabel = $(''); var archInput = $(''); archInput.one('focus', function() { var tmp = $.cookie('OSArchs'); if (tmp) { // Turn on auto complete $(this).autocomplete(tmp.split(',')); } }); arch.append(archLabel); arch.append(archInput); provNew.append(arch); // Create profile input var profile = $('
'); var profileLabel = $(''); var profileInput = $(''); profileInput.one('focus', function() { var tmp = $.cookie('Profiles'); if (tmp) { // Turn on auto complete $(this).autocomplete(tmp.split(',')); } }); profile.append(profileLabel); profile.append(profileInput); provNew.append(profile); /** * Provision new node */ var provisionBtn = createButton('Provision'); provisionBtn.bind('click', function(event) { // TODO Insert provision code here openDialog('info', 'Under construction'); }); provNew.append(provisionBtn); return provNew; }