From fb141dd5ef38f83a96a7b6960a24d57bd5b46c6d Mon Sep 17 00:00:00 2001 From: Brian Federle Date: Tue, 6 Mar 2012 13:22:22 -0800 Subject: [PATCH] bug 14093 Don't show specific provider fields on add network offering if in Advanced/Shared configuration: -Source NAT -Static NAT -PF -LB --- ui/scripts/configuration.js | 53 +++++++++++++++++++++++++++++++++++-- 1 file changed, 51 insertions(+), 2 deletions(-) diff --git a/ui/scripts/configuration.js b/ui/scripts/configuration.js index 5a9f467d49a..9687bc5a23b 100644 --- a/ui/scripts/configuration.js +++ b/ui/scripts/configuration.js @@ -962,11 +962,43 @@ preFilter: function(args) { var $availability = args.$form.find('.form-item[rel=availability]'); var $serviceOfferingId = args.$form.find('.form-item[rel=serviceOfferingId]'); + var hasAdvancedZones = false; + + // Check whether there are any advanced zones + $.ajax({ + url: createURL('listZones'), + data: { listAll: true, networktype: 'advanced' }, + async: false, + success: function(json) { + if (json.listzonesresponse.zone && json.listzonesresponse.zone.length) { + hasAdvancedZones = true; + } + } + }); args.$form.bind('change', function() { //when any field in the dialog is changed //check whether to show or hide availability field var $sourceNATField = args.$form.find('input[name=\"service.SourceNat.isEnabled\"]'); var $guestTypeField = args.$form.find('select[name=guestIpType]'); + var $basicSharedFields = args.$form.find('.form-item').filter(function() { + var basicSharedFields = [ + 'service.SourceNat.isEnabled', + 'service.StaticNat.isEnabled', + 'service.PortForwarding.isEnabled', + 'service.Lb.isEnabled' + ]; + + if ($.inArray($(this).attr('rel'), basicSharedFields) > -1) { + return true; + } + + if ($.inArray($(this).attr('depends-on'), basicSharedFields) > -1) { + return true; + } + + return false; + }); + if (!requiredNetworkOfferingExists && $sourceNATField.is(':checked') && $guestTypeField.val() == 'Isolated') { @@ -974,7 +1006,7 @@ } else { $availability.hide(); } - + //check whether to show or hide serviceOfferingId field var havingVirtualRouterForAtLeastOneService = false; $(serviceCheckboxNames).each(function(){ @@ -987,13 +1019,30 @@ return false; //break each loop } } - }); + }); + if(havingVirtualRouterForAtLeastOneService == true) $serviceOfferingId.css('display', 'inline-block'); else $serviceOfferingId.hide(); $(':ui-dialog').dialog('option', 'position', 'center'); + + if (hasAdvancedZones && $guestTypeField.val() == 'Shared') { + $basicSharedFields.hide(); + } else { + $basicSharedFields.each(function() { + var $field = $(this); + var $dependsOn = args.$form.find('.form-item').filter(function() { + return $(this).attr('rel') == $field.attr('depends-on'); + }); + + if (!$field.attr('depends-on') || + $dependsOn.find('input[type=checkbox]').is(':checked')) { + $field.css('display', 'inline-block'); + } + }); + } }); args.$form.change();