Updated Branches:
  refs/heads/4.3 99e65d051 -> fa577a44c

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/fa577a44
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/fa577a44
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/fa577a44

Branch: refs/heads/4.3
Commit: fa577a44ce745dab3a46d3e95ce35ca8bed7d59f
Parents: 99e65d0
Author: Jessica Wang <[email protected]>
Authored: Mon Dec 2 16:10:08 2013 -0800
Committer: Jessica Wang <[email protected]>
Committed: Mon Dec 2 16:10:08 2013 -0800

----------------------------------------------------------------------
 ui/scripts/instances.js | 104 +++++++++++++++++++++++++++++++++++++------
 1 file changed, 91 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/fa577a44/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({

Reply via email to