You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by ab...@apache.org on 2015/04/29 14:10:23 UTC

[4/4] ambari git commit: AMBARI-10827 JS error with toggling widget view. (ababiichuk)

AMBARI-10827 JS error with toggling widget view. (ababiichuk)


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

Branch: refs/heads/trunk
Commit: 2514cda00537319837be819a38f748a0f194f2a7
Parents: 11a09c5
Author: aBabiichuk <ab...@cybervisiontech.com>
Authored: Wed Apr 29 14:59:11 2015 +0300
Committer: aBabiichuk <ab...@cybervisiontech.com>
Committed: Wed Apr 29 14:59:11 2015 +0300

----------------------------------------------------------------------
 ambari-web/app/styles/application.less          |  1 +
 .../configs/widgets/combo_config_widget_view.js |  2 +-
 .../configs/widgets/config_widget_view.js       |  2 +-
 .../configs/widgets/list_config_widget_view.js  |  2 +-
 .../widgets/slider_config_widget_view.js        | 30 ++++++-----
 .../widgets/time_interval_spinner_view.js       | 28 +++++-----
 .../widgets/combo_config_widget_view_test.js    | 25 +++++++++
 .../configs/widgets/config_widget_view_test.js  | 12 +++++
 .../widgets/slider_config_widget_view_test.js   | 55 +++++++++++++++++++-
 .../widgets/time_interval_spinner_view_test.js  | 47 +++++++++++++++++
 10 files changed, 176 insertions(+), 28 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/2514cda0/ambari-web/app/styles/application.less
----------------------------------------------------------------------
diff --git a/ambari-web/app/styles/application.less b/ambari-web/app/styles/application.less
index 271771d..8cd22c4 100644
--- a/ambari-web/app/styles/application.less
+++ b/ambari-web/app/styles/application.less
@@ -5630,6 +5630,7 @@ input[type="radio"].align-checkbox, input[type="checkbox"].align-checkbox {
       table-layout: fixed; // for width to be equally distributed
       margin: 0 -20px;
       .config-section {
+        overflow: hidden;
         height: 100%;
         padding: 18px;
         border: 1px solid #aaa;

http://git-wip-us.apache.org/repos/asf/ambari/blob/2514cda0/ambari-web/app/views/common/configs/widgets/combo_config_widget_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/common/configs/widgets/combo_config_widget_view.js b/ambari-web/app/views/common/configs/widgets/combo_config_widget_view.js
index b3655e1..3686224 100644
--- a/ambari-web/app/views/common/configs/widgets/combo_config_widget_view.js
+++ b/ambari-web/app/views/common/configs/widgets/combo_config_widget_view.js
@@ -131,7 +131,7 @@ App.ComboConfigWidgetView = App.ConfigWidgetView.extend({
   },
 
   isValueCompatibleWithWidget: function() {
-    return this.get('content.valuesList').someProperty('configValue', this.get('config.value'));
+    return this._super() && this.get('content.valuesList').someProperty('configValue', this.get('config.value'));
   }
 
 });

http://git-wip-us.apache.org/repos/asf/ambari/blob/2514cda0/ambari-web/app/views/common/configs/widgets/config_widget_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/common/configs/widgets/config_widget_view.js b/ambari-web/app/views/common/configs/widgets/config_widget_view.js
index 37d2c9c..6b7dda4 100644
--- a/ambari-web/app/views/common/configs/widgets/config_widget_view.js
+++ b/ambari-web/app/views/common/configs/widgets/config_widget_view.js
@@ -282,7 +282,7 @@ App.ConfigWidgetView = Em.View.extend(App.SupportsDependentConfigs, App.WidgetPo
    * @returns {boolean}
    */
   isValueCompatibleWithWidget: function() {
-    return true
+    return this.get('config.isValid');
   }
 
 });

