This is an automated email from the ASF dual-hosted git repository.

ishanbha pushed a commit to branch branch-feature-AMBARI-14714-ui
in repository https://gitbox.apache.org/repos/asf/ambari.git


The following commit(s) were added to refs/heads/branch-feature-AMBARI-14714-ui 
by this push:
     new 430285d  Bug fixes (#257)
430285d is described below

commit 430285d786d210f95e6691de3d68ab6e908a1a9e
Author: Jason Golieb <[email protected]>
AuthorDate: Wed Feb 7 01:57:42 2018 -0500

    Bug fixes (#257)
---
 ambari-web/app/controllers/installer.js            | 103 ++++++++++++++-------
 .../wizard/verifyProducts_controller.js            |   7 ++
 .../app/mixins/wizard/assign_master_components.js  |   2 +
 ambari-web/app/routes/installer.js                 |  12 ++-
 ambari-web/app/views/wizard/selectMpacks_view.js   |   9 ++
 5 files changed, 94 insertions(+), 39 deletions(-)

diff --git a/ambari-web/app/controllers/installer.js 
b/ambari-web/app/controllers/installer.js
index 5712647..c0a82fb 100644
--- a/ambari-web/app/controllers/installer.js
+++ b/ambari-web/app/controllers/installer.js
@@ -278,9 +278,7 @@ App.InstallerController = 
App.WizardController.extend(App.Persist, {
         stackName: stackName,
         stackVersion: stackVersion,
         serviceName: serviceName
-      },
-      success: 'loadMpackServiceInfoSuccess',
-      error: 'loadMpackServiceInfoError'
+      }
     });
   },
 
