bug 12524: create network offering dialog - show service offering dropdown only when Virtual Router is selected as a provider for at least one service.

This commit is contained in:
Jessica Wang 2012-02-03 22:51:28 -08:00
parent 074d33d9f3
commit 31c77ff69c
1 changed files with 27 additions and 5 deletions

View File

@ -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