Selaa lähdekoodia

AMBARI-12168. Configs: Historical configs show "default" values that don't make sense (onechiporenko)

Oleg Nechiporenko 10 vuotta sitten
vanhempi
commit
a9e122e85c

+ 3 - 1
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,

+ 31 - 28
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);
       }
     }
 

+ 22 - 0
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;