@@ -1431,11 +1429,32 @@ App.InstallerController = 
App.WizardController.extend(App.Persist, {
     sCallback();
   },
 
-  clearStackServices: function () {
-    const stackServices = App.StackService.find();
-    stackServices.forEach(service => {
-      Em.run.once(this, () => App.MpackServiceMapper.deleteRecord(service));
-    });
+  clearStackServices: function (deleteAll) {
+    var dfd = $.Deferred();
+
+    if (deleteAll) {
+      const stackServices = App.StackService.find();
+      let stackServicesCount = stackServices.content.length;
+
+      if (stackServicesCount > 0) {
+        stackServices.forEach(service => {
+          Em.run.once(this, () => {
+            App.MpackServiceMapper.deleteRecord(service);
+            stackServicesCount--;
+
+            if (stackServicesCount === 0) {
+              dfd.resolve();
+            }
+          });
+        });
+      } else {
+        dfd.resolve();
+      }  
+    } else {
+      dfd.resolve();
+    }  
+
+    return dfd.promise();
   },
 
   getStepSavedState: function (stepName) {
@@ -1494,40 +1513,52 @@ App.InstallerController = 
App.WizardController.extend(App.Persist, {
    * @return {object} a promise
    */
   finishRegisteringMpacks: function (keepStackServices) {
-    return this.getMpackStackVersions().fail(this.addErrors).always(data => {
-      data.items.forEach(versionDefinition => 
App.stackMapper.map(versionDefinition))
-
-      if (!keepStackServices) {
-        this.clearStackServices();
-      }
+    var dfd = $.Deferred();
 
+    this.getMpackStackVersions()
+    .fail(errors => {
+      this.addErrors(errors);
+      dfd.reject();
+    })
+    .always(data => {
+      data.items.forEach(versionDefinition => 
App.stackMapper.map(versionDefinition));
+      return this.clearStackServices(!keepStackServices);
+    })
+    .then(() => {
       //get info about services from specific stack versions and save to 
StackService model
       const selectedServices = this.get('content.selectedServices');
-      const servicePromises = selectedServices.map(service => 
this.loadMpackServiceInfo(service.stackName, service.stackVersion, 
service.name));
-
-      return $.when(...servicePromises).then(() => {
-        const services = App.StackService.find();
-        this.set('content.services', services);
-
-        const clients = [];
-        services.forEach(service => {
-          const client = 
service.get('serviceComponents').filterProperty('isClient', true);
-          client.forEach(clientComponent => {
-            clients.pushObject({
-              component_name: clientComponent.get('componentName'),
-              display_name: clientComponent.get('displayName'),
-              isInstalled: false
-            });
+      const servicePromises = selectedServices.map(service =>
+        this.loadMpackServiceInfo(service.stackName, service.stackVersion, 
service.name)
+          .then(this.loadMpackServiceInfoSuccess, 
this.loadMpackServiceInfoError)
+      );
+
+      return $.when(...servicePromises);
+    })
+    .then(() => {
+      const services = App.StackService.find();
+      this.set('content.services', services);
+
+      const clients = [];
+      services.forEach(service => {
+        const client = 
service.get('serviceComponents').filterProperty('isClient', true);
+        client.forEach(clientComponent => {
+          clients.pushObject({
+            component_name: clientComponent.get('componentName'),
+            display_name: clientComponent.get('displayName'),
+            isInstalled: false
           });
         });
-        this.set('content.clients', clients);
-        this.save('clients');
-
-        //TODO: mpacks - hard coding this for now. We need to get rid of the 
concept of "selected stack".
-        this.set('content.selectedStack', { name: "HDP", version: "3.0.0" });
-        this.save('selectedStack');
       });
+      this.set('content.clients', clients);
+      this.save('clients');
+
+      //TODO: mpacks - hard coding this for now. We need to get rid of the 
concept of "selected stack".
+      this.set('content.selectedStack', { name: "HDP", version: "3.0.0" });
+      this.save('selectedStack');
+
+      dfd.resolve();
     });
+    
+    return dfd;
   }
-
 });
diff --git a/ambari-web/app/controllers/wizard/verifyProducts_controller.js 
b/ambari-web/app/controllers/wizard/verifyProducts_controller.js
index 3e3b600..8a60310 100644
--- a/ambari-web/app/controllers/wizard/verifyProducts_controller.js
+++ b/ambari-web/app/controllers/wizard/verifyProducts_controller.js
@@ -138,6 +138,13 @@ App.WizardVerifyProductsController = 
App.WizardStepController.extend({
     this.verifyRepo(repo).then(this.verifyRepoSucceeded.bind(this), 
this.verifyRepoFailed.bind(this));
   },
 
+  isStepDisabled: function (stepIndex, currentIndex) {
+    const normallyDisabled = this._super(stepIndex, currentIndex);
+    const useCustomRepo = 
this.get('wizardController.content.downloadConfig.useCustomRepo');
+
+    return normallyDisabled || !useCustomRepo;
+  },
+
   isSubmitDisabled: function () {
     const repos = this.get('repos');
     return App.get('router.btnClickInProgress')
diff --git a/ambari-web/app/mixins/wizard/assign_master_components.js 
b/ambari-web/app/mixins/wizard/assign_master_components.js
index 8572d7f..0870378 100644
--- a/ambari-web/app/mixins/wizard/assign_master_components.js
+++ b/ambari-web/app/mixins/wizard/assign_master_components.js
@@ -309,6 +309,8 @@ App.AssignMasterComponents = 
Em.Mixin.create(App.HostComponentValidationMixin, A
   clearRecommendations: function() {
     if (this.get('content.recommendations')) {
       this.set('content.recommendations', null);
+    }
+    if (this.get('recommendations')) {
       this.set('recommendations', null);
     }
   },
diff --git a/ambari-web/app/routes/installer.js 
b/ambari-web/app/routes/installer.js
index 081d73f..ffa392f 100644
--- a/ambari-web/app/routes/installer.js
+++ b/ambari-web/app/routes/installer.js
@@ -416,7 +416,7 @@ module.exports = Em.Route.extend(App.RouterRedirections, {
       if (downloadConfig && downloadConfig.useCustomRepo) {
         router.transitionTo('customProductRepos');
       } else {
-        router.transitionTo('verifyProducts');
+        router.transitionTo('step5');
       }  
       console.timeEnd('downloadMpacks next');
     }
@@ -587,7 +587,12 @@ module.exports = Em.Route.extend(App.RouterRedirections, {
     backTransition: function (router) {
       var controller = router.get('installerController');
       controller.clearErrors();
-      router.transitionTo('verifyProducts');
+      const downloadConfig = controller.get('content.downloadConfig');
+      if (downloadConfig && downloadConfig.useCustomRepo) {
+        router.transitionTo('verifyProducts');
+      } else {
+        router.transitionTo('downloadMpacks');
+      }
     },
     
     next: function (router) {
@@ -597,7 +602,7 @@ module.exports = Em.Route.extend(App.RouterRedirections, {
         var controller = router.get('installerController');
         var wizardStep5Controller = router.get('wizardStep5Controller');
         controller.saveMasterComponentHosts(wizardStep5Controller);
-        controller.setDBProperty('recommendations', 
wizardStep5Controller.get('content.recommendations'));
+        controller.setDBProperty('recommendations', 
wizardStep5Controller.get('content.recommendations') || 
wizardStep5Controller.get('recommendations'));
         // Clear subsequent steps if user made changes
         if (!wizardStep5Controller.get('isSaved')) {
           controller.setDBProperty('slaveComponentHosts', undefined);
@@ -631,6 +636,7 @@ module.exports = Em.Route.extend(App.RouterRedirections, {
         console.timeEnd('step6 connectOutlets');
       });
     },
+    
     backTransition: function(router) {
       var controller = router.get('installerController');
       controller.clearErrors();
diff --git a/ambari-web/app/views/wizard/selectMpacks_view.js 
b/ambari-web/app/views/wizard/selectMpacks_view.js
index 22e7b92..80d2cf6 100644
--- a/ambari-web/app/views/wizard/selectMpacks_view.js
+++ b/ambari-web/app/views/wizard/selectMpacks_view.js
@@ -23,6 +23,15 @@ App.WizardSelectMpacksView = Em.View.extend({
 
   didInsertElement: function () {
     this.get('controller').loadStep();
+
+    //enable initial tooltips
+    $('[data-toggle="tooltip"]').tooltip();
+    //enables tooltips added later
+    const target = document.querySelector('#select-mpacks');
+    const observer = new MutationObserver(() => {
+      $('[data-toggle="tooltip"]').tooltip();
+    });
+    observer.observe(target, { childList: true, subtree: true });
   },
 
   toggleMode: function () {

-- 
To stop receiving notification emails like this one, please contact
[email protected].

Reply via email to