You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by on...@apache.org on 2015/04/24 13:16:30 UTC

ambari git commit: AMBARI-10724. Filter "Show property warnings" doesn't affect Enhanced Configs (onechiporenko)

Repository: ambari
Updated Branches:
  refs/heads/trunk 3e30ca267 -> 27266f57d


AMBARI-10724. Filter "Show property warnings" doesn't affect Enhanced Configs (onechiporenko)


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

Branch: refs/heads/trunk
Commit: 27266f57d6462730e49b7725d860558bba2d38a0
Parents: 3e30ca2
Author: Oleg Nechiporenko <on...@apache.org>
Authored: Fri Apr 24 14:14:49 2015 +0300
Committer: Oleg Nechiporenko <on...@apache.org>
Committed: Fri Apr 24 14:14:49 2015 +0300

----------------------------------------------------------------------
 .../widgets/slider_config_widget_view.js        | 41 ++++++++----
 .../widgets/time_interval_spinner_view.js       |  8 ++-
 .../widgets/slider_config_widget_view_test.js   |  6 ++
 .../widgets/time_interval_spinner_view_test.js  | 68 +++++++++++++++++++-
 4 files changed, 108 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/27266f57/ambari-web/app/views/common/configs/widgets/slider_config_widget_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/common/configs/widgets/slider_config_widget_view.js b/ambari-web/app/views/common/configs/widgets/slider_config_widget_view.js