http://git-wip-us.apache.org/repos/asf/ambari/blob/2514cda0/ambari-web/app/views/common/configs/widgets/list_config_widget_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/common/configs/widgets/list_config_widget_view.js b/ambari-web/app/views/common/configs/widgets/list_config_widget_view.js
index 3a5112c..aa154cf 100644
--- a/ambari-web/app/views/common/configs/widgets/list_config_widget_view.js
+++ b/ambari-web/app/views/common/configs/widgets/list_config_widget_view.js
@@ -261,7 +261,7 @@ App.ListConfigWidgetView = App.ConfigWidgetView.extend({
   },
 
   isValueCompatibleWithWidget: function() {
-    return this.get('options').someProperty('value', this.get('config.value'));
+    return this._super() && this.get('options').someProperty('value', this.get('config.value'));
   }
 
 });

http://git-wip-us.apache.org/repos/asf/ambari/blob/2514cda0/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 394ad6a..5634319 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
@@ -446,19 +446,25 @@ App.SliderConfigWidgetView = App.ConfigWidgetView.extend({
   }.observes('parentView.content.isActive', 'parentView.parentView.tab.isActive'),
 
   isValueCompatibleWithWidget: function() {
-    var configValue = this.get('parseFunction')(this.get('config.value'));
-    if (this.get('config.stackConfigProperty.valueAttributes.minimum')) {
-      var min = this.get('parseFunction')(this.get('config.stackConfigProperty.valueAttributes.minimum'));
-      if (configValue < min) return false;
-    }
-    if (this.get('config.stackConfigProperty.valueAttributes.maximum')) {
-      var max = this.get('parseFunction')(this.get('config.stackConfigProperty.valueAttributes.maximum'));
-      if (configValue > max) return false;
-    }
-    if (this.get('config.stackConfigProperty.valueAttributes.step')) {
-      if (configValue % this.get('config.stackConfigProperty.valueAttributes.increment_step') != 0) return false;
+    if (this._super()) {
+      if (!this.get('validateFunction')(this.get('config.value'))) {
+        return false;
+      }
+      var configValue = this.get('parseFunction')(this.get('config.value'));
+      if (this.get('config.stackConfigProperty.valueAttributes.minimum')) {
+        var min = this.get('parseFunction')(this.get('config.stackConfigProperty.valueAttributes.minimum'));
+        if (configValue < min) return false;
+      }
+      if (this.get('config.stackConfigProperty.valueAttributes.maximum')) {
+        var max = this.get('parseFunction')(this.get('config.stackConfigProperty.valueAttributes.maximum'));
+        if (configValue > max) return false;
+      }
+      if (this.get('config.stackConfigProperty.valueAttributes.increment_step')) {
+        if (configValue % this.get('parseFunction')(this.get('config.stackConfigProperty.valueAttributes.increment_step')) != 0) return false;
+      }
+      return true;
     }
-    return true
+    return false;
   }
 
 });

http://git-wip-us.apache.org/repos/asf/ambari/blob/2514cda0/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 40a88dc..fb5879d 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
@@ -237,18 +237,22 @@ App.TimeIntervalSpinnerView = App.ConfigWidgetView.extend({
   },
 
   isValueCompatibleWithWidget: function() {
-    var configValue = parseInt(this.get('config.value'));
-    if (this.get('config.stackConfigProperty.valueAttributes.minimum')) {
-      var min = parseInt(this.get('config.stackConfigProperty.valueAttributes.minimum'));
-      if (configValue < min) return false;
-    }
-    if (this.get('config.stackConfigProperty.valueAttributes.maximum')) {
-      var max = parseInt(this.get('config.stackConfigProperty.valueAttributes.maximum'));
-      if (configValue > max) return false;
-    }
-    if (this.get('config.stackConfigProperty.valueAttributes.step')) {
-      if (configValue % this.get('config.stackConfigProperty.valueAttributes.increment_step') != 0) return false;
+    if (this._super()) {
+      var configValue = parseInt(this.get('config.value'));
+      if (isNaN(configValue)) return false;
+      if (this.get('config.stackConfigProperty.valueAttributes.minimum')) {
+        var min = parseInt(this.get('config.stackConfigProperty.valueAttributes.minimum'));
+        if (configValue < min) return false;
+      }
+      if (this.get('config.stackConfigProperty.valueAttributes.maximum')) {
+        var max = parseInt(this.get('config.stackConfigProperty.valueAttributes.maximum'));
+        if (configValue > max) return false;
+      }
+      if (this.get('config.stackConfigProperty.valueAttributes.increment_step')) {
+        if (configValue % this.get('config.stackConfigProperty.valueAttributes.increment_step') != 0) return false;
+      }
+      return true;
     }
-    return true
+    return false;
   }
 });

