From 09259068e0f332e3ea1b0c2d9c75650f1c91638a Mon Sep 17 00:00:00 2001 From: Pranav C Date: Fri, 3 May 2024 10:32:12 +0000 Subject: [PATCH] feat: skip showing if gallery/kanban have less than 3 visible non-system columns --- packages/nocodb/src/models/View.ts | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/packages/nocodb/src/models/View.ts b/packages/nocodb/src/models/View.ts index 2e65dde968..4b764e58dd 100644 --- a/packages/nocodb/src/models/View.ts +++ b/packages/nocodb/src/models/View.ts @@ -545,6 +545,12 @@ export default class View implements ViewType { }; const views = await this.list(param.fk_model_id, ncMeta); + const tableColumns = await Column.list( + { fk_model_id: param.fk_model_id }, + ncMeta, + ); + const colIdMap = new Map(tableColumns.map((c) => [c.id, c])); + for (const view of views) { const modifiedInsertObj = { ...insertObj, @@ -553,7 +559,25 @@ export default class View implements ViewType { if (param.column_show?.view_id === view.id) { modifiedInsertObj.show = true; - } else if (view.type !== ViewTypes.FORM && !view.uuid) { + } else if (view.uuid) { + // if view is shared, then keep the show state as it is + } + // if gallery/kanban view, show only 3 columns + else if (view.type === ViewTypes.GALLERY) { + const visibleColumnsCount = ( + await GalleryViewColumn.list(view.id, ncMeta) + )?.filter( + (c) => c.show && !isSystemColumn(colIdMap.get(c.fk_column_id)), + ).length; + modifiedInsertObj.show = visibleColumnsCount < 3; + } else if (view.type === ViewTypes.KANBAN) { + const visibleColumnsCount = ( + await KanbanViewColumn.list(view.id, ncMeta) + )?.filter( + (c) => c.show && !isSystemColumn(colIdMap.get(c.fk_column_id)), + ).length; + modifiedInsertObj.show = visibleColumnsCount < 3; + } else if (view.type !== ViewTypes.FORM) { modifiedInsertObj.show = true; }