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 @@
+
+
+
- dispatch('referenceclick', {
+ onReferenceClick({
schemaName: fk.refSchemaName,
pureName: fk.refTableName,
columns: fk.columns.map(col => ({
@@ -50,12 +51,12 @@
{/if}
{#if dependencies.length > 0}
-
References tables ({dependencies.length})
+
Dependend tables ({dependencies.length})
{#each dependencies.filter(fk => filterName(filter, fk.pureName)) as fk}
- dispatch('referenceclick', {
+ onReferenceClick({
schemaName: fk.schemaName,
pureName: fk.pureName,
columns: fk.columns.map(col => ({
diff --git a/packages/web/src/datagrid/TableDataGrid.svelte b/packages/web/src/datagrid/TableDataGrid.svelte
index 0089a6496..eafe0a352 100644
--- a/packages/web/src/datagrid/TableDataGrid.svelte
+++ b/packages/web/src/datagrid/TableDataGrid.svelte
@@ -1,24 +1,36 @@
-
+
+
+ setChildConfig(createGridConfig(), reference)}
+ />
+
+
+ {#if reference}
+
+
+ {#key `${reference.schemaName}.${reference.pureName}`}
+
+ {/key}
+
+ {/if}
+
+
+
+
diff --git a/packages/web/src/tabs/TableDataTab.svelte b/packages/web/src/tabs/TableDataTab.svelte
index 72b953679..99c337988 100644
--- a/packages/web/src/tabs/TableDataTab.svelte
+++ b/packages/web/src/tabs/TableDataTab.svelte
@@ -2,6 +2,9 @@
import App from '../App.svelte';
import TableDataGrid from '../datagrid/TableDataGrid.svelte';
import useGridConfig from '../utility/useGridConfig';
+ import { createGridCache, createGridConfig, TableFormViewDisplay, TableGridDisplay } from 'dbgate-datalib';
+ import { findEngineDriver } from 'dbgate-tools';
+ import { writable } from 'svelte/store';
export let tabid;
export let conid;
@@ -10,6 +13,7 @@
export let pureName;
const config = useGridConfig(tabid);
+ const cache = writable(createGridCache());
-
+