mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
90 lines
2.6 KiB
JavaScript
90 lines
2.6 KiB
JavaScript
(function($, cloudStack) {
|
|
cloudStack.ipRules = function(args) {
|
|
return function(detailArgs) {
|
|
var context = detailArgs.context;
|
|
|
|
var portMultiEdit = function(args) {
|
|
return $('<div>').multiEdit(args);
|
|
};
|
|
|
|
var makeMultiEditPanel = function($item, options) {
|
|
if (!options) options = {};
|
|
if ($item.closest('li').hasClass('disabled')) return false;
|
|
|
|
var targetId = $item.attr('net-target');
|
|
var targetName = $item.parent().find('.name').find('span').html();
|
|
var target = args[targetId];
|
|
|
|
var $browser = $item.closest('.detail-view').data('view-args').$browser;
|
|
|
|
$browser.cloudBrowser('addPanel', {
|
|
title: options.title ? options.title : targetName,
|
|
maximizeIfSelected: true,
|
|
complete: function($newPanel) {
|
|
$newPanel.detailView({
|
|
$browser: $browser,
|
|
name: targetId,
|
|
context: context,
|
|
tabs: {
|
|
network: {
|
|
title: options.title ? options.title : targetName,
|
|
custom: function(args) {
|
|
return portMultiEdit($.extend(target, {
|
|
context: context
|
|
}));
|
|
}
|
|
}
|
|
}
|
|
});
|
|
}
|
|
});
|
|
|
|
return true;
|
|
};
|
|
|
|
var staticNATChart = function(args) {
|
|
var $chart = $('#template').find('.network-chart.static-nat').clone();
|
|
|
|
$chart.find('li.firewall .view-details').click(function() {
|
|
makeMultiEditPanel($(this), { title: 'NAT Port Range'});
|
|
});
|
|
|
|
return $chart;
|
|
};
|
|
|
|
var netChart = function(args) {
|
|
var $chart = $('#template').find('.network-chart.normal').clone();
|
|
var preFilter = args.preFilter ? args.preFilter({
|
|
items: ['firewall', 'portForwarding', 'loadBalancing'],
|
|
context: context
|
|
}) : [];
|
|
|
|
// Filter disabled tabs
|
|
if (preFilter.length) {
|
|
if (preFilter.length == 3) { // All items
|
|
// Assume this is a static NAT
|
|
return staticNATChart(args);
|
|
} else {
|
|
$(preFilter).each(function() {
|
|
var id = this;
|
|
|
|
var $li = $chart.find('li').filter(function() {
|
|
return $(this).hasClass(id);
|
|
}).addClass('disabled');
|
|
});
|
|
}
|
|
}
|
|
|
|
$chart.find('.view-details').click(function() {
|
|
makeMultiEditPanel($(this));
|
|
return false;
|
|
});
|
|
|
|
return $chart;
|
|
};
|
|
|
|
return netChart(args);
|
|
};
|
|
};
|
|
})(jQuery, cloudStack);
|