Repository: ambari Updated Branches: refs/heads/branch-2.1 cba114fe2 -> c85909e25
AMBARI-12168. Configs: Historical configs show "default" values that don't make sense (onechiporenko) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/c85909e2 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/c85909e2 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/c85909e2 Branch: refs/heads/branch-2.1 Commit: c85909e250dee87d3cad6cf775506d1082efd29a Parents: cba114f Author: Oleg Nechiporenko <onechipore...@apache.org> Authored: Fri Jun 26 16:50:45 2015 +0300 Committer: Oleg Nechiporenko <onechipore...@apache.org> Committed: Fri Jun 26 16:53:44 2015 +0300 ---------------------------------------------------------------------- .../mixins/common/configs/configs_comparator.js | 4 +- .../widgets/slider_config_widget_view.js | 59 ++++++++++---------- .../widgets/slider_config_widget_view_test.js | 22 ++++++++ 3 files changed, 56 insertions(+), 29 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/c85909e2/ambari-web/app/mixins/common/configs/configs_comparator.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/mixins/common/configs/configs_comparator.js b/ambari-web/app/mixins/common/configs/configs_comparator.js index f056347..2f15ea0 100644 --- a/ambari-web/app/mixins/common/configs/configs_comparator.js +++ b/ambari-web/app/mixins/common/configs/configs_comparator.js @@ -226,7 +226,8 @@ App.ConfigsComparator = Em.Mixin.create({ compareObject.setProperties({ isFinal: !!compareConfig.isFinal, value: App.config.formatOverrideValue(serviceConfig, compareConfig.value), - compareConfigs: null + compareConfigs: null, + isOriginalSCP: false }); } return compareObject; @@ -292,6 +293,7 @@ App.ConfigsComparator = Em.Mixin.create({ isSecureConfig: false, isUserProperty: true, isVisible: true, + isOriginalSCP: false, name: name, filename: filename, serviceName: serviceName, http://git-wip-us.apache.org/repos/asf/ambari/blob/c85909e2/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 32f273c..e37a565 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 @@ -319,6 +319,7 @@ App.SliderConfigWidgetView = App.ConfigWidgetView.extend({ mirrorStep = this.get('mirrorStep'), recommendedValue = this.valueForTick(+this.get('widgetRecommendedValue')), range = Math.floor((maxMirrorValue - minMirrorValue) / mirrorStep) * mirrorStep, + isOriginalSCP = config.get('isOriginalSCP'), // for little odd numbers in range 4..23 and widget type 'int' use always 4 ticks isSmallInt = this.get('unitType') == 'int' && range > 4 && range < 23 && range % 2 == 1, recommendedValueMirroredId, @@ -339,35 +340,37 @@ App.SliderConfigWidgetView = App.ConfigWidgetView.extend({ ticks = ticks.uniq(); - // default marker should be added only if recommendedValue is in range [min, max] - if (recommendedValue <= maxMirrorValue && recommendedValue >= minMirrorValue && recommendedValue != '') { - // process additional tick for default value if it not defined in previous computation - if (!ticks.contains(recommendedValue)) { - // push default value - ticks.push(recommendedValue); - // and resort array - ticks = ticks.sort(function (a, b) { - return a - b; - }); - recommendedValueId = ticks.indexOf(recommendedValue); - // to save nice tick labels layout we should add new tick value which is mirrored by index to default value - recommendedValueMirroredId = ticks.length - recommendedValueId; - // push mirrored default value behind default - if (recommendedValueId == recommendedValueMirroredId) { - recommendedValueMirroredId--; + if (!(this.get('controller.isCompareMode') && !isOriginalSCP)) { + // default marker should be added only if recommendedValue is in range [min, max] + if (recommendedValue <= maxMirrorValue && recommendedValue >= minMirrorValue && recommendedValue != '') { + // process additional tick for default value if it not defined in previous computation + if (!ticks.contains(recommendedValue)) { + // push default value + ticks.push(recommendedValue); + // and resort array + ticks = ticks.sort(function (a, b) { + return a - b; + }); + recommendedValueId = ticks.indexOf(recommendedValue); + // to save nice tick labels layout we should add new tick value which is mirrored by index to default value + recommendedValueMirroredId = ticks.length - recommendedValueId; + // push mirrored default value behind default + if (recommendedValueId == recommendedValueMirroredId) { + recommendedValueMirroredId--; + } + // push empty label for default value tick + ticksLabels.insertAt(recommendedValueId, ''); + // push empty to mirrored position + ticksLabels.insertAt(recommendedValueMirroredId, ''); + // for saving correct sliding need to add value to mirrored position which is average between previous + // and next value + ticks.insertAt(recommendedValueMirroredId, this.valueForTick((ticks[recommendedValueMirroredId] + ticks[recommendedValueMirroredId - 1]) / 2)); + // get new index for default value + recommendedValueId = ticks.indexOf(recommendedValue); + } + else { + recommendedValueId = ticks.indexOf(recommendedValue); } - // push empty label for default value tick - ticksLabels.insertAt(recommendedValueId, ''); - // push empty to mirrored position - ticksLabels.insertAt(recommendedValueMirroredId, ''); - // for saving correct sliding need to add value to mirrored position which is average between previous - // and next value - ticks.insertAt(recommendedValueMirroredId, this.valueForTick((ticks[recommendedValueMirroredId] + ticks[recommendedValueMirroredId - 1]) / 2)); - // get new index for default value - recommendedValueId = ticks.indexOf(recommendedValue); - } - else { - recommendedValueId = ticks.indexOf(recommendedValue); } } http://git-wip-us.apache.org/repos/asf/ambari/blob/c85909e2/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 b008909..38c382c 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 @@ -379,6 +379,25 @@ describe('App.SliderConfigWidgetView', function () { ticks: [1, 10, 26, 51, 75, 87.5, 100], ticksLabels: ["1 GB", "", "", "51 GB", "", "", "100 GB"] } + }, + { + viewSetup: { + minMirrorValue: 1, + maxMirrorValue: 100, + isCompareMode: true, + widgetRecommendedValue: 10, + config: Em.Object.create({ + isOriginalSCP: false, + stackConfigProperty: Em.Object.create({ + valueAttributes: {unit: "B", type: "int", minimum: "1073741824", maximum: "107374182400", increment_step: "1073741824"}, + widget: { units: [ { 'unit-name': "GB"}]} + }) + }) + }, + e: { + ticks: [1, 26, 51, 75, 100], + ticksLabels: ["1 GB", "", "51 GB", "", "100 GB"] + } } ]; @@ -386,6 +405,9 @@ describe('App.SliderConfigWidgetView', function () { it('should generate ticks: {0} - tick labels: {1}'.format(test.e.ticks, test.e.ticksLabels), function() { var ticks, ticksLabels; this.view = this.view.create(test.viewSetup); + this.view.set('controller', { + isCompareMode: test.viewSetup.isCompareMode + }); var sliderCopy= window.Slider.prototype; window.Slider = function(a, b) { ticks = b.ticks;