From b91cf18aeedc343acd6ffd59cfd969cacd532bf4 Mon Sep 17 00:00:00 2001 From: Jan Prochazka Date: Sat, 6 Mar 2021 11:35:15 +0100 Subject: [PATCH] master/detail working --- packages/web/src/datagrid/DataGridCore.svelte | 11 ++ .../src/datagrid/LoadingDataGridCore.svelte | 17 ++- .../web/src/datagrid/ReferenceHeader.svelte | 39 ++++++ .../web/src/datagrid/ReferenceManager.svelte | 7 +- .../web/src/datagrid/TableDataGrid.svelte | 122 +++++++++++++++++- packages/web/src/tabs/TableDataTab.svelte | 6 +- 6 files changed, 190 insertions(+), 12 deletions(-) create mode 100644 packages/web/src/datagrid/ReferenceHeader.svelte 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 @@