Browse Source

AMBARI-7081 Configs: save/cancel/discard flow not correct. (ababiichuk)

aBabiichuk 10 năm trước cách đây
mục cha
commit
f04ba443c6

+ 18 - 6
ambari-web/app/controllers/main/service/info/configs.js

@@ -108,6 +108,10 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ServerValidatorM
     return (!(this.stepConfigs.everyProperty('errorCount', 0)) || this.get('isApplyingChanges'));
   }.property('stepConfigs.@each.errorCount', 'isApplyingChanges'),
 
+  isPropertiesChanged: function(){
+    return this.stepConfigs.someProperty('isPropertiesChanged', true)
+  }.property('stepConfigs.@each.isPropertiesChanged'),
+
   slaveComponentGroups: null,
 
   /**
@@ -2244,7 +2248,7 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ServerValidatorM
    * @method loadStep
    */
   doCancel: function () {
-    this.loadStep();
+    Em.run.once(this, 'onConfigGroupChange');
   },
 
   /**
@@ -2530,16 +2534,24 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ServerValidatorM
     var self = this;
     return App.ModalPopup.show({
       header: Em.I18n.t('common.warning'),
-      body: Em.I18n.t('services.service.config.exitPopup.body'),
+      bodyClass: Em.View.extend({
+        templateName: require('templates/common/configs/save_configuration'),
+        showSaveWarning: true,
+        notesArea: Em.TextArea.extend({
+          classNames: ['full-width'],
+          placeholder: Em.I18n.t('dashboard.configHistory.info-bar.save.popup.placeholder'),
+          onChangeValue: function() {
+            this.get('parentView.parentView').set('serviceConfigNote', this.get('value'));
+          }.observes('value')
+        })
+      }),
       footerClass: Ember.View.extend({
-        templateName: require('templates/main/service/info/save_popup_footer'),
-        isSaveDisabled: function () {
-          return self.get('isSubmitDisabled');
-        }.property()
+        templateName: require('templates/main/service/info/save_popup_footer')
       }),
       primary: Em.I18n.t('common.save'),
       secondary: Em.I18n.t('common.cancel'),
       onSave: function () {
+        self.set('serviceConfigVersionNote', this.get('serviceConfigNote'));
         self.restartServicePopup();
         this.hide();
       },

+ 5 - 1
ambari-web/app/models/service_config.js

@@ -45,7 +45,11 @@ App.ServiceConfig = Ember.Object.extend({
       slaveErrors += _category.get('slaveErrorCount');
     }, this);
     return masterErrors + slaveErrors + overrideErrors;
-  }.property('configs.@each.isValid', 'configs.@each.isVisible', 'configCategories.@each.slaveErrorCount', 'configs.@each.overrideErrorTrigger')
+  }.property('configs.@each.isValid', 'configs.@each.isVisible', 'configCategories.@each.slaveErrorCount', 'configs.@each.overrideErrorTrigger'),
+
+  isPropertiesChanged: function() {
+    return this.get('configs').someProperty('isNotDefaultValue', true);
+  }.property('configs.@each.isNotDefaultValue')
 });
 
 App.ServiceConfigCategory = Ember.Object.extend({

+ 2 - 2
ambari-web/app/templates/common/configs/config_history_flow.hbs

@@ -76,7 +76,7 @@
               </div>
               <div class="pull-right operations-button">
                   <div {{bindAttr class="view.compareServiceVersion.isCurrent::hidden"}}>
-                      <button class="btn" {{action doCancel target="controller"}} {{bindAttr disabled="view.versionActionsDisabled"}}>{{t common.cancel}}</button>
+                      <button class="btn" {{action doCancel target="controller"}} {{bindAttr disabled="view.isDiscardDisabled"}}>{{t common.discard}}</button>
                       <button class="btn btn-success" {{action save target="view"}} {{bindAttr disabled="view.isSaveDisabled"}}>{{t common.save}}</button>
                   </div>
                   <button class="btn btn-success"  {{action revert target="view"}} {{bindAttr disabled="view.versionActionsDisabled" class="view.compareServiceVersion.isCurrent:hidden"}}>{{view.compareServiceVersion.makeCurrentButtonText}}</button>
@@ -131,7 +131,7 @@
               </div>
               <div class="pull-right operations-button">
                   <div {{bindAttr class="view.displayedServiceVersion.isCurrent::hidden"}}>
-                      <button class="btn" {{action doCancel target="controller"}} {{bindAttr disabled="view.versionActionsDisabled"}}>{{t common.cancel}}</button>
+                      <button class="btn" {{action doCancel target="controller"}} {{bindAttr disabled="view.isDiscardDisabled"}}>{{t common.discard}}</button>
                       <button class="btn btn-success" {{action save target="view"}} {{bindAttr disabled="view.isSaveDisabled"}}>{{t common.save}}</button>
                   </div>
                   <button class="btn btn-success"  {{action revert target="view"}} {{bindAttr disabled="view.versionActionsDisabled" class="view.displayedServiceVersion.isCurrent:hidden"}}>{{view.displayedServiceVersion.makeCurrentButtonText}}</button>

+ 5 - 1
ambari-web/app/templates/common/configs/save_configuration.hbs

@@ -15,7 +15,11 @@
 * See the License for the specific language governing permissions and
 * limitations under the License.
 }}
-
+{{#if view.showSaveWarning}}
+    <div class="row-fluid">
+        <div class="span12 alert alert-warning">{{t services.service.config.exitPopup.body}}</div>
+    </div>
+{{/if}}
 <div class="row-fluid">
     <div class="span1">{{t common.notes}}</div>
     <div class="span10">{{view view.notesArea}}</div>

+ 9 - 2
ambari-web/app/views/common/configs/config_history_flow.js

@@ -40,8 +40,8 @@ App.ConfigHistoryFlowView = Em.View.extend({
   }.property('compareServiceVersion'),
 
   isSaveDisabled: function () {
-    return (this.get('controller.isSubmitDisabled') || !this.get('controller.versionLoaded'));
-  }.property('controller.isSubmitDisabled', 'controller.versionLoaded'),
+    return (this.get('controller.isSubmitDisabled') || !this.get('controller.versionLoaded') || !this.get('controller.isPropertiesChanged')) ;
+  }.property('controller.isSubmitDisabled', 'controller.versionLoaded', 'controller.isPropertiesChanged'),
 
   serviceName: function () {
     return this.get('controller.selectedService.serviceName');
@@ -103,6 +103,12 @@ App.ConfigHistoryFlowView = Em.View.extend({
     return !this.get('controller.versionLoaded');
   }.property('controller.versionLoaded'),
 
+  /**
+   * enable discard to manipulate version only after it's loaded and any property is changed
+   */
+  isDiscardDisabled: function () {
+    return !this.get('controller.versionLoaded') || !this.get('controller.isPropertiesChanged');
+  }.property('controller.versionLoaded','controller.isPropertiesChanged'),
   /**
    * list of service versions
    * by default 6 is number of items in short list
@@ -405,6 +411,7 @@ App.ConfigHistoryFlowView = Em.View.extend({
       },
       onDiscard: function () {
         this.hide();
+        self.get('controller').loadStep();
       },
       onCancel: function () {
         this.hide();