mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-20 18:16:00 +00:00
key hack - correct reporting progress rows
This commit is contained in:
@@ -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>
|
||||||
|
|||||||
Reference in New Issue
Block a user