// 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 $('
').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( $('').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);