Repository: ambari Updated Branches: refs/heads/trunk 9d9958005 -> 101be8eb3
AMBARI-11280 Unable to save configs after custom value in Combo widget. (ababiichuk) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/3703a8aa Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/3703a8aa Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/3703a8aa Branch: refs/heads/trunk Commit: 3703a8aa40ef7265a662396da273ccf8287a2990 Parents: 9d99580 Author: aBabiichuk <[email protected]> Authored: Thu May 21 13:09:56 2015 +0300 Committer: aBabiichuk <[email protected]> Committed: Thu May 21 13:09:56 2015 +0300 ---------------------------------------------------------------------- .../configs/widgets/combo_config_widget_view.js | 12 +++++++----- .../configs/widgets/time_interval_spinner_view.js | 10 +++++----- .../configs/widgets/combo_config_widget_view_test.js | 4 ++++ .../widgets/time_interval_spinner_view_test.js | 15 +++++++++------ 4 files changed, 25 insertions(+), 16 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/3703a8aa/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 2cb4488..9ca3828 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 @@ -25,7 +25,6 @@ var App = require('app'); App.ComboConfigWidgetView = App.ConfigWidgetView.extend({ templateName: require('templates/common/configs/widgets/combo_config_widget'), classNames: ['widget-config', 'combo-widget'], - supportSwitchToCheckBox: true, /** * Object with following structure: @@ -40,10 +39,10 @@ App.ComboConfigWidgetView = App.ConfigWidgetView.extend({ content: null, didInsertElement: function() { - this.generateContent(); + this.initWidget(); + this._super(); this.toggleWidgetState(); this.initPopover(); - this._super(); }, /** @@ -51,7 +50,7 @@ App.ComboConfigWidgetView = App.ConfigWidgetView.extend({ * * @method generateContent */ - generateContent: function() { + initWidget: function() { this.set('content', Em.Object.create({})); this.set('content.valuesList', this.convertToWidgetUnits(this.get('config.stackConfigProperty.valueAttributes'))); this.set('content.value', this.generateWidgetValue(this.get('config.value'))); @@ -81,7 +80,10 @@ App.ComboConfigWidgetView = App.ConfigWidgetView.extend({ * @returns {String} */ generateWidgetValue: function(value) { - return this.get('content.valuesList').findProperty('configValue', value).get('widgetValue'); + if (this.isValueCompatibleWithWidget()) { + return this.get('content.valuesList').findProperty('configValue', value).get('widgetValue'); + } + return null; }, /** http://git-wip-us.apache.org/repos/asf/ambari/blob/3703a8aa/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 231bacf..bc113f9 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 @@ -82,8 +82,8 @@ App.TimeIntervalSpinnerView = App.ConfigWidgetView.extend({ }, didInsertElement: function () { - Em.run.once(this, 'prepareContent'); this._super(); + Em.run.once(this, 'prepareContent'); this.toggleWidgetState(); this.initPopover(); }, @@ -104,7 +104,7 @@ App.TimeIntervalSpinnerView = App.ConfigWidgetView.extend({ this.set('propertyUnit', property.get('stackConfigProperty.valueAttributes.unit')); this.set('minValue', this.generateWidgetValue(property.get('stackConfigProperty.valueAttributes.minimum'))); this.set('maxValue', this.generateWidgetValue(property.get('stackConfigProperty.valueAttributes.maximum'))); - this.set('content', this.generateWidgetValue(property.get('value'))); + this.setValue(!isNaN(parseInt(property.get('value'))) ? property.get('value') : 0); this.parseIncrement(); }, @@ -151,7 +151,7 @@ App.TimeIntervalSpinnerView = App.ConfigWidgetView.extend({ * @method valueObserver */ valueObserver: function() { - if (!this.get('content')) return; + if (!this.get('content') || isNaN(parseInt(this.get('config.value')))) return; Em.run.once(this, 'valueObserverCallback'); }.observes('[email protected]'), @@ -232,8 +232,8 @@ App.TimeIntervalSpinnerView = App.ConfigWidgetView.extend({ this.parseIncrement(); }, - setValue: function() { - this.set('content', this.generateWidgetValue(this.get('config.value'))); + setValue: function(value) { + this.set('content', this.generateWidgetValue(value)); }, isValueCompatibleWithWidget: function() { http://git-wip-us.apache.org/repos/asf/ambari/blob/3703a8aa/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 4f66c57..9f3c254 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 @@ -103,6 +103,10 @@ describe('App.ComboConfigWidgetView', function() { it('should convert config value: `{0}` to widget value: `{1}`'.format(test.value, test.e), function() { this.view.set('content', {}); this.view.set('content.valuesList', Em.A(test.valuesList)); + this.view.set('config', { + isValid: true, + value: test.value + }); expect(this.view.generateWidgetValue(test.value)).to.be.equal(test.e); }); }); http://git-wip-us.apache.org/repos/asf/ambari/blob/3703a8aa/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 fd80f3f..682a717 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 @@ -129,9 +129,10 @@ describe('App.TimeIntervalSpinnerView', function () { describe('#parseIncrement', function () { - var createProperty = function (widgetUnits, configPropertyUnits, incrementStep, value) { + var createProperty = function (widgetUnits, configPropertyUnits, incrementStep, value, min, max) { return Em.Object.create({ value: value, + isValid: true, stackConfigProperty: Em.Object.create({ widget: { units: [ @@ -140,8 +141,8 @@ describe('App.TimeIntervalSpinnerView', function () { }, valueAttributes: { unit: configPropertyUnits, - minimum: 1, - maximum: 2, + minimum: min, + maximum: max, increment_step: incrementStep } }) @@ -151,7 +152,7 @@ describe('App.TimeIntervalSpinnerView', function () { Em.A([ { input: "120000", - config: createProperty("minutes,seconds", "milliseconds", 10000, "120000"), + config: createProperty("minutes,seconds", "milliseconds", 10000, "120000", 0, 240000), e: [ { label: 'Minutes', value: 2, incrementStep: 1, enabled: true}, { label: 'Seconds', value: 0, incrementStep: 10, enabled: true} @@ -159,7 +160,7 @@ describe('App.TimeIntervalSpinnerView', function () { }, { input: "120000", - config: createProperty("minutes,seconds", "milliseconds", 60000, "120000"), + config: createProperty("minutes,seconds", "milliseconds", 60000, "120000", "0", "240000"), e: [ { label: 'Minutes', value: 2, incrementStep: 1, enabled: true}, { label: 'Seconds', value: 0, incrementStep: 60, enabled: false} @@ -184,6 +185,7 @@ describe('App.TimeIntervalSpinnerView', function () { { config: Em.Object.create({ value: "540", + isValid: true, stackConfigProperty: Em.Object.create({ widget: { units: [ @@ -201,6 +203,7 @@ describe('App.TimeIntervalSpinnerView', function () { { config: Em.Object.create({ value: "86460", + isValid: true, stackConfigProperty: Em.Object.create({ widget: { units: [ @@ -291,4 +294,4 @@ describe('App.TimeIntervalSpinnerView', function () { }); }); -}); \ No newline at end of file +});
