From 3e0430ed9958a91a2d2fae4963c4e6cdeb860a1e Mon Sep 17 00:00:00 2001 From: Fendy Heryanto Date: Thu, 19 Jun 2025 03:31:03 +0000 Subject: [PATCH] when delete or update uidt single select, remove the row coloring --- .../smartsheet/header/DeleteColumnModal.vue | 3 + .../nocodb/src/services/columns.service.ts | 70 ++++++++++++------- .../src/services/view-row-color.service.ts | 6 ++ 3 files changed, 54 insertions(+), 25 deletions(-) diff --git a/packages/nc-gui/components/smartsheet/header/DeleteColumnModal.vue b/packages/nc-gui/components/smartsheet/header/DeleteColumnModal.vue index 8ad9c666a7..3f4180395d 100644 --- a/packages/nc-gui/components/smartsheet/header/DeleteColumnModal.vue +++ b/packages/nc-gui/components/smartsheet/header/DeleteColumnModal.vue @@ -21,6 +21,8 @@ const column = computed(() => { return menuColumn?.value || canvasColumn?.value }) +const { eventBus } = useSmartsheetStoreOrThrow() + const meta = inject(MetaInj, ref()) const { getMeta } = useMetas() @@ -84,6 +86,7 @@ const onDelete = async () => { metaId: meta.value?.id as string, columnIds: new Set([column.value.id as string]), }) + eventBus.emit(SmartsheetStoreEvents.FIELD_UPDATE) $e('a:column:delete') visible.value = false diff --git a/packages/nocodb/src/services/columns.service.ts b/packages/nocodb/src/services/columns.service.ts index 79bf4db955..d7bd8b637f 100644 --- a/packages/nocodb/src/services/columns.service.ts +++ b/packages/nocodb/src/services/columns.service.ts @@ -1,4 +1,5 @@ import { forwardRef, Inject, Injectable } from '@nestjs/common'; +import { pluralize, singularize } from 'inflection'; import { AppEvents, ButtonActionsType, @@ -10,6 +11,7 @@ import { isSystemColumn, isVirtualCol, LongTextAiMetaProp, + NcApiVersion, ncIsNull, ncIsUndefined, partialUpdateAllowedTypes, @@ -22,39 +24,22 @@ import { UITypes, validateFormulaAndExtractTreeWithType, } from 'nocodb-sdk'; -import { pluralize, singularize } from 'inflection'; import rfdc from 'rfdc'; -import { NcApiVersion } from 'nocodb-sdk'; import type { ColumnReqType, LinkToAnotherColumnReqType, LinkToAnotherRecordType, UserType, } from 'nocodb-sdk'; -import type SqlMgrv2 from '~/db/sql-mgr/v2/SqlMgrv2'; -import type { Base, LinkToAnotherRecordColumn } from '~/models'; -import type CustomKnex from '~/db/CustomKnex'; import type { BaseModelSqlv2 } from '~/db/BaseModelSqlv2'; +import type CustomKnex from '~/db/CustomKnex'; +import type SqlMgrv2 from '~/db/sql-mgr/v2/SqlMgrv2'; import type { NcContext, NcRequest } from '~/interface/config'; +import type { Base, LinkToAnotherRecordColumn } from '~/models'; import type { IColumnsService, ReusableParams, } from '~/services/columns.service.type'; -import { Filter, User } from '~/models'; -import { parseMetaProp } from '~/utils/modelUtils'; -import { - BaseUser, - CalendarRange, - Column, - FormulaColumn, - Hook, - KanbanView, - Model, - Script, - Source, - View, -} from '~/models'; -import { AppHooksService } from '~/services/app-hooks/app-hooks.service'; import formulaQueryBuilderv2 from '~/db/formulav2/formulaQueryBuilderv2'; import ProjectMgrv2 from '~/db/sql-mgr/v2/ProjectMgrv2'; import { @@ -69,6 +54,7 @@ import { validateRollupPayload, } from '~/helpers'; import { NcError } from '~/helpers/catchError'; +import { extractProps } from '~/helpers/extractProps'; import getColumnPropsFromUIDT from '~/helpers/getColumnPropsFromUIDT'; import { getUniqueColumnAliasName, @@ -76,16 +62,32 @@ import { } from '~/helpers/getUniqueName'; import mapDefaultDisplayValue from '~/helpers/mapDefaultDisplayValue'; import validateParams from '~/helpers/validateParams'; -import Noco from '~/Noco'; -import NcConnectionMgrv2 from '~/utils/common/NcConnectionMgrv2'; -import { MetaTable } from '~/utils/globals'; import { MetaService } from '~/meta/meta.service'; +import { + BaseUser, + CalendarRange, + Column, + Filter, + FormulaColumn, + Hook, + KanbanView, + Model, + Script, + Source, + User, + View, +} from '~/models'; +import Noco from '~/Noco'; +import { AppHooksService } from '~/services/app-hooks/app-hooks.service'; +import { IFormulaColumnTypeChanger } from '~/services/formula-column-type-changer.types'; +import { ViewRowColorService } from '~/services/view-row-color.service'; +import NcConnectionMgrv2 from '~/utils/common/NcConnectionMgrv2'; import { convertAIRecordTypeToValue, convertValueToAIRecordType, } from '~/utils/dataConversion'; -import { extractProps } from '~/helpers/extractProps'; -import { IFormulaColumnTypeChanger } from '~/services/formula-column-type-changer.types'; +import { MetaTable } from '~/utils/globals'; +import { parseMetaProp } from '~/utils/modelUtils'; export type { ReusableParams } from '~/services/columns.service.type'; @@ -202,6 +204,7 @@ export class ColumnsService implements IColumnsService { protected readonly appHooksService: AppHooksService, @Inject(forwardRef(() => 'FormulaColumnTypeChanger')) protected readonly formulaColumnTypeChanger: IFormulaColumnTypeChanger, + protected readonly viewRowColorService: ViewRowColorService, ) {} async updateFormulas( @@ -1848,6 +1851,16 @@ export class ColumnsService implements IColumnsService { columns: table.columns, }); + if ( + [UITypes.SingleSelect].includes(oldColumn.uidt) && + colBody.uidt !== UITypes.SingleSelect + ) { + await this.viewRowColorService.selectColumnRemovedOrChanged({ + context, + column: oldColumn, + }); + } + if (param.apiVersion === NcApiVersion.V3) { return column; } @@ -3162,6 +3175,13 @@ export class ColumnsService implements IColumnsService { }); } + if ([UITypes.SingleSelect].includes(column.uidt)) { + await this.viewRowColorService.selectColumnRemovedOrChanged({ + context, + column, + }); + } + return table; } diff --git a/packages/nocodb/src/services/view-row-color.service.ts b/packages/nocodb/src/services/view-row-color.service.ts index 188c605598..0764a64876 100644 --- a/packages/nocodb/src/services/view-row-color.service.ts +++ b/packages/nocodb/src/services/view-row-color.service.ts @@ -1,6 +1,7 @@ import { Injectable } from '@nestjs/common'; import type { FilterType, NcContext, RowColoringInfo } from 'nocodb-sdk'; import type { MetaService } from '~/meta/meta.service'; +import type { Column } from '~/models'; @Injectable() export class ViewRowColorService { @@ -57,4 +58,9 @@ export class ViewRowColorService { fk_view_id?: string; ncMeta?: MetaService; }) {} + + async selectColumnRemovedOrChanged(_param: { + context: NcContext; + column: Column; + }) {} }