ambari-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From rz...@apache.org
Subject ambari git commit: AMBARI-18942 - Auto-start services: Avoid full page reload after "Save" / "Discard" (rzang)
Date Mon, 21 Nov 2016 22:15:48 GMT
Repository: ambari
Updated Branches:
  refs/heads/branch-2.5 1613e4886 -> 6ce5f4fea


AMBARI-18942 - Auto-start services: Avoid full page reload after "Save" / "Discard" (rzang)


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

Branch: refs/heads/branch-2.5
Commit: 6ce5f4fea350ee8e81e3fc0c5674b093de92fb8f
Parents: 1613e48
Author: Richard Zang <rzang@apache.org>
Authored: Mon Nov 21 14:09:47 2016 -0800
Committer: Richard Zang <rzang@apache.org>
Committed: Mon Nov 21 14:13:35 2016 -0800

----------------------------------------------------------------------
 .../main/admin/service_auto_start.js            | 58 +++++++++++++++-----
 .../templates/main/admin/service_auto_start.hbs |  2 +-
 .../app/views/main/admin/service_auto_start.js  | 21 ++++++-
 .../service_auto_start/component_auto_start.js  |  9 +++
 4 files changed, 72 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/6ce5f4fe/ambari-web/app/controllers/main/admin/service_auto_start.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/admin/service_auto_start.js b/ambari-web/app/controllers/main/admin/service_auto_start.js
