key hack - correct reporting progress rows

This commit is contained in:
SPRINX0\prochazka
2025-03-04 15:30:18 +01:00
parent 4015e2566e
commit cfc9b809fc

View File

@@ -213,130 +213,132 @@
<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} {#key targetEditKey}
<TableControl {#key progressHolder}
rows={$values.sourceList || []} <TableControl
columns={[ rows={$values.sourceList || []}
{ columns={[
fieldName: 'source', {
header: 'Source', fieldName: 'source',
component: SourceName, header: 'Source',
getProps: row => ({ name: row }), component: SourceName,
}, getProps: row => ({ name: row }),
{ },
fieldName: 'action', {
header: 'Action', fieldName: 'action',
component: SourceAction, header: 'Action',
getProps: row => ({ name: row, targetDbinfo }), component: SourceAction,
}, getProps: row => ({ name: row, targetDbinfo }),
{ },
fieldName: 'target', {
header: 'Target', fieldName: 'target',
slot: 1, header: 'Target',
}, slot: 1,
supportsPreview && { },
fieldName: 'preview', supportsPreview && {
header: 'Preview', fieldName: 'preview',
slot: 0, header: 'Preview',
}, slot: 0,
!!progressHolder && { },
fieldName: 'status', !!progressHolder && {
header: 'Status', fieldName: 'status',
slot: 3, header: 'Status',
}, slot: 3,
{ },
fieldName: 'columns', {
header: 'Columns', fieldName: 'columns',
slot: 2, header: 'Columns',
}, slot: 2,
]} },
> ]}
<svelte:fragment slot="0" let:row> >
{#if supportsPreview} <svelte:fragment slot="0" let:row>
<CheckboxField {#if supportsPreview}
checked={$previewSource == row} <CheckboxField
on:change={e => { checked={$previewSource == row}
// @ts-ignore on:change={e => {
if (e.target.checked) $previewSource = row;
else $previewSource = null;
}}
/>
{/if}
</svelte:fragment>
<svelte:fragment slot="1" let:row>
<div class="flex">
<TextField
value={getTargetName($extensions, row, $values)}
on:input={e =>
setFieldValue(
`targetName_${row}`,
// @ts-ignore // @ts-ignore
e.target.value if (e.target.checked) $previewSource = row;
)} else $previewSource = null;
/>
{#if $targetDbinfo}
<DropDownButton
menu={() => {
return $targetDbinfo.tables.map(opt => ({
text: opt.pureName,
onClick: () => {
setFieldValue(`targetName_${row}`, opt.pureName);
targetEditKey += 1;
},
}));
}} }}
/> />
{/if} {/if}
</div> </svelte:fragment>
</svelte:fragment> <svelte:fragment slot="1" let:row>
<svelte:fragment slot="2" let:row> <div class="flex">
{@const columnCount = ($values[`columns_${row}`] || []).filter(x => !x.skip).length} <TextField
<Link value={getTargetName($extensions, row, $values)}
onClick={() => { on:input={e =>
const targetNameLower = ($values[`targetName_${row}`] || row)?.toLowerCase(); setFieldValue(
showModal(ColumnMapModal, { `targetName_${row}`,
initialValue: $values[`columns_${row}`], // @ts-ignore
sourceTableInfo: $sourceDbinfo?.tables?.find(x => x.pureName?.toLowerCase() == row?.toLowerCase()), e.target.value
targetTableInfo: $targetDbinfo?.tables?.find(x => x.pureName?.toLowerCase() == targetNameLower), )}
onConfirm: value => setFieldValue(`columns_${row}`, value),
});
}}
>{columnCount > 0 ? `(${columnCount} columns)` : '(copy from source)'}
</Link>
</svelte:fragment>
<svelte:fragment slot="3" let:row>
{#if progressHolder[row]?.status == 'running'}
<FontIcon icon="icon loading" />
{#if progressHolder[row]?.writtenRowCount}
{progressHolder[row]?.writtenRowCount} rows writtem
{:else if progressHolder[row]?.readRowCount}
{progressHolder[row]?.readRowCount} rows read
{:else}
Running
{/if}
{:else if progressHolder[row]?.status == 'error'}
<FontIcon icon="img error" /> Error
{#if progressHolder[row]?.errorMessage}
<FontIcon
icon="img info"
title={progressHolder[row]?.errorMessage}
on:click={() => showModal(ErrorMessageModal, { message: progressHolder[row]?.errorMessage })}
style="cursor: pointer"
/> />
{/if} {#if $targetDbinfo}
{:else if progressHolder[row]?.status == 'done'} <DropDownButton
<FontIcon icon="img ok" /> menu={() => {
{#if progressHolder[row]?.writtenRowCount} return $targetDbinfo.tables.map(opt => ({
{progressHolder[row]?.writtenRowCount} rows written text: opt.pureName,
{:else if progressHolder[row]?.readRowCount} onClick: () => {
{progressHolder[row]?.readRowCount} rows written setFieldValue(`targetName_${row}`, opt.pureName);
targetEditKey += 1;
},
}));
}}
/>
{/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() == targetNameLower),
onConfirm: value => setFieldValue(`columns_${row}`, value),
});
}}
>{columnCount > 0 ? `(${columnCount} columns)` : '(copy from source)'}
</Link>
</svelte:fragment>
<svelte:fragment slot="3" let:row>
{#if progressHolder[row]?.status == 'running'}
<FontIcon icon="icon loading" />
{#if progressHolder[row]?.writtenRowCount}
{progressHolder[row]?.writtenRowCount} rows writtem
{:else if progressHolder[row]?.readRowCount}
{progressHolder[row]?.readRowCount} rows read
{:else}
Running
{/if}
{:else if progressHolder[row]?.status == 'error'}
<FontIcon icon="img error" /> Error
{#if progressHolder[row]?.errorMessage}
<FontIcon
icon="img info"
title={progressHolder[row]?.errorMessage}
on:click={() => showModal(ErrorMessageModal, { message: progressHolder[row]?.errorMessage })}
style="cursor: pointer"
/>
{/if}
{:else if progressHolder[row]?.status == 'done'}
<FontIcon icon="img ok" />
{#if progressHolder[row]?.writtenRowCount}
{progressHolder[row]?.writtenRowCount} rows written
{:else if progressHolder[row]?.readRowCount}
{progressHolder[row]?.readRowCount} rows written
{:else}
Done
{/if}
{:else} {:else}
Done <FontIcon icon="icon wait" /> Queued
{/if} {/if}
{:else} </svelte:fragment>
<FontIcon icon="icon wait" /> Queued </TableControl>
{/if} {/key}
</svelte:fragment>
</TableControl>
{/key} {/key}
</div> </div>
</div> </div>