(function($, cloudStack) {
/**
* Make system zone 'org' chart
*/
cloudStack.zoneChart = function(args) {
return function(listViewArgs) {
var $browser = listViewArgs.$browser;
var $chartView = $('
').addClass('system-chart-view')
.append(
$('#template').find('div.zone-chart').clone()
);
args.dataProvider({
id: listViewArgs.id,
jsonObj: listViewArgs.jsonObj,
context: { zones: listViewArgs.context.physicalResources },
response: {
success: function(dataProviderArgs) {
var data = dataProviderArgs.data;
var name = data.name;
// Replace cell contents
$chartView.find('li.zone div.name span').html(name);
// Events
$chartView.click(function(event) {
var $target = $(event.target);
var $panel;
// View zone details button
if ($target.is('ul li div.view-details')) {
$panel = $browser.cloudBrowser('addPanel', {
title: 'Zone Details',
data: '',
noSelectPanel: true,
maximizeIfSelected: true,
complete: function($newPanel) {
// Create detail view
$.extend(args.detailView, {
id: listViewArgs.id,
context: { zones: listViewArgs.context.physicalResources },
$browser: listViewArgs.$browser
});
$panel.detailView(args.detailView);
}
});
return false;
}
// View all
if ($target.is('ul li div.view-all')) {
$panel = $browser.cloudBrowser('addPanel', {
title: $target.closest('li').find('div.name span').html(),
data: '',
noSelectPanel: true,
maximizeIfSelected: true,
complete: function($newPanel) {
$panel.listView(
$.extend(cloudStack.sections.system.subsections[
$target.attr('zone-target')
], {
$browser: $browser,
$chartView: $chartView,
ref: { zoneID: listViewArgs.id },
context: { zones: listViewArgs.context.physicalResources }
})
);
}
});
return false;
};
// Add button
if ($target.closest('.add').size()) {
var completeAction = function() { return false; };
var $addResource = $('
').addClass('add-zone-resource');
var $header = $('
').addClass('head').appendTo($addResource)
.append(
$('').addClass('message').html('Select resource to add:')
);
var $select = $('