2012-04-03 15:35:36 -07:00

161 lines
5.4 KiB
JavaScript

// Copyright 2012 Citrix Systems, Inc. Licensed under the
// Apache License, Version 2.0 (the "License"); you may not use this
// file except in compliance with the License. Citrix Systems, Inc.
// reserves all rights not expressly granted by the License.
// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
// Automatically generated by addcopyright.py at 04/03/2012
(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) {
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: targetName,
maximizeIfSelected: true,
complete: function($newPanel) {
$newPanel.detailView({
$browser: $browser,
name: targetId,
context: context,
tabs: {
network: {
title: targetName,
custom: function(args) {
return portMultiEdit($.extend(target, {
context: context
}));
}
}
}
});
}
});
return true;
};
var staticNATChart = function(args, includingFirewall) {
var $chart = $('#template').find('.network-chart.static-nat').clone();
var $vmName = $chart.find('li.static-nat-enabled .vmname');
var $browser = $('#browser .container');
var vmDataProvider = args.vmDataProvider;
var vmDetails = args.vmDetails;
args.staticNATDataProvider({
context: context,
response: {
success: function(args) {
var vmID = args.data.virtualmachineid;
var vmName = args.data.virtualmachinename;
$vmName.append(
$('<span>').html('VM: ' + vmName)
);
$vmName.click(function() {
$browser.cloudBrowser('addPanel', {
title: _l('label.static.nat.vm.details'),
complete: function($newPanel) {
vmDataProvider({
context: context,
response: {
success: function(args) {
var instance = args.data;
var detailViewArgs = $.extend(true, {}, vmDetails, {
$browser: $browser,
context: $.extend(true, {}, context, {
instances: [instance]
}),
jsonObj: instance,
id: instance.id
});
// No actions available
detailViewArgs.actions = {};
$newPanel.detailView(detailViewArgs);
}
}
});
}
});
});
}
}
});
if(includingFirewall == true) {
$chart.find('li.firewall .view-details').click(function() {
//makeMultiEditPanel($(this), { title: _l('label.nat.port.range')});
makeMultiEditPanel($(this));
});
}
else {
$chart.find('li.firewall').hide();
}
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
}) : [];
// 1. choose between staticNAT chart and non-staticNAT chart 2. filter disabled tabs
if (preFilter.length) {
if($.inArray('nonStaticNATChart', preFilter) != -1) { //choose static NAT chart
if($.inArray('firewall', preFilter) == -1) {
return staticNATChart(args, true); //static NAT including Firewall
}
else {
return staticNATChart(args, false); //static NAT excluding Firewall
}
}
else { //choose non-static NAT chart
$(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);