From c68a5adb25b0d7f47cc60f879f6e4d69db3c42d9 Mon Sep 17 00:00:00 2001 From: zipg Date: Tue, 28 Jul 2026 01:22:07 +0800 Subject: [PATCH] feat(grid): improve WHERE condition completion --- apps/desktop/src/components/grid/DataGrid.vue | 4 +- .../grid/DataGridConditionEditor.vue | 69 ++++- .../components/grid/DataGridQueryControls.vue | 3 + .../__tests__/DataGridConditionEditor.spec.ts | 102 +++++++ .../useDataGridConditionEditor.spec.ts | 177 +++++++++++- .../composables/useDataGridConditionEditor.ts | 256 +++++++++++++++--- .../dataGridConditionCompletion.spec.ts | 10 +- ...ataGridConditionSuggestionPosition.spec.ts | 3 +- .../dataGrid/dataGridConditionCompletion.ts | 6 + .../dataGridConditionSuggestionPosition.ts | 2 +- 10 files changed, 576 insertions(+), 56 deletions(-) create mode 100644 apps/desktop/src/components/grid/__tests__/DataGridConditionEditor.spec.ts diff --git a/apps/desktop/src/components/grid/DataGrid.vue b/apps/desktop/src/components/grid/DataGrid.vue index be0573019..e12cf79a3 100644 --- a/apps/desktop/src/components/grid/DataGrid.vue +++ b/apps/desktop/src/components/grid/DataGrid.vue @@ -216,7 +216,7 @@ import { supportsTableStructureEditing } from "@/lib/database/databaseCapabiliti import { rememberDataGridConditionHistory } from "@/lib/dataGrid/dataGridConditionHistory"; import { restoreDataGridLocalColumnFilters, serializeDataGridLocalColumnFilters } from "@/lib/dataGrid/dataGridLocalColumnFilterState"; import { effectiveDatabaseTypeForConnection } from "@/lib/database/jdbcDialect"; -import { dataGridConditionColumnOptions } from "@/lib/dataGrid/dataGridConditionCompletion"; +import { dataGridConditionColumnOptions, dataGridConditionIdentifierQuote } from "@/lib/dataGrid/dataGridConditionCompletion"; import { isMacOS } from "@/lib/backend/platform"; import { appendDebugLog, isDebugLoggingEnabled } from "@/lib/backend/debugLog"; import { formatShortcut } from "@/lib/editor/shortcutRegistry"; @@ -615,6 +615,7 @@ const { searchText, deferredSearchText: deferredClientSearchText, overlayVisible const orderByInput = ref(props.initialOrderByInput ?? ""); const whereFilterInput = ref(props.initialWhereInput ?? ""); const conditionColumns = computed(() => dataGridConditionColumnOptions(props.tableMeta?.columns ?? props.result.columns, resolvedDatabaseType.value)); +const conditionIdentifierQuote = computed(() => dataGridConditionIdentifierQuote(resolvedDatabaseType.value, connectionStore.connectionIdentifierQuote?.(props.connectionId))); const conditionHistoryScope = computed(() => ({ connectionId: props.connectionId, database: props.database, @@ -7774,6 +7775,7 @@ const gridContextMenuItems = computed(() => { v-model:filter-builder-open="filterBuilderOpen" :columns="props.tableMeta?.columns.map((column) => column.name) ?? props.result.columns" :condition-columns="conditionColumns" + :identifier-quote="conditionIdentifierQuote" :history-scope="conditionHistoryScope" :can-use-where-search="canUseWhereSearch" :compact="compactDataGridToolbar" diff --git a/apps/desktop/src/components/grid/DataGridConditionEditor.vue b/apps/desktop/src/components/grid/DataGridConditionEditor.vue index 758d3630e..e81bbfa4d 100644 --- a/apps/desktop/src/components/grid/DataGridConditionEditor.vue +++ b/apps/desktop/src/components/grid/DataGridConditionEditor.vue @@ -1,7 +1,7 @@