You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ol...@apache.org on 2012/07/25 11:09:54 UTC
git commit: CS-15292: Split long OS Type list when create Template,
ISO.
Updated Branches:
refs/heads/master 1075344f0 -> f090fdeea
CS-15292: Split long OS Type list when create Template,ISO.
Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/f090fdee
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/f090fdee
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/f090fdee
Branch: refs/heads/master
Commit: f090fdeea748e72b92878d955764d5059055e69d
Parents: 1075344
Author: olgasmola <ol...@gmail.com>
Authored: Wed Jul 11 16:09:38 2012 +0300
Committer: olgasmola <ol...@gmail.com>
Committed: Wed Jul 25 12:05:05 2012 +0300
----------------------------------------------------------------------
ui/scripts/templates.js | 70 ++++++++++++++++++++++++--
ui/scripts/ui/dialog.js | 116 ++++++++++++++++++++++-------------------
2 files changed, 128 insertions(+), 58 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/f090fdee/ui/scripts/templates.js
----------------------------------------------------------------------
diff --git a/ui/scripts/templates.js b/ui/scripts/templates.js
index 7a99d79..d926d05 100644
--- a/ui/scripts/templates.js
+++ b/ui/scripts/templates.js
@@ -204,11 +204,42 @@
}
},
+ osCategory: {
+ label: 'OS Category',
+ 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: '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("listOsTypes"),
+ 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) {
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/f090fdee/ui/scripts/ui/dialog.js
----------------------------------------------------------------------
diff --git a/ui/scripts/ui/dialog.js b/ui/scripts/ui/dialog.js
index de44eb0..86db690 100644
--- a/ui/scripts/ui/dialog.js
+++ b/ui/scripts/ui/dialog.js
@@ -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;
+
+ $formItem.attr('depends-on-'+value, dependsOn);
+ $dependsOn = $form.find('input, select').filter(function() {
+ return $(this).attr('name') === dependsOn;
+ });
- if ($dependsOn.is('[type=checkbox]')) {
- var isReverse = args.form.fields[dependsOn].isReverse;
+ 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 + '\']');
+ // Checkbox
+ $dependsOn.bind('click', function(event) {
+ var $target = $(this);
+ var $dependent = $target.closest('form').find('[depends-on-' + value + '=\'' + dependsOn + '\']');
- if (($target.is(':checked') && !isReverse) ||
+ 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.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();
+ $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);
- }
+ if (!isReverse) {
+ $dependent.find('input[type=checkbox]').attr('checked', false);
+ } else {
+ $dependent.find('input[type=checkbox]').attr('checked', true);
+ }
- return true;
- });
+ return true;
+ });
- // Show fields by default if it is reverse checkbox
- if (isReverse) {
- $dependsOn.click();
- }
- }
+ // 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.bind('change', function(event) {
- var $target = $(this);
+ $dependsOn = $input.closest('form').find('input, select').filter(function() {
+ return $(this).attr('name') === dependsOn;
+ });
- if (!$dependsOn.is('select')) return true;
+ $dependsOn.bind('change', function(event) {
+ var $target = $(this);
- var dependsOnArgs = {};
+ if (!$dependsOn.is('select')) return true;
- $input.find('option').remove();
-
- if (!$target.children().size()) return true;
+ var dependsOnArgs = {};
- dependsOnArgs[dependsOn] = $target.val();
- selectFn($.extend(selectArgs, dependsOnArgs));
+ $input.find('option').remove();
- return true;
- });
+ if (!$target.children().size()) return true;
- if (!$dependsOn.is('select')) {
- selectFn(selectArgs);
- }
+ dependsOnArgs[dependsOn] = $target.val();
+ selectFn($.extend(selectArgs, dependsOnArgs));
+
+ return true;
+ });
+
+ if (!$dependsOn.is('select')) {
+ selectFn(selectArgs);
+ }
+ });
} else {
selectFn(selectArgs);
}