From 31c77ff69c24d7b5e5dec84121bd4532e49d1bed Mon Sep 17 00:00:00 2001 From: Jessica Wang Date: Fri, 3 Feb 2012 22:51:28 -0800 Subject: [PATCH] bug 12524: create network offering dialog - show service offering dropdown only when Virtual Router is selected as a provider for at least one service. --- ui/scripts/configuration.js | 32 +++++++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/ui/scripts/configuration.js b/ui/scripts/configuration.js index c50879d13d7..a46800e8ac4 100644 --- a/ui/scripts/configuration.js +++ b/ui/scripts/configuration.js @@ -1,7 +1,7 @@ (function(cloudStack, $) { var requiredNetworkOfferingExists = false; - var networkServiceObjs = []; + var networkServiceObjs = [], serviceCheckboxNames = []; cloudStack.sections.configuration = { title: 'Configuration', @@ -1043,11 +1043,12 @@ desc: 'Please specify the network offering', preFilter: function(args) { var $availability = args.$form.find('.form-item[rel=availability]'); - - args.$form.bind('change', function() { + var $serviceOfferingId = args.$form.find('.form-item[rel=serviceOfferingId]'); + + 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]'); - if (!requiredNetworkOfferingExists && $sourceNATField.is(':checked') && $guestTypeField.val() == 'Isolated') { @@ -1055,6 +1056,25 @@ } else { $availability.hide(); } + + //check whether to show or hide serviceOfferingId field + var havingVirtualRouterForAtLeastOneService = false; + $(serviceCheckboxNames).each(function(){ + var checkboxName = this; + if($("input[name='" + checkboxName + "']").is(":checked") == true) { + var providerFieldName = checkboxName.replace(".isEnabled", ".provider"); //either dropdown or input hidden field + var providerName = $("[name='" + providerFieldName + "']").val(); + if(providerName == "VirtualRouter") { + havingVirtualRouterForAtLeastOneService = true; + return false; //break each loop + } + } + }); + if(havingVirtualRouterForAtLeastOneService == true) + $serviceOfferingId.css('display', 'inline-block'); + else + $serviceOfferingId.hide(); + }); }, fields: { @@ -1134,7 +1154,9 @@ capabilities: 'service' + '.' + serviceName + '.' + 'capabilities', provider: 'service' + '.' + serviceName + '.' + 'provider' }; - + + serviceCheckboxNames.push(id.isEnabled); + fields[id.isEnabled] = { label: serviceDisplayName, isBoolean: true }; if(providerObjs != null && providerObjs.length > 1) { //present provider dropdown when there are multiple providers for a service