From 2cc8d78e641617c18c6d26b0532380a022b03da0 Mon Sep 17 00:00:00 2001 From: zipg Date: Thu, 20 Aug 2026 16:17:58 +0800 Subject: [PATCH] fix(grid): restore data grid rendering --- apps/desktop/src/components/grid/DataGrid.vue | 16 ++++++++-------- .../DataGridInitializationOrder.spec.ts | 8 ++++++++ 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/apps/desktop/src/components/grid/DataGrid.vue b/apps/desktop/src/components/grid/DataGrid.vue index 287a0cc1a7..8648401e1b 100644 --- a/apps/desktop/src/components/grid/DataGrid.vue +++ b/apps/desktop/src/components/grid/DataGrid.vue @@ -436,6 +436,14 @@ const props = withDefaults(defineProps(), { allowDeleteRows: undefined, }); +const tableColumnsByResultIndex = computed(() => + resolveDataGridColumnsByResultIndex({ + resultColumns: props.result.columns, + sourceColumns: props.sourceColumns, + tableColumns: props.tableMeta?.columns ?? [], + }), +); + const dataGridTraceId = uuid().slice(0, 8); const dataGridCreatedAt = performance.now(); const dataGridElapsed = () => `${Math.round(performance.now() - dataGridCreatedAt)}ms`; @@ -3777,14 +3785,6 @@ function measureCellTextWidthCached(text: string, font: string): number { return width; } -const tableColumnsByResultIndex = computed(() => - resolveDataGridColumnsByResultIndex({ - resultColumns: props.result.columns, - sourceColumns: props.sourceColumns, - tableColumns: props.tableMeta?.columns ?? [], - }), -); - function tableColumnForGridColumn(columnIndex: number): ColumnInfo | undefined { return tableColumnsByResultIndex.value[columnIndex]; } diff --git a/apps/desktop/src/components/grid/__tests__/DataGridInitializationOrder.spec.ts b/apps/desktop/src/components/grid/__tests__/DataGridInitializationOrder.spec.ts index cdb31cbb75..0a0d701154 100644 --- a/apps/desktop/src/components/grid/__tests__/DataGridInitializationOrder.spec.ts +++ b/apps/desktop/src/components/grid/__tests__/DataGridInitializationOrder.spec.ts @@ -4,6 +4,14 @@ import { describe, expect, it } from "vitest"; const dataGridSource = readFileSync(new URL("../DataGrid.vue", import.meta.url), "utf8"); describe("DataGrid setup initialization order", () => { + it("initializes table column metadata before column width measurement", () => { + const tableColumnMetadataDeclaration = dataGridSource.indexOf("const tableColumnsByResultIndex = computed"); + const columnResizeInitialization = dataGridSource.indexOf("useDataGridColumnResize({"); + + expect(tableColumnMetadataDeclaration).toBeGreaterThanOrEqual(0); + expect(columnResizeInitialization).toBeGreaterThan(tableColumnMetadataDeclaration); + }); + it("initializes where-search capability before the immediate filter preview watcher", () => { const canUseWhereSearchDeclaration = dataGridSource.indexOf("const canUseWhereSearch = computed"); const filterPreviewDeclaration = dataGridSource.indexOf("const filterPreviewVisible = computed");