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

@@ -9,7 +9,7 @@
{#if tableInfo} {#if tableInfo}
<div class="wrapper"> <div class="wrapper">
<TextField {...$$restProps} {value} on:input={e => onChange(e.target.value)} /> <TextField {value} on:input={e => onChange(e.target.value)} />
<DropDownButton <DropDownButton
menu={() => { menu={() => {
return tableInfo.columns.map(opt => ({ return tableInfo.columns.map(opt => ({

View File

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