Merge branch 'feature/impexp'

This commit is contained in:
SPRINX0\prochazka
2025-02-27 08:20:05 +01:00
3 changed files with 130 additions and 107 deletions

View File

@@ -694,7 +694,9 @@
targetConnectionId: conid, targetConnectionId: conid,
targetDatabaseName: extractDbNameFromComposite(database), targetDatabaseName: extractDbNameFromComposite(database),
targetSchemaName: data.schemaName, targetSchemaName: data.schemaName,
fixedTargetPureName: data.pureName, sourceList: ['__TEMPLATE__'],
targetName___TEMPLATE__: data.pureName,
// fixedTargetPureName: data.pureName,
}); });
// showModal(ImportExportModal, { // showModal(ImportExportModal, {
// initialValues: { // initialValues: {

View File

@@ -25,14 +25,26 @@
await (format.addFileToSourceList || addFileToSourceListDefault)(file, newSources, newValues, apiCall); await (format.addFileToSourceList || addFileToSourceListDefault)(file, newSources, newValues, apiCall);
} }
} }
newValues['sourceList'] = [...(values.sourceList || []).filter(x => !newSources.includes(x)), ...newSources]; const templateTarget = values['targetName___TEMPLATE__'];
newValues['sourceList'] = [
...(values.sourceList || []).filter(x => !newSources.includes(x) && x != '__TEMPLATE__'),
...newSources,
];
if (preferedStorageType && preferedStorageType != values.sourceStorageType) { if (preferedStorageType && preferedStorageType != values.sourceStorageType) {
newValues['sourceStorageType'] = preferedStorageType; newValues['sourceStorageType'] = preferedStorageType;
} }
valuesStore.set({ if (templateTarget) {
const source = newSources[0];
if (source) {
newValues[`targetName_${source}`] = templateTarget;
}
}
const newValuesAll = {
...values, ...values,
...newValues, ...newValues,
}); };
delete newValuesAll['targetName___TEMPLATE__'];
valuesStore.set(newValuesAll);
if (setPreviewSource && newSources.length == 1) { if (setPreviewSource && newSources.length == 1) {
setPreviewSource(newSources[0]); setPreviewSource(newSources[0]);
} }
@@ -91,6 +103,8 @@
$: sourceEngine = $sourceConnectionInfo?.engine; $: sourceEngine = $sourceConnectionInfo?.engine;
$: sourceList = $values.sourceList; $: sourceList = $values.sourceList;
let targetEditKey = 0;
const previewSource = writable(null); const previewSource = writable(null);
$: supportsPreview = $: supportsPreview =
@@ -125,6 +139,7 @@
previewSource.set previewSource.set
); );
// setFieldValue('sourceList', [...(sourceList || []), file.originalName]); // setFieldValue('sourceList', [...(sourceList || []), file.originalName]);
targetEditKey += 1;
} }
$: effectActiveTab = useEffect(() => { $: effectActiveTab = useEffect(() => {
@@ -138,30 +153,30 @@
} }
}); });
const lastSourcesRef = createRef(null); // const lastSourcesRef = createRef(null);
function setFixedTargetForNewSources(values, valuesStore) { // function setFixedTargetForNewSources(values, valuesStore) {
if (lastSourcesRef.get() && values.fixedTargetPureName) { // if (lastSourcesRef.get() && values.fixedTargetPureName) {
const newSources = values.sourceList.filter(x => !lastSourcesRef.get()?.includes(x)); // const newSources = values.sourceList.filter(x => !lastSourcesRef.get()?.includes(x));
const newValues = {}; // const newValues = {};
for (const source of newSources) { // for (const source of newSources) {
if (values.fixedTargetPureName) { // if (values.fixedTargetPureName) {
if (!values[`targetName_${source}`]) { // if (!values[`targetName_${source}`]) {
newValues[`targetName_${source}`] = values.fixedTargetPureName; // newValues[`targetName_${source}`] = values.fixedTargetPureName;
} // }
if (!values[`actionType_${source}`]) { // if (!values[`actionType_${source}`]) {
newValues[`actionType_${source}`] = 'appendData'; // newValues[`actionType_${source}`] = 'appendData';
} // }
} // }
} // }
valuesStore.set({ // valuesStore.set({
...values, // ...values,
...newValues, // ...newValues,
}); // });
} // }
lastSourcesRef.set(values.sourceList); // lastSourcesRef.set(values.sourceList);
} // }
$: setFixedTargetForNewSources($values, values); // $: setFixedTargetForNewSources($values, values);
$effectActiveTab; $effectActiveTab;
</script> </script>
@@ -195,8 +210,10 @@
<div class="m-2"> <div class="m-2">
<div class="title"><FontIcon icon="icon tables" /> Map source tables/files</div> <div class="title"><FontIcon icon="icon tables" /> Map source tables/files</div>
{#key targetEditKey}
<TableControl <TableControl
rows={$values.sourceList || []} rows={$values.sourceList || []}
passProps={{ targetEditKeyValue: targetEditKey }}
columns={[ columns={[
{ {
fieldName: 'source', fieldName: 'source',
@@ -255,7 +272,10 @@
menu={() => { menu={() => {
return $targetDbinfo.tables.map(opt => ({ return $targetDbinfo.tables.map(opt => ({
text: opt.pureName, text: opt.pureName,
onClick: () => setFieldValue(`targetName_${row}`, opt.pureName), onClick: () => {
setFieldValue(`targetName_${row}`, opt.pureName);
targetEditKey += 1;
},
})); }));
}} }}
/> />
@@ -278,6 +298,7 @@
</Link> </Link>
</svelte:fragment> </svelte:fragment>
</TableControl> </TableControl>
{/key}
</div> </div>
</div> </div>

View File

@@ -24,7 +24,7 @@
</script> </script>
<div class="flex space-between"> <div class="flex space-between">
<div>{name}</div> <div>{name == '__TEMPLATE__' ? '(not selected)' : name}</div>
<div class="flex"> <div class="flex">
{#if obj && !!obj.isDownload} {#if obj && !!obj.isDownload}
<div class="icon" on:click={handleChangeUrl} title={obj && obj.fileName}> <div class="icon" on:click={handleChangeUrl} title={obj && obj.fileName}>