Skip to content

Commit f26af75

Browse files
committed
Manual Selection on Free text
1 parent 3915700 commit f26af75

File tree

2 files changed

+29
-5
lines changed

2 files changed

+29
-5
lines changed

src/chart/parameter/component/FreeTextParameterSelect.tsx

Lines changed: 28 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@ import { debounce, CircularProgress } from '@mui/material';
22
import React, { useCallback, useEffect } from 'react';
33
import { ParameterSelectProps } from './ParameterSelect';
44
import NeoField from '../../../component/field/Field';
5+
import { SelectionConfirmationButton } from './SelectionConfirmationButton';
56

67
const FreeTextParameterSelectComponent = (props: ParameterSelectProps) => {
8+
const { setManual } = props;
79
const setParameterTimeout =
810
props.settings && props.settings.setParameterTimeout ? props.settings.setParameterTimeout : 1000;
911
const defaultValue =
@@ -17,12 +19,32 @@ const FreeTextParameterSelectComponent = (props: ParameterSelectProps) => {
1719
const clearParameterOnFieldClear =
1820
props.settings && props.settings.clearParameterOnFieldClear ? props.settings.clearParameterOnFieldClear : false;
1921
const [running, setRunning] = React.useState(false);
22+
const [paramValueTemp, setParamValueTemp] = React.useState(null);
23+
2024
const setParameterValue = (value) => {
2125
setRunning(false);
2226
props.setParameterValue(value);
2327
};
2428
const debouncedSetParameterValue = useCallback(debounce(setParameterValue, setParameterTimeout), []);
2529

30+
const manualHandleParameters = () => {
31+
handleParameters(paramValueTemp, false);
32+
};
33+
34+
const handleParameters = (value, manual = false) => {
35+
setParamValueTemp(value);
36+
37+
if (manual) {
38+
return;
39+
}
40+
41+
if (value == null && clearParameterOnFieldClear) {
42+
debouncedSetParameterValue(defaultValue);
43+
} else {
44+
debouncedSetParameterValue(value);
45+
}
46+
};
47+
2648
// If the user hasn't typed, and the parameter value mismatches the input value --> it was changed externally --> refresh the input value.
2749
if (running == false && inputText !== props.parameterValue) {
2850
setInputText(props.parameterValue);
@@ -42,13 +64,14 @@ const FreeTextParameterSelectComponent = (props: ParameterSelectProps) => {
4264
setRunning(true);
4365
setInputText(newValue);
4466

45-
if (newValue == null && clearParameterOnFieldClear) {
46-
debouncedSetParameterValue(defaultValue);
47-
} else {
48-
debouncedSetParameterValue(newValue);
49-
}
67+
handleParameters(newValue, setManual);
5068
}}
5169
/>
70+
{setManual ? (
71+
<SelectionConfirmationButton onClick={() => manualHandleParameters()} key={`selectionConfirmation`} />
72+
) : (
73+
<></>
74+
)}
5275
{running ? <CircularProgress size={26} style={{ marginTop: '20px', marginLeft: '5px' }} /> : <></>}
5376
</div>
5477
);

src/chart/parameter/component/RelationshipPropertyParameterSelect.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ const RelationshipPropertyParameterSelectComponent = (props: ParameterSelectProp
2121
allParameters={props.allParameters}
2222
compatibilityMode={props.compatibilityMode}
2323
multiSelector={props.multiSelector}
24+
setManual={props.setManual}
2425
/>
2526
);
2627
};

0 commit comments

Comments
 (0)