index 408f199..016e7a6 100644
--- a/ambari-web/app/views/common/configs/widgets/slider_config_widget_view.js
+++ b/ambari-web/app/views/common/configs/widgets/slider_config_widget_view.js
@@ -55,6 +55,12 @@ App.SliderConfigWidgetView = App.ConfigWidgetView.extend({
   unitLabel: '',
 
   /**
+   * List of widget's properties which <code>changeBoundaries</code>-method should observe
+   * @type {string[]}
+   */
+  changeBoundariesProperties: ['maxMirrorValue', 'widgetRecommendedValue','minMirrorValue', 'mirrorStep'],
+
+  /**
    * max allowed value transformed form config unit to widget unit
    * @type {Number}
    */
@@ -169,17 +175,17 @@ App.SliderConfigWidgetView = App.ConfigWidgetView.extend({
     this.initSlider();
     this.toggleWidgetState();
     this.initPopover();
-    this.addObserver('maxMirrorValue', this, this.changeBoundaries);
-    this.addObserver('widgetRecommendedValue', this, this.changeBoundaries);
-    this.addObserver('minMirrorValue', this, this.changeBoundaries);
-    this.addObserver('mirrorStep', this, this.changeBoundaries);
+    var self = this;
+    this.get('changeBoundariesProperties').forEach(function(property) {
+      self.addObserver(property, self, self.changeBoundaries);
+    });
   },
 
   willDestroyElement: function() {
-    this.removeObserver('maxMirrorValue', this, this.changeBoundaries);
-    this.removeObserver('widgetRecommendedValue', this, this.changeBoundaries);
-    this.removeObserver('minMirrorValue', this, this.changeBoundaries);
-    this.removeObserver('mirrorStep', this, this.changeBoundaries);
+    var self = this;
+    this.get('changeBoundariesProperties').forEach(function(property) {
+      self.removeObserver(property, self, self.changeBoundaries);
+    });
   },
 
   /**
@@ -198,15 +204,24 @@ App.SliderConfigWidgetView = App.ConfigWidgetView.extend({
       var parsed = parseFunction(mirrorValue);
       if (parsed > max) {
         this.set('isMirrorValueValid', false);
-        this.set('config.warnMessage', Em.I18n.t('config.warnMessage.outOfBoundaries.greater').format(max));
+        this.get('config').setProperties({
+          warnMessage: Em.I18n.t('config.warnMessage.outOfBoundaries.greater').format(max),
+          warn: true
+        });
       } else if (parsed < min) {
         this.set('isMirrorValueValid', false);
-        this.set('config.warnMessage', Em.I18n.t('config.warnMessage.outOfBoundaries.less').format(min));
+        this.get('config').setProperties({
+          warnMessage: Em.I18n.t('config.warnMessage.outOfBoundaries.less').format(min),
+          warn: true
+        });
       } else {
         this.set('isMirrorValueValid', true);
-        this.set('config.warnMessage', '');
-        this.set('config.errorMessage', '');
-        this.set('config.value', '' + this.configValueByWidget(parsed));
+        this.get('config').setProperties({
+          warnMessage: '',
+          errorMessage: '',
+          value: '' + this.configValueByWidget(parsed),
+          warn: false
+        });
         if (slider) {
           slider.setValue(parsed);
         }

http://git-wip-us.apache.org/repos/asf/ambari/blob/27266f57/ambari-web/app/views/common/configs/widgets/time_interval_spinner_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/common/configs/widgets/time_interval_spinner_view.js b/ambari-web/app/views/common/configs/widgets/time_interval_spinner_view.js
index d4340a7..fac0149 100644
--- a/ambari-web/app/views/common/configs/widgets/time_interval_spinner_view.js
+++ b/ambari-web/app/views/common/configs/widgets/time_interval_spinner_view.js
@@ -175,17 +175,23 @@ App.TimeIntervalSpinnerView = App.ConfigWidgetView.extend({
   checkErrors: function() {
     var convertedValue = this.configValueByWidget(this.get('content'));
     var warnMessage = '';
+    var warn = false;
     if (convertedValue < parseInt(this.get('config.stackConfigProperty.valueAttributes.minimum'))) {
       warnMessage = Em.I18n.t('config.warnMessage.outOfBoundaries.less').format(this.dateToText(this.get('minValue')));
+      warn = true;
     }
     else if (convertedValue > parseInt(this.get('config.stackConfigProperty.valueAttributes.maximum'))) {
       warnMessage = Em.I18n.t('config.warnMessage.outOfBoundaries.greater').format(this.dateToText(this.get('maxValue')));
+      warn = true;
     }
     this.setProperties({
       isValid: !warnMessage,
       warnMessage: warnMessage
     });
-    this.set('config.warnMessage', warnMessage);
+    this.get('config').setProperties({
+      warnMessage: warnMessage,
+      warn: warn
+    });
   },
 
   /**

http://git-wip-us.apache.org/repos/asf/ambari/blob/27266f57/ambari-web/test/views/common/configs/widgets/slider_config_widget_view_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/views/common/configs/widgets/slider_config_widget_view_test.js b/ambari-web/test/views/common/configs/widgets/slider_config_widget_view_test.js
index a1096d6..40874bc 100644
--- a/ambari-web/test/views/common/configs/widgets/slider_config_widget_view_test.js
+++ b/ambari-web/test/views/common/configs/widgets/slider_config_widget_view_test.js
@@ -141,12 +141,14 @@ describe('App.SliderConfigWidgetView', function () {
       expect(viewInt.get('config.value')).to.equal('1000');
       expect(viewInt.get('config.errorMessage')).to.equal('');
       expect(viewInt.get('config.warnMessage')).to.equal('');
+      expect(viewInt.get('config.warn')).to.be.false;
 
       viewInt.set('mirrorValue', 100500);
       expect(viewInt.get('isMirrorValueValid')).to.be.false;
       expect(viewInt.get('config.value')).to.equal('1000');
       expect(viewInt.get('config.errorMessage')).to.equal('');
       expect(viewInt.get('config.warnMessage')).to.have.property('length').that.is.least(1);
+      expect(viewInt.get('config.warn')).to.be.true;
     });
 
     it('check float', function () {
@@ -155,12 +157,14 @@ describe('App.SliderConfigWidgetView', function () {
       expect(viewFloat.get('config.value')).to.equal('55.5');
       expect(viewFloat.get('config.errorMessage')).to.equal('');
       expect(viewFloat.get('config.warnMessage')).to.equal('');
+      expect(viewFloat.get('config.warn')).to.be.false;
 
       viewFloat.set('mirrorValue', 100500.5);
       expect(viewFloat.get('isMirrorValueValid')).to.be.false;
       expect(viewFloat.get('config.value')).to.equal('55.5');
       expect(viewFloat.get('config.errorMessage')).to.equal('');
       expect(viewFloat.get('config.warnMessage')).to.have.property('length').that.is.least(1);
+      expect(viewFloat.get('config.warn')).to.be.true;
     });
 
     it('check percent', function () {
@@ -169,12 +173,14 @@ describe('App.SliderConfigWidgetView', function () {
       expect(viewPercent.get('config.value')).to.equal('0.32');
       expect(viewPercent.get('config.errorMessage')).to.equal('');
       expect(viewPercent.get('config.warnMessage')).to.equal('');
+      expect(viewPercent.get('config.warn')).to.be.false;
 
       viewPercent.set('mirrorValue', 100500.5);
       expect(viewPercent.get('isMirrorValueValid')).to.be.false;
       expect(viewPercent.get('config.value')).to.equal('0.32');
       expect(viewPercent.get('config.errorMessage')).to.equal('');
       expect(viewPercent.get('config.warnMessage')).to.have.property('length').that.is.least(1);
+      expect(viewPercent.get('config.warn')).to.be.true;
     });
   });
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/27266f57/ambari-web/test/views/common/configs/widgets/time_interval_spinner_view_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/views/common/configs/widgets/time_interval_spinner_view_test.js b/ambari-web/test/views/common/configs/widgets/time_interval_spinner_view_test.js
index c3c9522..dc3c6dd 100644
--- a/ambari-web/test/views/common/configs/widgets/time_interval_spinner_view_test.js
+++ b/ambari-web/test/views/common/configs/widgets/time_interval_spinner_view_test.js
@@ -27,7 +27,7 @@ describe('App.TimeIntervalSpinnerView', function () {
         removeCurrentFromDependentList: Em.K
       }),
       initPopover: Em.K,
-      checkErrors: Em.K
+      setProperties: Em.K
     });
   });
 
@@ -178,4 +178,70 @@ describe('App.TimeIntervalSpinnerView', function () {
 
   });
 
+  describe('#checkErrors', function () {
+
+    Em.A([
+        {
+          config: Em.Object.create({
+            value: "540",
+            stackConfigProperty: Em.Object.create({
+              widget: {
+                units: [
+                  { unit: "hours,minutes" }
+                ]
+              },
+              valueAttributes: {type: "int", maximum: "86400", minimum: "600", unit: "seconds"}
+            })
+          }),
+          e: {
+            warnMessage: Em.I18n.t('config.warnMessage.outOfBoundaries.less').format("10 Minutes"),
+            warn: true
+          }
+        },
+        {
+          config: Em.Object.create({
+            value: "86460",
+            stackConfigProperty: Em.Object.create({
+              widget: {
+                units: [
+                  { unit: "hours,minutes" }
+                ]
+              },
+              valueAttributes: {type: "int", maximum: "86400", minimum: "600", unit: "seconds"}
+            })
+          }),
+          e: {
+            warnMessage: Em.I18n.t('config.warnMessage.outOfBoundaries.greater').format("24 Hours"),
+            warn: true
+          }
+        },
+        {
+          config: Em.Object.create({
+            value: "12000",
+            stackConfigProperty: Em.Object.create({
+              widget: {
+                units: [
+                  { unit: "hours,minutes" }
+                ]
+              },
+              valueAttributes: {type: "int", maximum: "86400", minimum: "600", unit: "seconds"}
+            })
+          }),
+          e: {
+            warnMessage:'',
+            warn: false
+          }
+        }
+      ]).forEach(function (test) {
+        it('', function () {
+          view.set('config', test.config);
+          view.prepareContent();
+          view.checkErrors();
+          expect(view.get('config.warnMessage')).to.equal(test.e.warnMessage);
+          expect(view.get('config.warn')).to.equal(test.e.warn);
+        });
+      });
+
+  });
+
 });
\ No newline at end of file