Repository: ambari
Updated Branches:
  refs/heads/branch-2.1 e1951d4f9 -> 9fdd7e54f


AMBARI-12764. ASW. Assign Masters Page. Click "+" takes 3 seconds (only JS 
processing) to display combobox with new component's host (onechiporenko)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/9fdd7e54
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/9fdd7e54
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/9fdd7e54

Branch: refs/heads/branch-2.1
Commit: 9fdd7e54fb99010caf8973a99992b280672fd6bf
Parents: e1951d4
Author: Oleg Nechiporenko <onechipore...@apache.org>
Authored: Thu Aug 13 18:28:03 2015 +0300
Committer: Oleg Nechiporenko <onechipore...@apache.org>
Committed: Thu Aug 13 18:28:03 2015 +0300

----------------------------------------------------------------------
 ambari-web/app/mixins/common/blueprint.js        | 14 +++++++++-----
 .../mixins/wizard/assign_master_components.js    | 19 +++++++++++--------
 2 files changed, 20 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/9fdd7e54/ambari-web/app/mixins/common/blueprint.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/mixins/common/blueprint.js 
b/ambari-web/app/mixins/common/blueprint.js
index 4889b3d..a006b9c 100644
--- a/ambari-web/app/mixins/common/blueprint.js
+++ b/ambari-web/app/mixins/common/blueprint.js
@@ -18,14 +18,18 @@
 
 var App = require('app');
 var blueprintUtils = require('utils/blueprint');
+var dataManipulation = require('utils/data_manipulation');
 
 App.BlueprintMixin = Em.Mixin.create({
+
   /**
-   * returns blueprint for all currenlty installed master, slave and client 
components
+   * returns blueprint for all currently installed master, slave and client 
components
+   * @method getCurrentMasterSlaveBlueprint
    */
   getCurrentMasterSlaveBlueprint: function () {
     var components = App.HostComponent.find();
     var hosts = components.mapProperty("hostName").uniq();
+    var mappedComponents = dataManipulation.groupPropertyValues(components, 
'hostName');
 
     var res = {
       blueprint: { host_groups: [] },
@@ -33,13 +37,13 @@ App.BlueprintMixin = Em.Mixin.create({
     };
 
     hosts.forEach(function (host, i) {
-      var group_name = 'host-group-' + (i+1);
+      var group_name = 'host-group-' + (i + 1);
 
       res.blueprint.host_groups.push({
         name: group_name,
-        components: components.filterProperty("hostName", 
host).mapProperty("componentName").map(function (c) {
-          return { name: c };
-        })
+        components: mappedComponents[host] ? 
mappedComponents[host].map(function (c) {
+          return { name: Em.get(c, 'componentName') };
+        }) : []
       });
 
       res.blueprint_cluster_binding.host_groups.push({

http://git-wip-us.apache.org/repos/asf/ambari/blob/9fdd7e54/ambari-web/app/mixins/wizard/assign_master_components.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/mixins/wizard/assign_master_components.js 
b/ambari-web/app/mixins/wizard/assign_master_components.js
index d3d674a..0ba5eb1 100644
--- a/ambari-web/app/mixins/wizard/assign_master_components.js
+++ b/ambari-web/app/mixins/wizard/assign_master_components.js
@@ -597,9 +597,9 @@ App.AssignMasterComponents = Em.Mixin.create({
 
   /**
    * Get recommendations info from API
-   * @return {undefined}
-   * @param function(componentInstallationobjects, this) callback
-   * @param bool includeMasters
+   * @param {function}callback
+   * @param {boolean} includeMasters
+   * @method loadComponentsRecommendationsFromServer
    */
   loadComponentsRecommendationsFromServer: function(callback, includeMasters) {
     var self = this;
@@ -608,7 +608,8 @@ App.AssignMasterComponents = Em.Mixin.create({
       // Don't do AJAX call if recommendations has been already received
       // But if user returns to previous step (selecting services), stored 
recommendations will be cleared in routers' next handler and AJAX call will be 
made again
       callback(self.createComponentInstallationObjects(), self);
-    } else {
+    }
+    else {
       var selectedServices = 
App.StackService.find().filterProperty('isSelected').mapProperty('serviceName');
       var installedServices = 
App.StackService.find().filterProperty('isInstalled').mapProperty('serviceName');
       var services = installedServices.concat(selectedServices).uniq();
@@ -625,9 +626,11 @@ App.AssignMasterComponents = Em.Mixin.create({
       if (includeMasters) {
         // Made partial recommendation request for reflect in blueprint 
host-layout changes which were made by user in UI
         data.recommendations = self.getCurrentBlueprint();
-      } else if (!self.get('isInstallerWizard')) {
-        data.recommendations = self.getCurrentMasterSlaveBlueprint();
       }
+      else
+        if (!self.get('isInstallerWizard')) {
+          data.recommendations = self.getCurrentMasterSlaveBlueprint();
+        }
 
       return App.ajax.send({
         name: 'wizard.loadrecommendations',
@@ -636,8 +639,8 @@ App.AssignMasterComponents = Em.Mixin.create({
         success: 'loadRecommendationsSuccessCallback',
         error: 'loadRecommendationsErrorCallback'
       }).then(function () {
-            callback(self.createComponentInstallationObjects(), self);
-          });
+          callback(self.createComponentInstallationObjects(), self);
+        });
     }
   },
 

Reply via email to