').detailView(
$.extend(true, {}, cloudStack.vpc.tiers.detailView, {
$browser: $browser,
context: context,
onActionComplete: function() {
$tier.closest('.vpc-network-chart').trigger('reload');
}
})
);
$detailView.appendTo($panel);
}
});
});
$cidrLabel.html('CIDR: ');
$cidr.html(tier.cidr);
$title.find('span').html(tier.displayname ? tier.displayname : tier.name);
$header.append($title, $detailLink);
$info.append($cidrLabel, $cidr);
$content.append($dashboard, $info);
$tier.append($header, $content);
return $tier;
},
router: function(args) {
var $router = elems.tier({
context: args.context,
tier: {
name: 'Router',
},
dashboardItems: args.dashboardItems
}).addClass('router');
$router.find('.info, .detail-link').remove();
$router.find('.header').prepend($('
').addClass('icon').html(' '));
return $router;
},
tierPlaceholder: function(args) {
var context = args.context;
var $placeholder = $('
').addClass('tier-placeholder');
$placeholder.append($('
').append('Create network'));
$placeholder.click(function() {
addTierDialog({
context: context,
$placeholder: $placeholder
});
});
return $placeholder;
},
dashboard: function(args) {
var $dashboard = $('').addClass('dashboard');
var context = args.context;
var tier = context.networks[0];
$(args.dashboardItems).map(function(index, dashboardItem) {
var $dashboardItem = $('
').addClass('dashboard-item');
var $name = $('
').addClass('name').append($('
'));
var $total = $('').addClass('total').append($('
'));
var id = dashboardItem.id;
$name.find('span').html(dashboardItem.name);
if (dashboardItem.totalMultiLine) {
$total.find('span').html(dashboardItem.totalMultiLine);
$total.addClass('multiline');
} else {
$total.find('span').html(dashboardItem.total ? dashboardItem.total : 0);
}
$dashboardItem.append($total, $name);
$dashboardItem.appendTo($dashboard);
$dashboardItem.click(function() {
$('#browser .container').cloudBrowser('addPanel', {
title: tier.name + ' - ' + dashboardItem.name,
maximizeIfSelected: true,
complete: function($panel) {
var section = cloudStack.vpc.sections[id];
var $section = $('');
if ($.isFunction(section)) {
section = cloudStack.vpc.sections[id]();
}
if (section.listView) {
$section.listView($.extend(true, {}, section, {
onActionComplete: function() {
$dashboardItem.closest('.vpc-network-chart').trigger('reload');
},
context: context
}));
}
$section.appendTo($panel);
}
});
});
});
return $dashboard;
}
};
cloudStack.modules.vpc = function(module) {
var vpc = cloudStack.vpc;
var vpcSection = cloudStack.sections.network.sections.vpc;
var listConfigureAction = vpcSection.listView.actions.configureVpc.action;
var detailsConfigureAction = vpcSection.listView.detailView.actions.configureVpc.action;
var vpcChart = function(args) {
var context = args.context;
var vpcItem = context.vpc[0];
var chart = function(args) {
args = args ? args : {};
var $chart = $('
').addClass('vpc-network-chart');
var $tiers = $('
').addClass('tiers');
var $toolbar = $('
').addClass('toolbar');
$toolbar.appendTo($chart);
$tiers.appendTo($chart);
// Get tiers
var $loading = $('
').addClass('loading-overlay').prependTo($chart);
vpc.tiers.dataProvider({
context: context,
response: {
success: function(data) {
var tiers = data.tiers;
var $placeholder = elems.tierPlaceholder({
context: context
});
$(tiers).map(function(index, tier) {
var $tier = elems.tier({
context: context,
tier: tier,
dashboardItems: tier._dashboardItems
});
$tier.appendTo($tiers);
});
// Add placeholder tier
$tiers.append($placeholder);
$loading.remove();
if (!tiers.length) {
addTierDialog({
context: context,
$placeholder: $placeholder
});
}
if (args.complete) {
args.complete($chart);
}
// Router
elems.router({
context: context,
dashboardItems: data.routerDashboard
}).appendTo($chart);
}
}
});
$chart.bind('reload', function() {
chart({
complete: function($newChart) {
$chart.replaceWith($newChart);
}
});
});
return $chart;
};
$('#browser .container').cloudBrowser('addPanel', {
title: vpcItem.displaytext ? vpcItem.displaytext : vpcItem.name,
maximizeIfSelected: true,
complete: function($panel) {
var $chart = chart();
$chart.appendTo($panel);
}
});
};
listConfigureAction.custom = vpcChart;
detailsConfigureAction.custom = vpcChart;
};
}(jQuery, cloudStack));