Prechádzať zdrojové kódy

AMBARI-10682 Widget's min/max check errors should not stop from saving. (ababiichuk)

aBabiichuk 10 rokov pred
rodič
commit
245b59972a

+ 3 - 0
ambari-web/app/messages.js

@@ -2591,6 +2591,9 @@ Em.I18n.translations = {
   'config.group.save.confirmation.manage.button': 'Manage Hosts',
   'config.group.description.default': 'New configuration group created on {0}',
 
+  'config.warnMessage.outOfBoundaries.greater': 'Values greater than {0} are not recommended',
+  'config.warnMessage.outOfBoundaries.less': 'Values smaller than {0} are not recommended',
+
   'utils.ajax.errorMessage': 'Error message',
   'utils.ajax.defaultErrorPopupBody.message': 'received on {0} method for API: {1}',
   'utils.ajax.defaultErrorPopupBody.statusCode': '{0} status code'

+ 5 - 1
ambari-web/app/templates/common/configs/widgets/controls.hbs

@@ -69,7 +69,11 @@
 {{#if view.config.errorMessage}}
   <p class="text-error">{{view.config.errorMessage}}</p>
   {{else}}
-  <p>&nbsp;</p>
+    {{#if view.config.warnMessage}}
+      <p class="text-warning">{{view.config.warnMessage}}</p>
+    {{else}}
+      <p>&nbsp;</p>
+    {{/if}}
 {{/if}}
 
 {{#if view.isComparison}}

+ 8 - 4
ambari-web/app/views/common/configs/widgets/slider_config_widget_view.js

@@ -185,16 +185,20 @@ App.SliderConfigWidgetView = App.ConfigWidgetView.extend({
       parseFunction = this.get('mirrorValueParseFunction');
     if (validationFunction(mirrorValue)) {
       var parsed = parseFunction(mirrorValue);
-      if (parsed >= min && parsed <= max) {
+      if (parsed > max) {
+        this.set('isMirrorValueValid', false);
+        this.set('config.warnMessage', Em.I18n.t('config.warnMessage.outOfBoundaries.greater').format(max));
+      } else if (parsed < min) {
+        this.set('isMirrorValueValid', false);
+        this.set('config.warnMessage', Em.I18n.t('config.warnMessage.outOfBoundaries.less').format(min));
+      } else {
         this.set('isMirrorValueValid', true);
+        this.set('config.warnMessage', '');
         this.set('config.errorMessage', '');
         this.set('config.value', '' + this.configValueByWidget(parsed));
         if (slider) {
           slider.setValue(parsed);
         }
-      } else {
-        this.set('isMirrorValueValid', false);
-        this.set('config.errorMessage', 'Invalid value');
       }
     } else {
       this.set('isMirrorValueValid', false);

+ 6 - 6
ambari-web/app/views/common/configs/widgets/time_interval_spinner_view.js

@@ -174,18 +174,18 @@ App.TimeIntervalSpinnerView = App.ConfigWidgetView.extend({
    */
   checkErrors: function() {
     var convertedValue = this.configValueByWidget(this.get('content'));
-    var errorMessage = '';
+    var warnMessage = '';
     if (convertedValue < parseInt(this.get('config.stackConfigProperty.valueAttributes.minimum'))) {
-      errorMessage = Em.I18n.t('number.validate.lessThanMinimum').format(this.dateToText(this.get('minValue')));
+      warnMessage = Em.I18n.t('config.warnMessage.outOfBoundaries.less').format(this.dateToText(this.get('minValue')));
     }
     else if (convertedValue > parseInt(this.get('config.stackConfigProperty.valueAttributes.maximum'))) {
-      errorMessage = Em.I18n.t('number.validate.moreThanMaximum').format(this.dateToText(this.get('maxValue')));
+      warnMessage = Em.I18n.t('config.warnMessage.outOfBoundaries.greater').format(this.dateToText(this.get('maxValue')));
     }
     this.setProperties({
-      isValid: !errorMessage,
-      errorMessage: errorMessage
+      isValid: !warnMessage,
+      warnMessage: warnMessage
     });
-    this.set('config.errorMessage', errorMessage);
+    this.set('config.warnMessage', warnMessage);
   },
 
   /**

+ 9 - 3
ambari-web/test/views/common/configs/widgets/slider_config_widget_view_test.js

@@ -140,11 +140,13 @@ describe('App.SliderConfigWidgetView', function () {
       expect(viewInt.get('isMirrorValueValid')).to.be.true;
       expect(viewInt.get('config.value')).to.equal('1000');
       expect(viewInt.get('config.errorMessage')).to.equal('');
+      expect(viewInt.get('config.warnMessage')).to.equal('');
 
       viewInt.set('mirrorValue', 100500);
       expect(viewInt.get('isMirrorValueValid')).to.be.false;
       expect(viewInt.get('config.value')).to.equal('1000');
-      expect(viewInt.get('config.errorMessage')).to.have.property('length').that.is.least(1);
+      expect(viewInt.get('config.errorMessage')).to.equal('');
+      expect(viewInt.get('config.warnMessage')).to.have.property('length').that.is.least(1);
     });
 
     it('check float', function () {
@@ -152,11 +154,13 @@ describe('App.SliderConfigWidgetView', function () {
       expect(viewFloat.get('isMirrorValueValid')).to.be.true;
       expect(viewFloat.get('config.value')).to.equal('55.5');
       expect(viewFloat.get('config.errorMessage')).to.equal('');
+      expect(viewFloat.get('config.warnMessage')).to.equal('');
 
       viewFloat.set('mirrorValue', 100500.5);
       expect(viewFloat.get('isMirrorValueValid')).to.be.false;
       expect(viewFloat.get('config.value')).to.equal('55.5');
-      expect(viewFloat.get('config.errorMessage')).to.have.property('length').that.is.least(1);
+      expect(viewFloat.get('config.errorMessage')).to.equal('');
+      expect(viewFloat.get('config.warnMessage')).to.have.property('length').that.is.least(1);
     });
 
     it('check percent', function () {
@@ -164,11 +168,13 @@ describe('App.SliderConfigWidgetView', function () {
       expect(viewPercent.get('isMirrorValueValid')).to.be.true;
       expect(viewPercent.get('config.value')).to.equal('0.32');
       expect(viewPercent.get('config.errorMessage')).to.equal('');
+      expect(viewPercent.get('config.warnMessage')).to.equal('');
 
       viewPercent.set('mirrorValue', 100500.5);
       expect(viewPercent.get('isMirrorValueValid')).to.be.false;
       expect(viewPercent.get('config.value')).to.equal('0.32');
-      expect(viewPercent.get('config.errorMessage')).to.have.property('length').that.is.least(1);
+      expect(viewPercent.get('config.errorMessage')).to.equal('');
+      expect(viewPercent.get('config.warnMessage')).to.have.property('length').that.is.least(1);
     });
   });