http://git-wip-us.apache.org/repos/asf/ambari/blob/2514cda0/ambari-web/test/views/common/configs/widgets/combo_config_widget_view_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/views/common/configs/widgets/combo_config_widget_view_test.js b/ambari-web/test/views/common/configs/widgets/combo_config_widget_view_test.js
index 7e8a768..4f66c57 100644
--- a/ambari-web/test/views/common/configs/widgets/combo_config_widget_view_test.js
+++ b/ambari-web/test/views/common/configs/widgets/combo_config_widget_view_test.js
@@ -148,4 +148,29 @@ describe('App.ComboConfigWidgetView', function() {
       });
     });
   });
+
+  describe('#isValueCompatibleWithWidget()', function() {
+    beforeEach(function() {
+      this.view.set('content', {});
+      this.view.set('config', {});
+    });
+    it('pass validation', function() {
+      this.view.set('config.isValid', true);
+      this.view.set('config.value', 'v1');
+      this.view.set('content.valuesList', [{configValue: 'v1'}, {configValue: 'v2'}]);
+      expect(this.view.isValueCompatibleWithWidget()).to.be.true;
+    });
+
+    it('fail validation by isValid', function() {
+      this.view.set('config.isValid', false);
+      expect(this.view.isValueCompatibleWithWidget()).to.be.false;
+    });
+
+    it('fail validation value that missing from list', function() {
+      this.view.set('config.isValid', true);
+      this.view.set('config.value', 'v3');
+      this.view.set('content.valuesList', [{configValue: 'v1'}, {configValue: 'v2'}]);
+      expect(this.view.isValueCompatibleWithWidget()).to.be.false;
+    });
+  });
 });

http://git-wip-us.apache.org/repos/asf/ambari/blob/2514cda0/ambari-web/test/views/common/configs/widgets/config_widget_view_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/views/common/configs/widgets/config_widget_view_test.js b/ambari-web/test/views/common/configs/widgets/config_widget_view_test.js
index 2165fac..ea4f72f 100644
--- a/ambari-web/test/views/common/configs/widgets/config_widget_view_test.js
+++ b/ambari-web/test/views/common/configs/widgets/config_widget_view_test.js
@@ -218,4 +218,16 @@ describe('App.ConfigWidgetView', function () {
     });
 
   });
+
+  describe('#isValueCompatibleWithWidget()', function() {
+    it('pass validation', function() {
+      view.set('config.isValid', true);
+      expect(view.isValueCompatibleWithWidget()).to.be.true;
+    });
+
+    it('fail validation', function() {
+      view.set('config.isValid', false);
+      expect(view.isValueCompatibleWithWidget()).to.be.false;
+    });
+  });
 });

http://git-wip-us.apache.org/repos/asf/ambari/blob/2514cda0/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 40874bc..d96743a 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
@@ -17,7 +17,7 @@
  */
 
 var App = require('app');
-
+var validator = require('utils/validator');
 var viewInt, viewFloat, viewPercent;
 
 describe('App.SliderConfigWidgetView', function () {
@@ -370,4 +370,57 @@ describe('App.SliderConfigWidgetView', function () {
     });
   });
 
