From 6975aa553a2200851d06d3af4989cf0415a4f330 Mon Sep 17 00:00:00 2001 From: DarkPhoenix2704 Date: Mon, 2 Oct 2023 11:28:37 +0000 Subject: [PATCH] fix: bug in fields tab --- .../smartsheet/column/EditOrAdd.vue | 2 +- .../components/smartsheet/details/Fields.vue | 207 +++++++++--------- packages/nc-gui/windi.config.ts | 13 ++ 3 files changed, 120 insertions(+), 102 deletions(-) diff --git a/packages/nc-gui/components/smartsheet/column/EditOrAdd.vue b/packages/nc-gui/components/smartsheet/column/EditOrAdd.vue index 764793c103..43d12bb06f 100644 --- a/packages/nc-gui/components/smartsheet/column/EditOrAdd.vue +++ b/packages/nc-gui/components/smartsheet/column/EditOrAdd.vue @@ -228,7 +228,7 @@ if (props.fromTableExplorer) {
{ const onFieldUpdate = (state: TableExplorerColumn) => { const col = fields.value.find((col) => compareCols(col, state)) if (!col) return - const diffs = diff(col, state) if (Object.keys(diffs).length === 0 || (Object.keys(diffs).length === 1 && 'altered' in diffs)) { ops.value = ops.value.filter((op) => op.op === 'add' || !compareCols(op.column, state)) } else { const field = ops.value.find((op) => compareCols(op.column, state)) const movField = moveOps.value.find((op) => compareCols(op.column, state)) + const isNewField = newFields.value.find((op) => compareCols(op, state)) + + if (isNewField) { + newFields.value = newFields.value.map((op) => { + if (compareCols(op, state)) { + ops.value = ops.value.filter((op) => op.op === 'add' && !compareCols(op.column, state)) + ops.value.push({ + op: 'add', + column: state, + }) + return state + } + return op + }) + return + } + if (field && !movField) { field.column = state - } else if (!field && movField) { - ops.value.push({ - op: 'update', - column: state, - }) } else { ops.value.push({ op: 'update', - column: { - ...state, - column_order: { - order: movField?.order || getFieldOrder(state), - view_id: view.value?.id as string, - }, - }, + column: state, }) } } @@ -376,6 +381,35 @@ const onMove = (_event: { moved: { newIndex: number; oldIndex: number } }) => { } } +const isColumnValid = (column: TableExplorerColumn) => { + const isNewField = newFields.value.find((op) => compareCols(op, column)) + if (!isNewField) return true + if (!column.title) { + return false + } + if (column.uidt === UITypes.Links || column.uidt === UITypes.LinkToAnotherRecord) { + if (!column.childColumn || !column.childTable || !column.childId) { + return false + } + } + if (column.uidt === UITypes.Lookup) { + if (!column.fk_relation_column_id || !column.fk_lookup_column_id) { + return false + } + } + if (column.uidt === UITypes.Rollup) { + if (!column.fk_relation_column_id || !column.fk_rollup_column_id || !column.rollup_function) { + return false + } + } + if (column.uidt === UITypes.Formula) { + if (!column.formula_raw) { + return false + } + } + return true +} + const recoverField = (state: TableExplorerColumn) => { const field = ops.value.find((op) => compareCols(op.column, state)) if (field) { @@ -524,7 +558,7 @@ onMounted(async () => {