diff --git a/packages/datalib/src/index.ts b/packages/datalib/src/index.ts
index 044727893..2e1788de6 100644
--- a/packages/datalib/src/index.ts
+++ b/packages/datalib/src/index.ts
@@ -11,3 +11,4 @@ export * from './MacroDefinition';
export * from './runMacro';
export * from './FormViewDisplay';
export * from './TableFormViewDisplay';
+export * from './CollectionGridDisplay';
diff --git a/packages/web/src/datagrid/ChangeSetGrider.ts b/packages/web/src/datagrid/ChangeSetGrider.ts
index 2136789a6..af3167d58 100644
--- a/packages/web/src/datagrid/ChangeSetGrider.ts
+++ b/packages/web/src/datagrid/ChangeSetGrider.ts
@@ -39,7 +39,7 @@ export default class ChangeSetGrider extends Grider {
) {
super();
this.changeSet = changeSetState && changeSetState.value;
- this.insertedRows = getChangeSetInsertedRows(this.changeSet, display.baseTable);
+ this.insertedRows = getChangeSetInsertedRows(this.changeSet, display?.baseTable);
this.setChangeSet = value => dispatchChangeSet({ type: 'set', value });
this.rowCacheIndexes = new Set();
this.rowDataCache = {};
@@ -66,7 +66,7 @@ export default class ChangeSetGrider extends Grider {
if (this.rowCacheIndexes.has(index)) return;
const row = this.getRowSource(index);
const insertedRowIndex = this.getInsertedRowIndex(index);
- const rowDefinition = this.display.getChangeSetRow(row, insertedRowIndex);
+ const rowDefinition = this.display?.getChangeSetRow(row, insertedRowIndex);
const [matchedField, matchedChangeSetItem] = findExistingChangeSetItem(this.changeSet, rowDefinition);
const rowUpdated = matchedChangeSetItem
? { ...row, ...matchedChangeSetItem.fields }
diff --git a/packages/web/src/datagrid/ColumnManager.svelte b/packages/web/src/datagrid/ColumnManager.svelte
index 745491dcf..985542564 100644
--- a/packages/web/src/datagrid/ColumnManager.svelte
+++ b/packages/web/src/datagrid/ColumnManager.svelte
@@ -21,8 +21,8 @@
{#each display
- .getColumns(filter)
- .filter(column => filterName(filter, column.columnName)) as column (column.uniqueName)}
+ ?.getColumns(filter)
+ ?.filter(column => filterName(filter, column.columnName)) || [] as column (column.uniqueName)}
{/each}
diff --git a/packages/web/src/datagrid/DataGridCore.svelte b/packages/web/src/datagrid/DataGridCore.svelte
index 520dc14ec..38876f92f 100644
--- a/packages/web/src/datagrid/DataGridCore.svelte
+++ b/packages/web/src/datagrid/DataGridCore.svelte
@@ -494,7 +494,7 @@
// $: visibleRowCountUpperBound = 25;
// $: console.log('grider', grider);
- $: columns = display.allColumns;
+ $: columns = display?.allColumns || [];
$: columnSizes = countColumnSizes(grider, columns, containerWidth, display);
@@ -551,7 +551,7 @@
// $: console.log('DISPLAY.config', display.config);
$: {
- if (display.groupColumns && display.baseTable) {
+ if (display?.groupColumns && display?.baseTable) {
onReferenceClick({
referenceId: stableStringify(display && display.groupColumns),
schemaName: display.baseTable.schemaName,
@@ -1026,7 +1026,7 @@
}
-{#if !isDynamicStructure && (!columns || columns.length == 0)}
+{#if !display || (!isDynamicStructure && (!columns || columns.length == 0))}
{:else if errorMessage}
diff --git a/packages/web/src/datagrid/LoadingDataGridCore.svelte b/packages/web/src/datagrid/LoadingDataGridCore.svelte
index 78ad81328..9005d18c7 100644
--- a/packages/web/src/datagrid/LoadingDataGridCore.svelte
+++ b/packages/web/src/datagrid/LoadingDataGridCore.svelte
@@ -99,12 +99,12 @@
// loadNextDataToken = 0;
}
- $: if (display.cache.refreshTime > loadedTime) {
+ $: if (display?.cache?.refreshTime > loadedTime) {
reload();
}
$: {
- if (masterLoadedTime && masterLoadedTime > loadedTime) {
+ if (masterLoadedTime && masterLoadedTime > loadedTime && display) {
display.reload();
}
}
diff --git a/packages/web/src/datagrid/gridutil.ts b/packages/web/src/datagrid/gridutil.ts
index d1bce1f50..2bf4529e1 100644
--- a/packages/web/src/datagrid/gridutil.ts
+++ b/packages/web/src/datagrid/gridutil.ts
@@ -6,7 +6,7 @@ import Grider from './Grider';
export function countColumnSizes(grider: Grider, columns, containerWidth, display: GridDisplay) {
const columnSizes = new SeriesSizes();
- if (!grider || !columns) return columnSizes;
+ if (!grider || !columns || !display) return columnSizes;
let canvas = document.createElement('canvas');
let context = canvas.getContext('2d');
diff --git a/packages/web/src/tabs/CollectionDataTab.svelte b/packages/web/src/tabs/CollectionDataTab.svelte
index 5a2f82e9e..354f2b147 100644
--- a/packages/web/src/tabs/CollectionDataTab.svelte
+++ b/packages/web/src/tabs/CollectionDataTab.svelte
@@ -5,19 +5,22 @@
-
diff --git a/packages/web/src/utility/metadataLoaders.ts b/packages/web/src/utility/metadataLoaders.ts
index e7e1056af..e8fb11d7f 100644
--- a/packages/web/src/utility/metadataLoaders.ts
+++ b/packages/web/src/utility/metadataLoaders.ts
@@ -268,6 +268,11 @@ export function useViewInfo(args) {
return useDbCore(args, 'views');
}
+/** @returns {import('dbgate-types').CollectionInfo} */
+export function useCollectionInfo(args) {
+ return useDbCore(args, 'collections');
+}
+
export function getSqlObjectInfo(args) {
return getDbCore(args);
}