From 450ce53dcfd4bbfb6fdf923538f256dae30b79ef Mon Sep 17 00:00:00 2001 From: "SPRINX0\\prochazka" Date: Wed, 26 Feb 2025 16:43:24 +0100 Subject: [PATCH] import WIP --- .../src/appobj/DatabaseObjectAppObject.svelte | 4 +- .../impexp/ImportExportConfigurator.svelte | 218 +++++++++--------- 2 files changed, 118 insertions(+), 104 deletions(-) diff --git a/packages/web/src/appobj/DatabaseObjectAppObject.svelte b/packages/web/src/appobj/DatabaseObjectAppObject.svelte index 633aacd54..405c07c0b 100644 --- a/packages/web/src/appobj/DatabaseObjectAppObject.svelte +++ b/packages/web/src/appobj/DatabaseObjectAppObject.svelte @@ -694,7 +694,9 @@ targetConnectionId: conid, targetDatabaseName: extractDbNameFromComposite(database), targetSchemaName: data.schemaName, - fixedTargetPureName: data.pureName, + sourceList: ['__TEMPLATE__'], + targetName___TEMPLATE__: data.pureName, + // fixedTargetPureName: data.pureName, }); // showModal(ImportExportModal, { // initialValues: { diff --git a/packages/web/src/impexp/ImportExportConfigurator.svelte b/packages/web/src/impexp/ImportExportConfigurator.svelte index 7fb3936d2..57702bcf7 100644 --- a/packages/web/src/impexp/ImportExportConfigurator.svelte +++ b/packages/web/src/impexp/ImportExportConfigurator.svelte @@ -25,7 +25,10 @@ await (format.addFileToSourceList || addFileToSourceListDefault)(file, newSources, newValues, apiCall); } } - newValues['sourceList'] = [...(values.sourceList || []).filter(x => !newSources.includes(x)), ...newSources]; + newValues['sourceList'] = [ + ...(values.sourceList || []).filter(x => !newSources.includes(x) && x != '__TEMPLATE__'), + ...newSources, + ]; if (preferedStorageType && preferedStorageType != values.sourceStorageType) { newValues['sourceStorageType'] = preferedStorageType; } @@ -91,6 +94,8 @@ $: sourceEngine = $sourceConnectionInfo?.engine; $: sourceList = $values.sourceList; + let targetEditKey = 0; + const previewSource = writable(null); $: supportsPreview = @@ -125,6 +130,7 @@ previewSource.set ); // setFieldValue('sourceList', [...(sourceList || []), file.originalName]); + targetEditKey += 1; } $: effectActiveTab = useEffect(() => { @@ -138,30 +144,30 @@ } }); - const lastSourcesRef = createRef(null); - function setFixedTargetForNewSources(values, valuesStore) { - if (lastSourcesRef.get() && values.fixedTargetPureName) { - const newSources = values.sourceList.filter(x => !lastSourcesRef.get()?.includes(x)); - const newValues = {}; - for (const source of newSources) { - if (values.fixedTargetPureName) { - if (!values[`targetName_${source}`]) { - newValues[`targetName_${source}`] = values.fixedTargetPureName; - } - if (!values[`actionType_${source}`]) { - newValues[`actionType_${source}`] = 'appendData'; - } - } - } - valuesStore.set({ - ...values, - ...newValues, - }); - } - lastSourcesRef.set(values.sourceList); - } + // const lastSourcesRef = createRef(null); + // function setFixedTargetForNewSources(values, valuesStore) { + // if (lastSourcesRef.get() && values.fixedTargetPureName) { + // const newSources = values.sourceList.filter(x => !lastSourcesRef.get()?.includes(x)); + // const newValues = {}; + // for (const source of newSources) { + // if (values.fixedTargetPureName) { + // if (!values[`targetName_${source}`]) { + // newValues[`targetName_${source}`] = values.fixedTargetPureName; + // } + // if (!values[`actionType_${source}`]) { + // newValues[`actionType_${source}`] = 'appendData'; + // } + // } + // } + // valuesStore.set({ + // ...values, + // ...newValues, + // }); + // } + // lastSourcesRef.set(values.sourceList); + // } - $: setFixedTargetForNewSources($values, values); + // $: setFixedTargetForNewSources($values, values); $effectActiveTab; @@ -195,89 +201,95 @@
Map source tables/files
- ({ name: row }), - }, - { - fieldName: 'action', - header: 'Action', - component: SourceAction, - getProps: row => ({ name: row, targetDbinfo }), - }, - { - fieldName: 'target', - header: 'Target', - slot: 1, - }, - { - fieldName: 'preview', - header: 'Preview', - slot: 0, - }, - { - fieldName: 'columns', - header: 'Columns', - slot: 2, - }, - ]} - > - - {#if supportsPreview} - { - // @ts-ignore - if (e.target.checked) $previewSource = row; - else $previewSource = null; - }} - /> - {/if} - - -
- - setFieldValue( - `targetName_${row}`, + {#key targetEditKey} + ({ name: row }), + }, + { + fieldName: 'action', + header: 'Action', + component: SourceAction, + getProps: row => ({ name: row, targetDbinfo }), + }, + { + fieldName: 'target', + header: 'Target', + slot: 1, + }, + { + fieldName: 'preview', + header: 'Preview', + slot: 0, + }, + { + fieldName: 'columns', + header: 'Columns', + slot: 2, + }, + ]} + > + + {#if supportsPreview} + { // @ts-ignore - e.target.value - )} - /> - {#if $targetDbinfo} - { - return $targetDbinfo.tables.map(opt => ({ - text: opt.pureName, - onClick: () => setFieldValue(`targetName_${row}`, opt.pureName), - })); + if (e.target.checked) $previewSource = row; + else $previewSource = null; }} /> {/if} -
-
- - {@const columnCount = ($values[`columns_${row}`] || []).filter(x => !x.skip).length} - { - const targetNameLower = ($values[`targetName_${row}`] || row)?.toLowerCase(); - showModal(ColumnMapModal, { - initialValue: $values[`columns_${row}`], - sourceTableInfo: $sourceDbinfo?.tables?.find(x => x.pureName?.toLowerCase() == row?.toLowerCase()), - targetTableInfo: $targetDbinfo?.tables?.find(x => x.pureName?.toLowerCase() == targetNameLower), - onConfirm: value => setFieldValue(`columns_${row}`, value), - }); - }} - >{columnCount > 0 ? `(${columnCount} columns)` : '(copy from source)'} - - -
+ + +
+ + setFieldValue( + `targetName_${row}`, + // @ts-ignore + e.target.value + )} + /> + {#if $targetDbinfo} + { + return $targetDbinfo.tables.map(opt => ({ + text: opt.pureName, + onClick: () => { + setFieldValue(`targetName_${row}`, opt.pureName); + targetEditKey += 1; + }, + })); + }} + /> + {/if} +
+
+ + {@const columnCount = ($values[`columns_${row}`] || []).filter(x => !x.skip).length} + { + const targetNameLower = ($values[`targetName_${row}`] || row)?.toLowerCase(); + showModal(ColumnMapModal, { + initialValue: $values[`columns_${row}`], + sourceTableInfo: $sourceDbinfo?.tables?.find(x => x.pureName?.toLowerCase() == row?.toLowerCase()), + targetTableInfo: $targetDbinfo?.tables?.find(x => x.pureName?.toLowerCase() == targetNameLower), + onConfirm: value => setFieldValue(`columns_${row}`, value), + }); + }} + >{columnCount > 0 ? `(${columnCount} columns)` : '(copy from source)'} + + + + {/key}