diff --git a/packages/datalib/src/CollectionGridDisplay.ts b/packages/datalib/src/CollectionGridDisplay.ts
index 3a1c79c6d..133490238 100644
--- a/packages/datalib/src/CollectionGridDisplay.ts
+++ b/packages/datalib/src/CollectionGridDisplay.ts
@@ -70,9 +70,14 @@ function getDisplayColumn(basePath, columnName, display) {
export function analyseCollectionDisplayColumns(rows, display) {
const res = [];
+ const addedColumns = display?.config?.addedColumns;
for (const row of rows || []) {
getColumnsForObject([], row, res, display);
}
+ for (const added of addedColumns || []) {
+ if (res.find(x => x.uniqueName == added)) continue;
+ res.push(getDisplayColumn([], added, display));
+ }
return (
res.map(col => ({
...col,
diff --git a/packages/datalib/src/GridDisplay.ts b/packages/datalib/src/GridDisplay.ts
index 05580b5f0..4f184318e 100644
--- a/packages/datalib/src/GridDisplay.ts
+++ b/packages/datalib/src/GridDisplay.ts
@@ -92,6 +92,10 @@ export abstract class GridDisplay {
}
}
+ addDynamicColumn(name: string) {
+ this.includeInColumnSet('addedColumns', name, true);
+ }
+
focusColumn(uniqueName: string) {
this.setConfig(cfg => ({
...cfg,
diff --git a/packages/web/src/datagrid/ColumnManager.svelte b/packages/web/src/datagrid/ColumnManager.svelte
index fead4397e..ef6ad6256 100644
--- a/packages/web/src/datagrid/ColumnManager.svelte
+++ b/packages/web/src/datagrid/ColumnManager.svelte
@@ -7,17 +7,34 @@
import SearchBoxWrapper from '../elements/SearchBoxWrapper.svelte';
import SearchInput from '../elements/SearchInput.svelte';
+ import InputTextModal from '../modals/InputTextModal.svelte';
+ import { showModal } from '../modals/modalTools';
import ColumnManagerRow from './ColumnManagerRow.svelte';
export let managerSize;
export let display: GridDisplay;
export let isJsonView = false;
+ export let isDynamicStructure = false;
let filter;
+ {#if isDynamicStructure && !isJsonView}
+ {
+ showModal(InputTextModal, {
+ value: '',
+ label: 'Column name',
+ header: 'Add new column',
+ onConfirm: name => {
+ display.addDynamicColumn(name);
+ },
+ });
+ }}>Add
+ {/if}
display.hideAllColumns()}>Hide
display.showAllColumns()}>Show
diff --git a/packages/web/src/datagrid/DataGrid.svelte b/packages/web/src/datagrid/DataGrid.svelte
index 498825572..fddcc2bb9 100644
--- a/packages/web/src/datagrid/DataGrid.svelte
+++ b/packages/web/src/datagrid/DataGrid.svelte
@@ -153,7 +153,7 @@
height="45%"
show={(!freeTableColumn || isDynamicStructure) && !isFormView}
>
-
+