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