From ad6591aba5c9bdc2b1a3833e22bfaaae642b3357 Mon Sep 17 00:00:00 2001 From: Pranav C Date: Fri, 3 May 2024 10:32:11 +0000 Subject: [PATCH 1/4] feat: show link column in referenced table views if it's not shared or not form view --- packages/nocodb/src/models/View.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/nocodb/src/models/View.ts b/packages/nocodb/src/models/View.ts index ab3453b1fe..2e65dde968 100644 --- a/packages/nocodb/src/models/View.ts +++ b/packages/nocodb/src/models/View.ts @@ -553,6 +553,8 @@ 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) { + modifiedInsertObj.show = true; } if (param.column_order?.view_id === view.id) { From 09259068e0f332e3ea1b0c2d9c75650f1c91638a Mon Sep 17 00:00:00 2001 From: Pranav C Date: Fri, 3 May 2024 10:32:12 +0000 Subject: [PATCH 2/4] 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; } From 303fc38f690b940068ad64a73ae8cedcde4f1479 Mon Sep 17 00:00:00 2001 From: Pranav C Date: Fri, 3 May 2024 10:32:13 +0000 Subject: [PATCH 3/4] feat: skip showing if gallery/kanban have less than 3 visible non-system columns --- packages/nocodb/src/models/View.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/nocodb/src/models/View.ts b/packages/nocodb/src/models/View.ts index 4b764e58dd..97a12df9b1 100644 --- a/packages/nocodb/src/models/View.ts +++ b/packages/nocodb/src/models/View.ts @@ -549,6 +549,7 @@ export default class View implements ViewType { { fk_model_id: param.fk_model_id }, ncMeta, ); + // keep a map of column id to column object for easy access const colIdMap = new Map(tableColumns.map((c) => [c.id, c])); for (const view of views) { @@ -562,7 +563,7 @@ export default class View implements ViewType { } else if (view.uuid) { // if view is shared, then keep the show state as it is } - // if gallery/kanban view, show only 3 columns + // if gallery/kanban view, show only 3 columns(excluding system columns) else if (view.type === ViewTypes.GALLERY) { const visibleColumnsCount = ( await GalleryViewColumn.list(view.id, ncMeta) From 04b8aa80f2275666c6ae1bbf39ad40a74b99de3e Mon Sep 17 00:00:00 2001 From: Raju Udava <86527202+dstala@users.noreply.github.com> Date: Fri, 3 May 2024 10:32:13 +0000 Subject: [PATCH 4/4] fix: PW fix --- .../tests/db/columns/columnLinkToAnotherRecord.spec.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/tests/playwright/tests/db/columns/columnLinkToAnotherRecord.spec.ts b/tests/playwright/tests/db/columns/columnLinkToAnotherRecord.spec.ts index ec65868aa9..69c867eed9 100644 --- a/tests/playwright/tests/db/columns/columnLinkToAnotherRecord.spec.ts +++ b/tests/playwright/tests/db/columns/columnLinkToAnotherRecord.spec.ts @@ -59,8 +59,9 @@ test.describe('LTAR create & update', () => { // Verify fields and toggle the visibility await dashboard.grid.toolbar.clickFields(); for (const title of ['Sheet1', 'Sheet1s']) { - await dashboard.grid.toolbar.fields.verify({ title, checked: false }); - await dashboard.grid.toolbar.fields.click({ title, isLocallySaved: false }); + // verify that fields are enabled + await dashboard.grid.toolbar.fields.verify({ title, checked: true }); + // await dashboard.grid.toolbar.fields.click({ title, isLocallySaved: false }); } await dashboard.grid.toolbar.clickFields(); @@ -157,8 +158,8 @@ test.describe('LTAR create & update', () => { // Verify fields and toggle the visibility await dashboard.grid.toolbar.clickFields(); - await dashboard.grid.toolbar.fields.verify({ title: 'Sheet2', checked: false }); - await dashboard.grid.toolbar.fields.click({ title: 'Sheet2', isLocallySaved: false }); + await dashboard.grid.toolbar.fields.verify({ title: 'Sheet2', checked: true }); + // await dashboard.grid.toolbar.fields.click({ title: 'Sheet2', isLocallySaved: false }); await dashboard.grid.toolbar.clickFields(); const expected2 = [