mirror of
https://github.com/inventree/InvenTree.git
synced 2026-01-07 03:37:56 +00:00
Fix for data importer (#11076)
* Fix for data importer - Ensure the "progress" stepper updates * Prevent query with invalid PK * Reduce useless API calls - Instantiate column mappings with proper defaults - Ignore duplicate updates - Increase debounce times
This commit is contained in:
@@ -84,16 +84,28 @@ function ImporterDefaultField({
|
||||
}) {
|
||||
const api = useApi();
|
||||
|
||||
const [rawValue, setRawValue] = useState<any>('');
|
||||
const [rawValue, setRawValue] = useState<any>(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);
|
||||
|
||||
@@ -42,7 +42,7 @@ function ImportDrawerStepper({
|
||||
>
|
||||
<Stepper.Step label={t`Upload File`} />
|
||||
<Stepper.Step label={t`Map Columns`} />
|
||||
<Stepper.Step label={t`Import Data`} />
|
||||
<Stepper.Step label={t`Import Rows`} />
|
||||
<Stepper.Step label={t`Process Data`} />
|
||||
<Stepper.Step label={t`Complete Import`} />
|
||||
</Stepper>
|
||||
@@ -133,7 +133,7 @@ export default function ImporterDrawer({
|
||||
<Divider />
|
||||
</Stack>
|
||||
);
|
||||
}, [session.sessionData]);
|
||||
}, [currentStep, session.sessionData]);
|
||||
|
||||
return (
|
||||
<Drawer
|
||||
|
||||
@@ -42,6 +42,7 @@ export function useImportSession({
|
||||
} = useInstance({
|
||||
endpoint: ApiEndpoints.import_session_list,
|
||||
pk: sessionId,
|
||||
hasPrimaryKey: true,
|
||||
defaultValue: {}
|
||||
});
|
||||
|
||||
|
||||
@@ -85,7 +85,7 @@ export function useInstance<T = any>({
|
||||
pk == null ||
|
||||
pk == undefined ||
|
||||
pk.toString().length == 0 ||
|
||||
pk == '-1'
|
||||
pk.toString() == '-1'
|
||||
) {
|
||||
setInstance(defaultValue);
|
||||
return defaultValue;
|
||||
|
||||
Reference in New Issue
Block a user