diff --git a/packages/web/src/datagrid/DataGridCore.svelte b/packages/web/src/datagrid/DataGridCore.svelte index 81c7fbf82..31f962280 100644 --- a/packages/web/src/datagrid/DataGridCore.svelte +++ b/packages/web/src/datagrid/DataGridCore.svelte @@ -70,6 +70,10 @@ export let frameSelection = undefined; export let isLoading = false; export let allRowCount = undefined; + export let onReferenceSourceChanged = undefined; + + export let isLoadedAll; + export let loadedTime; const wheelRowCount = 5; const instance = get_current_component(); @@ -148,6 +152,13 @@ }); } + $: { + const _unused = selectedCells; + if (onReferenceSourceChanged && (grider.rowCount > 0 || isLoadedAll)) { + onReferenceSourceChanged(getSelectedRowData(), loadedTime); + } + } + function scrollIntoView(cell) { const [row, col] = cell; diff --git a/packages/web/src/datagrid/LoadingDataGridCore.svelte b/packages/web/src/datagrid/LoadingDataGridCore.svelte index 1a46a210b..dfd4197c0 100644 --- a/packages/web/src/datagrid/LoadingDataGridCore.svelte +++ b/packages/web/src/datagrid/LoadingDataGridCore.svelte @@ -6,6 +6,7 @@ export let loadRowCount; export let grider; export let display; + export let masterLoadedTime = undefined; // export let griderFactory; export let loadedRows = []; @@ -87,6 +88,20 @@ $: if (display.cache.refreshTime > loadedTime) { reload(); } + + $: { + if (masterLoadedTime && masterLoadedTime > loadedTime) { + display.reload(); + } + } - + diff --git a/packages/web/src/datagrid/ReferenceHeader.svelte b/packages/web/src/datagrid/ReferenceHeader.svelte new file mode 100644 index 000000000..7a2b69b94 --- /dev/null +++ b/packages/web/src/datagrid/ReferenceHeader.svelte @@ -0,0 +1,39 @@ + + +
+
+ +
+ {reference.pureName} [{reference.columns.map(x => x.refName).join(', ')}] = master [ + {reference.columns.map(x => x.baseName).join(', ')}] +
+
+ dispatch('close')}>Close +
+ + diff --git a/packages/web/src/datagrid/ReferenceManager.svelte b/packages/web/src/datagrid/ReferenceManager.svelte index d54bbc0b7..4534c81c5 100644 --- a/packages/web/src/datagrid/ReferenceManager.svelte +++ b/packages/web/src/datagrid/ReferenceManager.svelte @@ -12,6 +12,7 @@ export let managerSize; export let display: GridDisplay; + export let onReferenceClick = (ref) => {}; const dispatch = createEventDispatcher(); @@ -31,7 +32,7 @@