From e1bee8a068f7c04eea88894db5c3b4b87f6ddd43 Mon Sep 17 00:00:00 2001 From: mertmit Date: Fri, 17 Feb 2023 15:10:27 +0300 Subject: [PATCH] fix: map first column as display value if no pk Signed-off-by: mertmit --- .../src/lib/meta/api/helpers/populateMeta.ts | 2 ++ .../meta/helpers/mapDefaultDisplayValue.ts | 24 ++++++++----------- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/packages/nocodb/src/lib/meta/api/helpers/populateMeta.ts b/packages/nocodb/src/lib/meta/api/helpers/populateMeta.ts index ff7861a529..4fe72f70ac 100644 --- a/packages/nocodb/src/lib/meta/api/helpers/populateMeta.ts +++ b/packages/nocodb/src/lib/meta/api/helpers/populateMeta.ts @@ -228,6 +228,8 @@ export async function populateMeta(base: Base, project: Project): Promise { return async () => { const columns = (await sqlClient.columnList({ tn: table.table_name })) ?.data?.list; + + mapDefaultDisplayValue(columns); /* create nc_models and its rows if it doesn't exists */ models2[table.table_name] = await Model.insert(project.id, base.id, { diff --git a/packages/nocodb/src/lib/meta/helpers/mapDefaultDisplayValue.ts b/packages/nocodb/src/lib/meta/helpers/mapDefaultDisplayValue.ts index 8f12d40d13..3fe911f447 100644 --- a/packages/nocodb/src/lib/meta/helpers/mapDefaultDisplayValue.ts +++ b/packages/nocodb/src/lib/meta/helpers/mapDefaultDisplayValue.ts @@ -4,31 +4,27 @@ export default function mapDefaultDisplayValue( columnsArr: Array ): void | T { if (!columnsArr.some((column) => column.pv)) { - let len = columnsArr.length; - let pkIndex = -1; - - while (len--) { - if (columnsArr[len].pk) { - pkIndex = len; - break; - } - } + const pkIndex = columnsArr.findIndex((column) => column.pk) // if PK is at the end of table if (pkIndex === columnsArr.length - 1) { if (pkIndex > 0) { columnsArr[pkIndex - 1].pv = true; return columnsArr[pkIndex - 1]; + } else if (columnsArr.length > 0) { + columnsArr[0].pv = true; + return columnsArr[0]; } - } // pk is not at the end of table - else if (pkIndex > -1) { + } else if (pkIndex > -1) { columnsArr[pkIndex + 1].pv = true; return columnsArr[pkIndex + 1]; - } // no pk at all - else { - // todo: + } else { + if (columnsArr.length > 0) { + columnsArr[0].pv = true; + return columnsArr[0]; + } } } }