diff --git a/src/frontend/src/components/importer/ImporterColumnSelector.tsx b/src/frontend/src/components/importer/ImporterColumnSelector.tsx index 4036b4f3b5..8031495cac 100644 --- a/src/frontend/src/components/importer/ImporterColumnSelector.tsx +++ b/src/frontend/src/components/importer/ImporterColumnSelector.tsx @@ -84,16 +84,28 @@ function ImporterDefaultField({ }) { const api = useApi(); - const [rawValue, setRawValue] = useState(''); + const [rawValue, setRawValue] = useState(undefined); + + // Initialize raw value with provided default + useEffect(() => { + setRawValue(session.fieldDefaults[fieldName]); + }, [fieldName, session.fieldDefaults]); const fieldType: string = useMemo(() => { return session.availableFields[fieldName]?.type; }, [fieldName, session.availableFields]); - const [value] = useDebouncedValue(rawValue, fieldType == 'string' ? 500 : 10); - const onChange = useCallback( (value: any) => { + if (value === undefined) { + value = session.fieldDefaults[fieldName]; + } + + // No change - do nothing + if (value === session.fieldDefaults[fieldName]) { + return; + } + // Update the default value for the field const defaults = { ...session.fieldDefaults, @@ -114,6 +126,21 @@ function ImporterDefaultField({ [fieldName, session, session.fieldDefaults] ); + const getDebounceTime = (type: string) => { + switch (type) { + case 'string': + return 500; + case 'number': + case 'float': + case 'integer': + return 200; + default: + return 50; + } + }; + + const [value] = useDebouncedValue(rawValue, getDebounceTime(fieldType)); + // Update the default value after the debounced value changes useEffect(() => { onChange(value); diff --git a/src/frontend/src/components/importer/ImporterDrawer.tsx b/src/frontend/src/components/importer/ImporterDrawer.tsx index 2ed836627c..eb5a4343af 100644 --- a/src/frontend/src/components/importer/ImporterDrawer.tsx +++ b/src/frontend/src/components/importer/ImporterDrawer.tsx @@ -42,7 +42,7 @@ function ImportDrawerStepper({ > - + @@ -133,7 +133,7 @@ export default function ImporterDrawer({ ); - }, [session.sessionData]); + }, [currentStep, session.sessionData]); return ( ({ pk == null || pk == undefined || pk.toString().length == 0 || - pk == '-1' + pk.toString() == '-1' ) { setInstance(defaultValue); return defaultValue;