(function($, cloudStack) {
$.extend(cloudStack, {
ui: {
widgets: {} // Defines API methods for UI widgets
},
uiCustom: {}
});
/**
* Generate navigation
s
*
* @param args cloudStack data args
*/
var makeNavigation = function(args) {
var $navList = $('');
var preFilter = cloudStack.sectionPreFilter ?
cloudStack.sectionPreFilter({
context: $.extend(true, {}, args.context, {
sections: $.map(cloudStack.sections, function(value, key) {
return key;
})
})
}) : null;
$.each(args.sections, function(sectionID, args) {
if (preFilter && $.inArray(sectionID, preFilter) == -1) {
return true;
}
var $li = $('- ')
.addClass('navigation-item')
.addClass(sectionID)
.append($('').addClass('icon').html(' '))
.append($('').html(args.title))
.data('cloudStack-section-id', sectionID);
$li.appendTo($navList);
return true;
});
// Special classes for first and last items
$navList.find('li:first').addClass('first');
$navList.find('li:last').addClass('last');
return $navList;
};
/**
* Create section contents
*
* @param sectionID Section's ID to show
* @param args CloudStack3 configuration
*/
var showSection = function(sectionID, args) {
var $panel;
var $browser = $('#browser div.container');
var $navItem = $('#navigation').find('li').filter(function() {
return $(this).hasClass(sectionID);
});
var data = args.sections[sectionID];
data.$browser = $browser;
$navItem.siblings().removeClass('active');
$navItem.addClass('active');
// Reset browser panels
$browser.cloudBrowser('removeAllPanels');
$panel = $browser.cloudBrowser('addPanel', {
title: data.title,
data: ''
});
// Hide breadcrumb if this is the home section
if (args.home === sectionID) {
$('#breadcrumbs').find('li:first, div.end:last').hide();
}
// Append specified widget to view
if (data.show)
$panel.append(data.show(data));
else if (data.treeView)
$panel.treeView(data, { context: args.context });
else
$panel.listView(data, { context: args.context });
return $navItem;
};
// Define page element generation fns
var pageElems = {
header: function(args) {
// Make notification area
var $notificationArea = $('
').addClass('button notifications')
.append(
$('
').addClass('total')
// Total notifications
.append($('
').html(0))
)
.append($('').html('Notifications'))
.notifications();
// Project switcher
var $viewSwitcher = $('').addClass('view-switcher').append(
$.merge(
$('
').addClass('select-project').html('Select View:'),
$('