Updated Branches: refs/heads/master cd6e6a4d3 -> 71fd0a49e
CLOUDSTACK-4738: UI > Instances > Change Service Offering > dialog > add 3 new fields: CPU speed, CPU number, memory. Show the 3 new fields when selected compute offerings is custom. Hide them otherwise. Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/71fd0a49 Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/71fd0a49 Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/71fd0a49 Branch: refs/heads/master Commit: 71fd0a49e3f746420d5afacb0b4a67dec380e376 Parents: cd6e6a4 Author: Jessica Wang <[email protected]> Authored: Mon Dec 2 16:10:08 2013 -0800 Committer: Jessica Wang <[email protected]> Committed: Mon Dec 2 16:11:05 2013 -0800 ---------------------------------------------------------------------- ui/scripts/instances.js | 104 +++++++++++++++++++++++++++++++++++++------ 1 file changed, 91 insertions(+), 13 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/71fd0a49/ui/scripts/instances.js ---------------------------------------------------------------------- diff --git a/ui/scripts/instances.js b/ui/scripts/instances.js index 27e0e4f..0074335 100644 --- a/ui/scripts/instances.js +++ b/ui/scripts/instances.js @@ -1430,37 +1430,115 @@ return description; }, fields: { - serviceOffering: { + serviceofferingid: { label: 'label.compute.offering', select: function(args) { + var serviceofferingObjs; $.ajax({ url: createURL("listServiceOfferings&VirtualMachineId=" + args.context.instances[0].id), dataType: "json", async: true, success: function(json) { - var serviceofferings = json.listserviceofferingsresponse.serviceoffering; - var items = []; - $(serviceofferings).each(function() { - items.push({ - id: this.id, - description: this.name - }); - }); + serviceofferingObjs = json.listserviceofferingsresponse.serviceoffering; + var items = []; + if (serviceofferingObjs != null) { + for (var i = 0; i < serviceofferingObjs.length; i++) { + items.push({ + id: serviceofferingObjs[i].id, + description: serviceofferingObjs[i].name + }); + } + } args.response.success({ data: items }); } }); + + args.$select.change(function(){ + var $form = $(this).closest('form'); + + var serviceofferingid = $(this).val(); + if (serviceofferingid == null || serviceofferingid.length == 0) + return; + + var items = []; + var selectedServiceofferingObj; + if (serviceofferingObjs != null) { + for (var i = 0; i < serviceofferingObjs.length; i++) { + if (serviceofferingObjs[i].id == serviceofferingid) { + selectedServiceofferingObj = serviceofferingObjs[i]; + break; + } + } + } + if (selectedServiceofferingObj == undefined) + return; + + if (selectedServiceofferingObj.iscustomized == true) { + $form.find('.form-item[rel=cpuSpeed]').css('display', 'inline-block'); + $form.find('.form-item[rel=cpuNumber]').css('display', 'inline-block'); + $form.find('.form-item[rel=memory]').css('display', 'inline-block'); + } else { + $form.find('.form-item[rel=cpuSpeed]').hide(); + $form.find('.form-item[rel=cpuNumber]').hide(); + $form.find('.form-item[rel=memory]').hide(); + } + }); } - } + }, + cpuSpeed: { + label: 'label.cpu.mhz', + validation: { + required: true, + number: true + }, + isHidden: true + }, + cpuNumber: { + label: 'label.num.cpu.cores', + validation: { + required: true, + number: true + }, + isHidden: true + }, + memory: { + label: 'label.memory.mb', + validation: { + required: true, + number: true + }, + isHidden: true + } } }, action: function(args) { + var data = { + id: args.context.instances[0].id, + serviceofferingid: args.data.serviceofferingid + }; + + if (args.$form.find('.form-item[rel=cpuSpeed]').is(':visible')) { + $.extend(data, { + 'customparameters[0].cpuSpeed': args.data.cpuSpeed + }); + } + if (args.$form.find('.form-item[rel=cpuNumber]').is(':visible')) { + $.extend(data, { + 'customparameters[0].cpuNumber': args.data.cpuNumber + }); + } + if (args.$form.find('.form-item[rel=memory]').is(':visible')) { + $.extend(data, { + 'customparameters[0].memory': args.data.memory + }); + } + $.ajax({ - url: createURL("scaleVirtualMachine&id=" + args.context.instances[0].id + "&serviceofferingid=" + args.data.serviceOffering), - dataType: "json", - async: true, + url: createURL('scaleVirtualMachine'), + data: data, success: function(json) { var jid = json.scalevirtualmachineresponse.jobid; args.response.success({
