From 8c7e34a6debbdcc918a95138bd4f246d075e8a78 Mon Sep 17 00:00:00 2001 From: t8y2 <1156263951@qq.com> Date: Fri, 10 Jul 2026 16:10:54 +0800 Subject: [PATCH] fix(mysql): edit enum column values --- apps/desktop/src/components/grid/DataGrid.vue | 35 +++++++++-- .../src/components/grid/EnumCellEditor.vue | 41 +++++++++--- .../structure/TableStructureEditor.vue | 55 +++++++++++++++- .../src/composables/useDataGridEditor.ts | 7 ++- apps/desktop/src/i18n/locales/en.ts | 6 ++ apps/desktop/src/i18n/locales/zh-CN.ts | 6 ++ .../table/tableStructureEditorState.spec.ts | 62 ++++++++++++++++++- .../src/lib/dataGrid/dataGridColumnType.ts | 4 ++ .../src/lib/table/tableColumnTemplates.ts | 1 + .../src/lib/table/tableStructureEditorSql.ts | 1 + .../lib/table/tableStructureEditorState.ts | 26 ++++++-- packages/app-tests/dataGridColumnType.test.ts | 8 ++- packages/app-tests/dataGridEditor.test.ts | 60 ++++++++++-------- .../tableStructureEditorState.test.ts | 25 ++++++++ 14 files changed, 283 insertions(+), 54 deletions(-) diff --git a/apps/desktop/src/components/grid/DataGrid.vue b/apps/desktop/src/components/grid/DataGrid.vue index f2cf7caf15..5f2d0e3511 100644 --- a/apps/desktop/src/components/grid/DataGrid.vue +++ b/apps/desktop/src/components/grid/DataGrid.vue @@ -90,7 +90,7 @@ import { createColumnDrafts } from "@/lib/table/tableStructureEditorState"; import type { BuildSingleColumnAlterSqlOptions } from "@/lib/table/tableStructureEditorSql"; import { buildTableSelectSql, quoteTableIdentifier } from "@/lib/table/tableSelectSql"; import { uuid } from "@/lib/common/utils"; -import { resolveHeaderColumnType } from "@/lib/dataGrid/dataGridColumnType"; +import { compactHeaderColumnType, resolveHeaderColumnType } from "@/lib/dataGrid/dataGridColumnType"; import { canEditExistingTableRows, canInsertTableRows, canUseKeylessRowPredicate, hiveTablePropertiesIndicateTransactional, isClickHouseExistingRowReadonlyColumn, isHiddenGridColumn, isTdengineExistingRowReadonlyColumn, usesSyntheticRowIdKey } from "@/lib/table/tableEditing"; import { buildDataGridColumnDistinctValuesSql, buildDataGridContextFilterCondition, buildDataGridCountSql, buildHiveTablePropertiesSql, type DataGridContextFilterMode } from "@/lib/dataGrid/dataGridSql"; import { @@ -379,7 +379,7 @@ function headerColumnType(column: string, actualColIdx: number): string { resultColumnTypes: props.result.column_types, actualColIdx, }); - return resolved ? shortTypeName(resolved) : ""; + return resolved ? shortTypeName(compactHeaderColumnType(resolved)) : ""; } function shortTypeName(t: string): string { @@ -4124,6 +4124,11 @@ function isEnumGridColumnNullable(columnIndex: number): boolean { return tableColumnForGridColumn(columnIndex)?.is_nullable ?? false; } +function isEnumEditorInitialNull(rowId: number | undefined, columnIndex: number): boolean { + if (rowId === undefined) return false; + return getRowItem(rowId)?.data[columnIndex] === null; +} + function cellEditInputModeForColumn(columnIndex: number): "decimal" | "numeric" | undefined { const dataType = normalizedColumnDataType(tableColumnForGridColumn(columnIndex)); if (isIntegerColumnType(dataType)) return "numeric"; @@ -6752,8 +6757,8 @@ function deleteCurrentRow(): boolean { return true; } -function commitGridEdit() { - void commitEditAndMaybeAutoSave().finally(() => nextTick(() => gridRef.value?.focus({ preventScroll: true }))); +function commitGridEdit(value?: string | null) { + void commitEditAndMaybeAutoSave(value === undefined ? undefined : { explicitValue: value }).finally(() => nextTick(() => gridRef.value?.focus({ preventScroll: true }))); } async function commitEditFromCellBlur() { @@ -9257,7 +9262,16 @@ const gridContextMenuItems = computed(() => { @cancel="cancelEdit" @commit="commitGridEdit" /> - +