+  describe('#isValueCompatibleWithWidget', function() {
+    var stackConfigProperty = null;
+
+    beforeEach(function() {
+      viewInt.set('config', {});
+      stackConfigProperty = App.StackConfigProperty.createRecord({name: 'p1', valueAttributes: {minimum: 1, maximum: 10, increment_step: 4, type: 'int'}});
+      viewInt.set('config.stackConfigProperty', stackConfigProperty);
+      viewInt.set('config.isValid', true);
+    });
+
+    it ('fail by config validation', function() {
+      viewInt.set('config.isValid', false);
+      expect(viewInt.isValueCompatibleWithWidget()).to.be.false;
+    });
+
+    it ('fail by view validation', function() {
+      viewInt.set('config.value', 'a');
+      expect(viewInt.isValueCompatibleWithWidget()).to.be.false;
+    });
+
+    it ('fail by view validation int', function() {
+      viewInt.set('config.value', '2.2');
+      expect(viewInt.isValueCompatibleWithWidget()).to.be.false;
+    });
+
+    it ('fail by view validation float', function() {
+      viewFloat.set('config.value', '2.2.2');
+      viewFloat.set('validateFunction', validator.isValidFloat);
+      expect(viewFloat.isValueCompatibleWithWidget()).to.be.false;
+    });
+
+    it ('fail: to large', function() {
+      viewInt.set('config.value', 12);
+      expect(viewInt.isValueCompatibleWithWidget()).to.be.false;
+    });
+
+    it ('fail: to small', function() {
+      viewInt.set('config.value', 0);
+      expect(viewInt.isValueCompatibleWithWidget()).to.be.false;
+    });
+
+    it ('fail: wrong step', function() {
+      viewInt.set('config.stackConfigProperty', stackConfigProperty);
+      viewInt.set('config.value', '3');
+      expect(viewInt.isValueCompatibleWithWidget()).to.be.false;
+    });
+
+    it ('ok', function() {
+      viewInt.set('config.value', 4);
+      expect(viewInt.isValueCompatibleWithWidget()).to.be.true;
+    });
+  });
+
 });

http://git-wip-us.apache.org/repos/asf/ambari/blob/2514cda0/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 dc3c6dd..fd80f3f 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
@@ -244,4 +244,51 @@ describe('App.TimeIntervalSpinnerView', function () {
 
   });
 
+  describe('#isValueCompatibleWithWidget', function() {
+    var stackConfigProperty = null;
+
+    beforeEach(function() {
+      view.set('config', {});
+      stackConfigProperty = App.StackConfigProperty.createRecord({name: 'p1', valueAttributes: {minimum: 1, maximum: 10, increment_step: 4, type: 'int'}});
+      view.set('config.stackConfigProperty', stackConfigProperty);
+      view.set('config.isValid', true);
+    });
+
+    it ('fail by config validation', function() {
+      view.set('config.isValid', false);
+      expect(view.isValueCompatibleWithWidget()).to.be.false;
+    });
+
+    it ('fail by view validation', function() {
+      view.set('config.value', 'a');
+      expect(view.isValueCompatibleWithWidget()).to.be.false;
+    });
+
+    it ('fail by view validation int', function() {
+      view.set('config.value', '2.2');
+      expect(view.isValueCompatibleWithWidget()).to.be.false;
+    });
+
+    it ('fail: to large', function() {
+      view.set('config.value', 12);
+      expect(view.isValueCompatibleWithWidget()).to.be.false;
+    });
+
+    it ('fail: to small', function() {
+      view.set('config.value', 0);
+      expect(view.isValueCompatibleWithWidget()).to.be.false;
+    });
+
+    it ('fail: wrong step', function() {
+      view.set('config.stackConfigProperty', stackConfigProperty);
+      view.set('config.value', '3');
+      expect(view.isValueCompatibleWithWidget()).to.be.false;
+    });
+
+    it ('ok', function() {
+      view.set('config.value', 4);
+      expect(view.isValueCompatibleWithWidget()).to.be.true;
+    });
+  });
+
 });
\ No newline at end of file