CS-14186: cloudstack 3.0 UI - create network offering - when GuestIpType is Shared, hide SourceNat/StaticNat/PortForwarding/LoadBalancer/Firewall/VPN if zoneType is Advanced, hide SourceNat/PortForwarding/Firewall/VPN if zoneType is BAsic.

This commit is contained in:
Jessica Wang 2012-04-23 10:42:00 -07:00
parent 6fd42b831d
commit f6c6518ada

View File

@ -9,11 +9,12 @@
// See the License for the specific language governing permissions and
// limitations under the License.
//
// Automatically generated by addcopyright.py at 04/03/2012
// Automatically generated by addcopyright.py at 04/02/2012
(function(cloudStack, $) {
var requiredNetworkOfferingExists = false;
var networkServiceObjs = [], serviceCheckboxNames = [];
var serviceFields = [];
cloudStack.sections.configuration = {
title: 'label.menu.service.offerings',
@ -1018,7 +1019,7 @@
createForm: {
title: 'label.add.network.offering',
preFilter: function(args) {
preFilter: function(args) {
var $availability = args.$form.find('.form-item[rel=availability]');
var $serviceOfferingId = args.$form.find('.form-item[rel=serviceOfferingId]');
var hasAdvancedZones = false;
@ -1034,30 +1035,12 @@
}
}
});
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') {
@ -1087,22 +1070,62 @@
$(':ui-dialog').dialog('option', 'position', 'center');
if (hasAdvancedZones && $guestTypeField.val() == 'Shared') {
$basicSharedFields.hide();
$basicSharedFields.find('input[type=checkbox]').attr('checked', false);
} else {
$basicSharedFields.each(function() {
var $field = $(this);
var $dependsOn = args.$form.find('.form-item').filter(function() {
return $(this).attr('rel') == $field.attr('depends-on');
});
//hide/show service fields upon guestIpType(Shared/Isolated) and zoneType(Advanced/Basic) ***** (begin) *****
var serviceFieldsToHide = [];
if($guestTypeField.val() == 'Shared') { //Shared network offering
if (hasAdvancedZones) { //advanced zone
serviceFieldsToHide = [
'service.SourceNat.isEnabled',
'service.StaticNat.isEnabled',
'service.PortForwarding.isEnabled',
'service.Lb.isEnabled',
'service.Firewall.isEnabled',
'service.Vpn.isEnabled'
];
}
else { //basic zone
serviceFieldsToHide = [
'service.SourceNat.isEnabled',
'service.PortForwarding.isEnabled',
'service.Firewall.isEnabled',
'service.Vpn.isEnabled'
];
}
}
else { //Isolated network offering (which supports all services)
serviceFieldsToHide = [];
}
//hide service fields that are included in serviceFieldsToHide
var $serviceCheckboxesToHide = args.$form.find('.form-item').filter(function() {
if ($.inArray($(this).attr('rel'), serviceFieldsToHide) > -1) {
return true;
}
return false;
});
$serviceCheckboxesToHide.hide();
$serviceCheckboxesToHide.find('input[type=checkbox]').attr('checked', false);
if (!$field.attr('depends-on') ||
$dependsOn.find('input[type=checkbox]').is(':checked')) {
$field.css('display', 'inline-block');
}
});
}
var $serviceProviderDropdownsToHide = args.$form.find('.form-item').filter(function() {
if ($.inArray($(this).attr('depends-on'), serviceFieldsToHide) > -1) {
return true;
}
return false;
});
$serviceProviderDropdownsToHide.hide();
//show service fields that are not included in serviceFieldsToHide
for(var i=0; i < serviceFields.length; i++) {
var serviceField = serviceFields[i];
if($.inArray(serviceField, serviceFieldsToHide) == -1) {
if(args.$form.find('.form-item[rel=\"' + serviceField + '\"]').css('display') == 'none' ) {
args.$form.find('.form-item[rel=\"' + serviceField + '\"]').css('display', 'inline-block');
}
}
}
//hide/show service fields upon guestIpType(Shared/Isolated) and zoneType(Advanced/Basic) ***** (end) *****
});
args.$form.change();
@ -1161,9 +1184,10 @@
async: true,
success: function(data) {
networkServiceObjs = data.listsupportednetworkservicesresponse.networkservice;
serviceFields = [];
var fields = {}, providerCanenableindividualserviceMap = {}, providerServicesMap = {}, providerDropdownsForciblyChangedTogether = {};
$(networkServiceObjs).each(function() {
var serviceName = this.name;
var serviceName = this.name;
var providerObjs = this.provider;
var serviceDisplayName;
@ -1190,6 +1214,7 @@
serviceCheckboxNames.push(id.isEnabled);
fields[id.isEnabled] = { label: serviceDisplayName, isBoolean: true };
serviceFields.push(id.isEnabled);
if(providerObjs != null && providerObjs.length > 1) { //present provider dropdown when there are multiple providers for a service
fields[id.provider] = {