From ddc3686a595123bd95116b31b79bd1c06a475e9b Mon Sep 17 00:00:00 2001 From: Pranav C Date: Wed, 3 Jan 2024 12:46:16 +0000 Subject: [PATCH] fix: reload only virtual column value in expanded form when triggered by links --- .../smartsheet/expanded-form/index.vue | 2 +- .../composables/useExpandedFormStore.ts | 19 ++++++++++++++++--- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/packages/nc-gui/components/smartsheet/expanded-form/index.vue b/packages/nc-gui/components/smartsheet/expanded-form/index.vue index 73d4b453a6..06af4d62e5 100644 --- a/packages/nc-gui/components/smartsheet/expanded-form/index.vue +++ b/packages/nc-gui/components/smartsheet/expanded-form/index.vue @@ -278,7 +278,7 @@ const reloadHook = createEventHook() reloadHook.on(() => { reloadParentRowHook?.trigger(false) if (isNew.value) return - _loadRow() + _loadRow(null, true) }) provide(ReloadRowDataHookInj, reloadHook) diff --git a/packages/nc-gui/composables/useExpandedFormStore.ts b/packages/nc-gui/composables/useExpandedFormStore.ts index fc42da3bf5..bbb1e4efe8 100644 --- a/packages/nc-gui/composables/useExpandedFormStore.ts +++ b/packages/nc-gui/composables/useExpandedFormStore.ts @@ -1,4 +1,4 @@ -import { UITypes, ViewTypes } from 'nocodb-sdk' +import { UITypes, ViewTypes, isVirtualCol } from 'nocodb-sdk' import type { AuditType, ColumnType, TableType } from 'nocodb-sdk' import type { Ref } from 'vue' import dayjs from 'dayjs' @@ -295,8 +295,8 @@ const [useProvideExpandedFormStore, useExpandedFormStore] = useInjectionState((m changedColumns.value = new Set() } - const loadRow = async (rowId?: string) => { - const record = await $api.dbTableRow.read( + const loadRow = async (rowId?: string, onlyVirtual = false) => { + let record = await $api.dbTableRow.read( NOCO, // todo: base_id missing on view type (base?.value?.id || (sharedView.value?.view as any)?.base_id) as string, @@ -307,6 +307,19 @@ const [useProvideExpandedFormStore, useExpandedFormStore] = useInjectionState((m }, ) + // update only virtual columns value if `onlyVirtual` is true + if (onlyVirtual) { + record = { + ...row.value.row, + ...meta.value.columns.reduce((partialRecord, col) => { + if (isVirtualCol(col) && col.title in record) { + partialRecord[col.title] = record[col.title] + } + return partialRecord + }, {} as Record), + } + } + Object.assign(row.value, { row: record, oldRow: { ...record },