]> source.dussan.org Git - sonarqube.git/commitdiff
Fix reset button on settings page
authorPascal Mugnier <pascal.mugnier@sonarsource.com>
Thu, 29 Mar 2018 14:38:27 +0000 (16:38 +0200)
committerSonarTech <sonartech@sonarsource.com>
Thu, 5 Apr 2018 18:20:47 +0000 (20:20 +0200)
server/sonar-web/src/main/js/apps/settings/components/Definition.js
server/sonar-web/src/main/js/apps/settings/components/DefinitionActions.tsx

index b1a1f32503b219040c7cdcdb28d4ba31a391da3e..ab25a45251bdfb572db541b255881c06e097f8b0 100644 (file)
@@ -82,11 +82,7 @@ class Definition extends React.PureComponent {
   handleChange = value => {
     clearTimeout(this.timeout);
     this.props.changeValue(this.props.setting.definition.key, value);
-    if (this.props.setting.definition.type === TYPE_PASSWORD) {
-      this.handleSave();
-    } else {
-      this.handleCheck();
-    }
+    this.handleCheck();
   };
 
   handleReset = () => {
@@ -145,7 +141,7 @@ class Definition extends React.PureComponent {
 
     const effectiveValue = hasValueChanged ? changedValue : getSettingValue(setting);
 
-    const isDefault = isDefaultOrInherited(setting) && !hasValueChanged;
+    const isDefault = isDefaultOrInherited(setting);
 
     return (
       <div className={className} data-key={definition.key}>
@@ -197,9 +193,9 @@ class Definition extends React.PureComponent {
           </div>
 
           <Input
+            hasValueChanged={hasValueChanged}
             onCancel={this.handleCancel}
             onChange={this.handleChange}
-            onSave={this.handleSave}
             setting={setting}
             value={effectiveValue}
           />
@@ -207,6 +203,7 @@ class Definition extends React.PureComponent {
           <DefinitionActions
             changedValue={changedValue}
             hasError={hasError}
+            hasValueChanged={hasValueChanged}
             isDefault={isDefault}
             onCancel={this.handleCancel}
             onReset={this.handleReset}
index b8b74dd5ca09d0d11e8d5f39831d98d0c05cf3b3..f45f0d984d915bcea9ffbff4b4cc4e25f45ad39c 100644 (file)
@@ -27,6 +27,7 @@ import { SettingValue, Definition } from '../../../api/settings';
 type Props = {
   changedValue: string;
   hasError: boolean;
+  hasValueChanged: boolean;
   isDefault: boolean;
   onCancel: () => void;
   onReset: () => void;
@@ -75,19 +76,22 @@ export default class DefinitionActions extends React.PureComponent<Props, State>
   }
 
   render() {
-    const { setting, isDefault, changedValue } = this.props;
-    const hasValueChanged = changedValue != null;
-    const canBeReset = !isDefault && isEmptyValue(setting.definition, changedValue);
-    const isExplicitlySet =
-      !isDefault && !isEmptyValue(setting.definition, getSettingValue(setting));
+    const { setting, isDefault, changedValue, hasValueChanged } = this.props;
+
+    const hasValueToResetTo = !isEmptyValue(setting.definition, getSettingValue(setting));
+    const hasBeenChangedToEmptyValue =
+      changedValue != null && isEmptyValue(setting.definition, changedValue);
+    const showReset =
+      hasValueToResetTo && (hasBeenChangedToEmptyValue || (!isDefault && !hasValueChanged));
 
     return (
       <>
-        {isDefault && (
-          <div className="spacer-top note" style={{ lineHeight: '24px' }}>
-            {translate('settings._default')}
-          </div>
-        )}
+        {isDefault &&
+          !hasValueChanged && (
+            <div className="spacer-top note" style={{ lineHeight: '24px' }}>
+              {translate('settings._default')}
+            </div>
+          )}
         <div className="settings-definition-changes nowrap">
           {hasValueChanged && (
             <Button
@@ -98,7 +102,7 @@ export default class DefinitionActions extends React.PureComponent<Props, State>
             </Button>
           )}
 
-          {canBeReset && (
+          {showReset && (
             <Button className="spacer-right" onClick={this.handleReset}>
               {translate('reset_verb')}
             </Button>
@@ -110,7 +114,7 @@ export default class DefinitionActions extends React.PureComponent<Props, State>
             </Button>
           )}
 
-          {isExplicitlySet && (
+          {showReset && (
             <span className="note">
               {translate('default')}
               {': '}