index b425c78..3365cae 100644
--- a/ambari-web/app/controllers/main/admin/service_auto_start.js
+++ b/ambari-web/app/controllers/main/admin/service_auto_start.js
@@ -25,6 +25,8 @@ App.MainAdminServiceAutoStartController = Em.Controller.extend({
   componentsConfigs: [],
   isSaveDisabled: true,
   valueChanged: false,
+  syncTrigger: false, // trigger status reset in switch view after "save"
+  revertTrigger: false, // trigger status reset in switch view after "discard"
 
   loadClusterConfig: function () {
     return App.ajax.send({
@@ -60,7 +62,9 @@ App.MainAdminServiceAutoStartController = Em.Controller.extend({
             component_name: serviceComponentInfo.component_name,
             recovery_enabled: serviceComponentInfo.recovery_enabled === 'true',
             valueChanged: false,
-            service_name: serviceComponentInfo.service_name
+            service_name: serviceComponentInfo.service_name,
+            syncTrigger: false,
+            revertTrigger: false,
           });
           if (services[serviceComponentInfo.service_name]) {
             services[serviceComponentInfo.service_name].get('componentRecovery').push(componentRecovery);
@@ -121,6 +125,34 @@ App.MainAdminServiceAutoStartController = Em.Controller.extend({
     this.set('isSaveDisabled', !valuesChanged);
   }.observes('valueChanged'),
 
+  syncStatus: function () {
+    // component level switches
+    this.get('tabs').forEach(function (service) {
+      service.get('componentRecovery').forEach(function (component) {
+        component.set('valueChanged', false);
+        component.toggleProperty('syncTrigger');
+      });
+    });
+    // service level switch
+    this.toggleProperty('syncTrigger');
+    this.set('valueChanged', false);
+    this.set('isSaveDisabled', true);
+  },
+
+  revertStatus: function () {
+    // component level switches
+    this.get('tabs').forEach(function (service) {
+      service.get('componentRecovery').forEach(function (component) {
+        component.set('valueChanged', false);
+        component.toggleProperty('revertTrigger');
+      });
+    });
+    // service level switch
+    this.toggleProperty('revertTrigger');
+    this.set('valueChanged', false);
+    this.set('isSaveDisabled', true);
+  },
+
   enableAll: function (event) {
     event.context.get('componentRecovery').forEach(function (component) {
       component.set('recoveryEnabled', true);
@@ -133,10 +165,6 @@ App.MainAdminServiceAutoStartController = Em.Controller.extend({
     });
   },
 
-  doReload: function () {
-    window.location.reload();
-  },
-
   /**
    * If some configs are changed and user navigates away or select another config-group,
show this popup with propose to save changes
    * @param {object} transitionCallback - callback with action to change configs view
@@ -184,7 +212,7 @@ App.MainAdminServiceAutoStartController = Em.Controller.extend({
           });
         });
         if (enabledComponents.length){
-          App.ajax.send({
+          var promise1 = App.ajax.send({
             name: 'components.update',
             sender: this,
             data: {
@@ -196,7 +224,7 @@ App.MainAdminServiceAutoStartController = Em.Controller.extend({
           });
         }
         if (disabledComponents.length){
-          App.ajax.send({
+          var promise2 = App.ajax.send({
             name: 'components.update',
             sender: this,
             data: {
@@ -207,19 +235,21 @@ App.MainAdminServiceAutoStartController = Em.Controller.extend({
             }
           });
         }
-        if (typeof transitionCallback === 'function') {
-          transitionCallback();
-        } else {
-          self.doReload();
-        }
+        $.when(promise1, promise2).done(
+          function () {
+            if (typeof transitionCallback === 'function') {
+              transitionCallback();
+            }
+            self.syncStatus();
+          }
+        );
         this.hide();
       },
       onDiscard: function () {
         if (typeof transitionCallback === 'function') {
           transitionCallback();
-        } else {
-          self.doReload();
         }
+        self.revertStatus();
         this.hide();
       },
       onCancel: function () {

http://git-wip-us.apache.org/repos/asf/ambari/blob/6ce5f4fe/ambari-web/app/templates/main/admin/service_auto_start.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/admin/service_auto_start.hbs b/ambari-web/app/templates/main/admin/service_auto_start.hbs
index 9dc4dfb..e2eb192 100644
--- a/ambari-web/app/templates/main/admin/service_auto_start.hbs
+++ b/ambari-web/app/templates/main/admin/service_auto_start.hbs
@@ -32,7 +32,7 @@
           {{view Ember.Checkbox checkedBinding="view.switcherValue"}}
       </div>
       <div class="pull-right operations-button pull-right">
-          <button class="btn" {{action doReload target="controller"}} {{bindAttr disabled="controller.isSaveDisabled"}}>{{t
common.discard}}</button>
+          <button class="btn" {{action revertStatus target="controller"}} {{bindAttr disabled="controller.isSaveDisabled"}}>{{t
common.discard}}</button>
           <button class="btn btn-success" {{action showSavePopup target="controller"}}
{{bindAttr disabled="controller.isSaveDisabled"}}>{{t common.save}}</button>
       </div>
   </div>

http://git-wip-us.apache.org/repos/asf/ambari/blob/6ce5f4fe/ambari-web/app/views/main/admin/service_auto_start.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/admin/service_auto_start.js b/ambari-web/app/views/main/admin/service_auto_start.js
index dcbbfc9..5b10d1b 100644
--- a/ambari-web/app/views/main/admin/service_auto_start.js
+++ b/ambari-web/app/views/main/admin/service_auto_start.js
@@ -72,7 +72,7 @@ App.MainAdminServiceAutoStartView = Em.View.extend({
   initSwitcher: function () {
     var self = this;
     if (this.$()) {
-      this.$("input:eq(0)").bootstrapSwitch({
+      this.set('switcher', this.$("input:eq(0)").bootstrapSwitch({
         onText: Em.I18n.t('common.enabled'),
         offText: Em.I18n.t('common.disabled'),
         offColor: 'default',
@@ -81,8 +81,23 @@ App.MainAdminServiceAutoStartView = Em.View.extend({
         onSwitchChange: function (event, state) {
           self.updateClusterConfigs(state);
         }
-      });
+      }));
+    }
+  },
+
+  syncComponentRecoveryStatus: function () {
+    this.set('savedRecoveryEnabled', this.get('switcherValue'));
+  }.observes('controller.syncTrigger'),
+
+  revertComponentRecoveryStatus: function () {
+    this.set('switcherValue', this.get('savedRecoveryEnabled'));
+    if (this.get('controller.clusterConfigs')) {
+      this.set('controller.clusterConfigs.recovery_enabled', '' +  this.get('savedRecoveryEnabled'));
+    }
+    var switcher = this.get('switcher');
+    if (switcher) {
+      switcher.bootstrapSwitch('state', this.get('savedRecoveryEnabled'));
     }
-  }
+  }.observes('controller.revertTrigger')
 });
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/6ce5f4fe/ambari-web/app/views/main/admin/service_auto_start/component_auto_start.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/admin/service_auto_start/component_auto_start.js b/ambari-web/app/views/main/admin/service_auto_start/component_auto_start.js
index a25d835..ceafd21 100644
--- a/ambari-web/app/views/main/admin/service_auto_start/component_auto_start.js
+++ b/ambari-web/app/views/main/admin/service_auto_start/component_auto_start.js
@@ -31,6 +31,14 @@ App.MainAdminServiceAutoStartComponentView = Em.View.extend({
     this.initSwitcher();
   },
 
+  syncComponentRecoveryStatus: function () {
+    this.set('savedRecoveryEnabled', this.get('component.recoveryEnabled'))
+  }.observes('component.syncTrigger'),
+
+  revertComponentRecoveryStatus: function () {
+    this.set('component.recoveryEnabled', this.get('savedRecoveryEnabled'));
+  }.observes('component.revertTrigger'),
+
   onValueChange: function () {
     this.get('switcher').bootstrapSwitch('state', this.get('component.recoveryEnabled'));
   }.observes('component.recoveryEnabled'),
@@ -52,6 +60,7 @@ App.MainAdminServiceAutoStartComponentView = Em.View.extend({
         onSwitchChange: function (event, state) {
           self.set('tab.enabledComponents', self.get('tab.enabledComponents') + (state ?
1 : -1));
           self.set('recoveryEnabled', state);
+          self.set('component.recoveryEnabled', state);
           self.set('component.valueChanged', self.get('savedRecoveryEnabled') !== state);
           self.get('parentView.controller').checkValuesChange();
         }


Mime
View raw message