mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
CS-15292: Split long OS Type list when create Template,ISO.
This commit is contained in:
parent
1075344f03
commit
f090fdeea7
@ -204,11 +204,42 @@
|
||||
}
|
||||
},
|
||||
|
||||
osTypeId: {
|
||||
label: 'label.os.type',
|
||||
osCategory: {
|
||||
label: 'OS Category',
|
||||
select: function(args) {
|
||||
$.ajax({
|
||||
url: createURL("listOsTypes"),
|
||||
url: createURL("listOsCategories"),
|
||||
dataType: "json",
|
||||
async: true,
|
||||
success: function(json) {
|
||||
var osCats = json.listoscategoriesresponse.oscategory;
|
||||
var items = [];
|
||||
if (isAdmin())
|
||||
items.push({id: -1, description: "All OS"});
|
||||
$(osCats).each(function() {
|
||||
items.push({id: this.id, description: this.name});
|
||||
});
|
||||
args.response.success({data: items});
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
osTypeId: {
|
||||
label: 'label.os.type',
|
||||
dependsOn: 'osCategory',
|
||||
select: function(args) {
|
||||
if(args.osCategory == null)
|
||||
return;
|
||||
|
||||
var apiCmd;
|
||||
if(args.osCategory == -1)
|
||||
apiCmd = "listOsTypes";
|
||||
else
|
||||
apiCmd = "listOsTypes&oscategoryid=" + args.osCategory;
|
||||
|
||||
$.ajax({
|
||||
url: createURL(apiCmd),
|
||||
dataType: "json",
|
||||
async: true,
|
||||
success: function(json) {
|
||||
@ -783,15 +814,46 @@
|
||||
isBoolean: true,
|
||||
isChecked: true
|
||||
},
|
||||
|
||||
|
||||
osCategory: {
|
||||
label: 'OS Category',
|
||||
dependsOn: 'isBootable',
|
||||
select: function(args) {
|
||||
$.ajax({
|
||||
url: createURL("listOsCategories"),
|
||||
dataType: "json",
|
||||
async: true,
|
||||
success: function(json) {
|
||||
var osCats = json.listoscategoriesresponse.oscategory;
|
||||
var items = [];
|
||||
if (isAdmin())
|
||||
items.push({id: -1, description: "All OS"});
|
||||
$(osCats).each(function() {
|
||||
items.push({id: this.id, description: this.name});
|
||||
});
|
||||
args.response.success({data: items});
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
osTypeId: {
|
||||
label: 'label.os.type',
|
||||
dependsOn: 'isBootable',
|
||||
dependsOn: ['isBootable','osCategory'],
|
||||
isHidden: false,
|
||||
validation: { required: true },
|
||||
select: function(args) {
|
||||
if(args.osCategory == null)
|
||||
return;
|
||||
|
||||
var apiCmd;
|
||||
if(args.osCategory == -1)
|
||||
apiCmd = "listOsTypes";
|
||||
else
|
||||
apiCmd = "listOsTypes&oscategoryid=" + args.osCategory;
|
||||
|
||||
$.ajax({
|
||||
url: createURL("listOsTypes"),
|
||||
url: createURL(apiCmd),
|
||||
dataType: "json",
|
||||
async: true,
|
||||
success: function(json) {
|
||||
|
||||
@ -117,52 +117,56 @@
|
||||
var $value = $('<div>').addClass('value')
|
||||
.appendTo($formItem);
|
||||
var $input, $dependsOn, selectFn, selectArgs;
|
||||
var dependsOn = field.dependsOn;
|
||||
var dependsOn = $.isArray(field.dependsOn) ? field.dependsOn : [field.dependsOn] ; //now an array
|
||||
|
||||
// Depends on fields
|
||||
if (field.dependsOn) {
|
||||
$formItem.attr('depends-on', dependsOn);
|
||||
$dependsOn = $form.find('input, select').filter(function() {
|
||||
return $(this).attr('name') === dependsOn;
|
||||
});
|
||||
if (dependsOn.length) {
|
||||
$.each(dependsOn, function(key, value){
|
||||
var dependsOn = value;
|
||||
|
||||
if ($dependsOn.is('[type=checkbox]')) {
|
||||
var isReverse = args.form.fields[dependsOn].isReverse;
|
||||
|
||||
// Checkbox
|
||||
$dependsOn.bind('click', function(event) {
|
||||
var $target = $(this);
|
||||
var $dependent = $target.closest('form').find('[depends-on=\'' + dependsOn + '\']');
|
||||
|
||||
if (($target.is(':checked') && !isReverse) ||
|
||||
($target.is(':unchecked') && isReverse)) {
|
||||
$dependent.css('display', 'inline-block');
|
||||
$dependent.each(function() {
|
||||
if ($(this).data('dialog-select-fn')) {
|
||||
$(this).data('dialog-select-fn')();
|
||||
}
|
||||
});
|
||||
} else if (($target.is(':unchecked') && !isReverse) ||
|
||||
($target.is(':checked') && isReverse)) {
|
||||
$dependent.hide();
|
||||
}
|
||||
|
||||
$dependent.find('input[type=checkbox]').click();
|
||||
|
||||
if (!isReverse) {
|
||||
$dependent.find('input[type=checkbox]').attr('checked', false);
|
||||
} else {
|
||||
$dependent.find('input[type=checkbox]').attr('checked', true);
|
||||
}
|
||||
|
||||
return true;
|
||||
$formItem.attr('depends-on-'+value, dependsOn);
|
||||
$dependsOn = $form.find('input, select').filter(function() {
|
||||
return $(this).attr('name') === dependsOn;
|
||||
});
|
||||
|
||||
// Show fields by default if it is reverse checkbox
|
||||
if (isReverse) {
|
||||
$dependsOn.click();
|
||||
}
|
||||
}
|
||||
if ($dependsOn.is('[type=checkbox]')) {
|
||||
var isReverse = args.form.fields[dependsOn].isReverse;
|
||||
|
||||
// Checkbox
|
||||
$dependsOn.bind('click', function(event) {
|
||||
var $target = $(this);
|
||||
var $dependent = $target.closest('form').find('[depends-on-' + value + '=\'' + dependsOn + '\']');
|
||||
|
||||
if (($target.is(':checked') && !isReverse) ||
|
||||
($target.is(':unchecked') && isReverse)) {
|
||||
$dependent.css('display', 'inline-block');
|
||||
$dependent.each(function() {
|
||||
if ($(this).find('select').data('dialog-select-fn')) {
|
||||
$(this).find('select').data('dialog-select-fn')();
|
||||
}
|
||||
});
|
||||
} else if (($target.is(':unchecked') && !isReverse) ||
|
||||
($target.is(':checked') && isReverse)) {
|
||||
$dependent.hide();
|
||||
}
|
||||
|
||||
$dependent.find('input[type=checkbox]').click();
|
||||
|
||||
if (!isReverse) {
|
||||
$dependent.find('input[type=checkbox]').attr('checked', false);
|
||||
} else {
|
||||
$dependent.find('input[type=checkbox]').attr('checked', true);
|
||||
}
|
||||
|
||||
return true;
|
||||
});
|
||||
|
||||
// Show fields by default if it is reverse checkbox
|
||||
if (isReverse) {
|
||||
$dependsOn.click();
|
||||
}
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
// Determine field type of input
|
||||
@ -207,31 +211,35 @@
|
||||
// Pass form item to provider for additional manipulation
|
||||
$.extend(selectArgs, { $select: $input });
|
||||
|
||||
if (dependsOn) {
|
||||
$dependsOn = $input.closest('form').find('input, select').filter(function() {
|
||||
return $(this).attr('name') === dependsOn;
|
||||
if (dependsOn.length) {
|
||||
$.each(dependsOn, function(key, value){
|
||||
var dependsOn = value;
|
||||
|
||||
$dependsOn = $input.closest('form').find('input, select').filter(function() {
|
||||
return $(this).attr('name') === dependsOn;
|
||||
});
|
||||
|
||||
$dependsOn.bind('change', function(event) {
|
||||
var $target = $(this);
|
||||
|
||||
if (!$dependsOn.is('select')) return true;
|
||||
|
||||
var dependsOnArgs = {};
|
||||
|
||||
$input.find('option').remove();
|
||||
|
||||
if (!$target.children().size()) return true;
|
||||
|
||||
dependsOnArgs[dependsOn] = $target.val();
|
||||
selectFn($.extend(selectArgs, dependsOnArgs));
|
||||
|
||||
return true;
|
||||
});
|
||||
|
||||
if (!$dependsOn.is('select')) {
|
||||
selectFn(selectArgs);
|
||||
}
|
||||
});
|
||||
|
||||
$dependsOn.bind('change', function(event) {
|
||||
var $target = $(this);
|
||||
|
||||
if (!$dependsOn.is('select')) return true;
|
||||
|
||||
var dependsOnArgs = {};
|
||||
|
||||
$input.find('option').remove();
|
||||
|
||||
if (!$target.children().size()) return true;
|
||||
|
||||
dependsOnArgs[dependsOn] = $target.val();
|
||||
selectFn($.extend(selectArgs, dependsOnArgs));
|
||||
|
||||
return true;
|
||||
});
|
||||
|
||||
if (!$dependsOn.is('select')) {
|
||||
selectFn(selectArgs);
|
||||
}
|
||||
} else {
|
||||
selectFn(selectArgs);
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user