fix + ability to choose imported table

This commit is contained in:
SPRINX0\prochazka
2024-09-26 14:49:58 +02:00
parent 1fa39b20d2
commit e2f352149d
2 changed files with 29 additions and 13 deletions

View File

@@ -63,6 +63,7 @@
import useEffect from '../utility/useEffect';
import { compositeDbNameIfNeeded } from 'dbgate-tools';
import createRef from '../utility/createRef';
import DropDownButton from '../buttons/DropDownButton.svelte';
// export let uploadedFile = undefined;
// export let openedFile = undefined;
@@ -71,6 +72,10 @@
const { values, setFieldValue } = getFormContext();
// $: console.log('VALUES', $values);
// $: console.log('$sourceDbinfo', $sourceDbinfo);
// $: console.log('$targetDbinfo', $targetDbinfo);
$: sourceConnectionInfo = useConnectionInfo({ conid: $values.sourceConnectionId });
$: targetConnectionInfo = useConnectionInfo({ conid: $values.targetConnectionId });
@@ -231,26 +236,37 @@
{/if}
</svelte:fragment>
<svelte:fragment slot="1" let:row>
<TextField
value={getTargetName($extensions, row, $values)}
on:input={e =>
setFieldValue(
`targetName_${row}`,
// @ts-ignore
e.target.value
)}
/>
<div class="flex">
<TextField
value={getTargetName($extensions, row, $values)}
on:input={e =>
setFieldValue(
`targetName_${row}`,
// @ts-ignore
e.target.value
)}
/>
{#if $targetDbinfo}
<DropDownButton
menu={() => {
return $targetDbinfo.tables.map(opt => ({
text: opt.pureName,
onClick: () => setFieldValue(`targetName_${row}`, opt.pureName),
}));
}}
/>
{/if}
</div>
</svelte:fragment>
<svelte:fragment slot="2" let:row>
{@const columnCount = ($values[`columns_${row}`] || []).filter(x => !x.skip).length}
<Link
onClick={() => {
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() == (values[`targetName_${row}`] || row)?.toLowerCase()
),
targetTableInfo: $targetDbinfo?.tables?.find(x => x.pureName?.toLowerCase() == targetNameLower),
onConfirm: value => setFieldValue(`columns_${row}`, value),
});
}}