From 7486d35a0fe0f0ce09c77ce336c5f5948ce77f4f Mon Sep 17 00:00:00 2001 From: t8y2 <1156263951@qq.com> Date: Sun, 28 Jun 2026 15:36:10 +0800 Subject: [PATCH] feat(grid): move render mode toggle to view options --- apps/desktop/src/components/grid/DataGrid.vue | 15 --------- .../src/components/layout/ContentArea.vue | 33 +++++++++++++++++-- 2 files changed, 30 insertions(+), 18 deletions(-) diff --git a/apps/desktop/src/components/grid/DataGrid.vue b/apps/desktop/src/components/grid/DataGrid.vue index 2f6a250d2..9d5782c32 100644 --- a/apps/desktop/src/components/grid/DataGrid.vue +++ b/apps/desktop/src/components/grid/DataGrid.vue @@ -4182,12 +4182,6 @@ watch( { flush: "post" }, ); -function toggleDataGridRenderMode() { - settingsStore.updateEditorSettings({ - dataGridRenderMode: dataGridRenderMode.value === "canvas" ? "dom" : "canvas", - }); -} - function canvasScrollerElement(): HTMLElement | null { const scroller = scrollerRef.value; if (!scroller) return null; @@ -7193,15 +7187,6 @@ const gridContextMenuItems = computed(() => { {{ t("grid.refresh") }} ({{ shortcutMod }}+R) - - - - - {{ dataGridRenderMode === "canvas" ? t("grid.canvasRenderMode") : t("grid.domRenderMode") }} ยท {{ t("grid.renderModeHint") }} - diff --git a/apps/desktop/src/components/layout/ContentArea.vue b/apps/desktop/src/components/layout/ContentArea.vue index 068e5f545..400c817ed 100644 --- a/apps/desktop/src/components/layout/ContentArea.vue +++ b/apps/desktop/src/components/layout/ContentArea.vue @@ -3,7 +3,7 @@ import { computed, ref, defineAsyncComponent, watch, nextTick, onMounted, onUnmo import { safeLocalStorageGet, safeLocalStorageSet } from "@/lib/safeStorage"; import type { CSSProperties } from "vue"; import { useI18n } from "vue-i18n"; -import { Check, Columns3, Loader2, Search, Bot, GitBranch, BarChart3, TableProperties, ChevronDown, ChevronUp, Inbox, RefreshCcw, Wrench, Toolbox, ListChecks, Database, FileUp, Download, X, Pin } from "@lucide/vue"; +import { Check, Columns3, Loader2, Search, Bot, GitBranch, BarChart3, TableProperties, ChevronDown, ChevronUp, Inbox, RefreshCcw, Wrench, Toolbox, ListChecks, Database, FileUp, Download, X, Pin, SquareDashed } from "@lucide/vue"; import { Splitpanes, Pane } from "splitpanes"; import "splitpanes/dist/splitpanes.css"; import { Button } from "@/components/ui/button"; @@ -49,6 +49,7 @@ const ExplainPlanViewer = defineAsyncComponent(() => import("@/components/explai const QueryChart = defineAsyncComponent(() => import("@/components/chart/QueryChart.vue")); import { useQueryStore } from "@/stores/queryStore"; import { useConnectionStore } from "@/stores/connectionStore"; +import { useSettingsStore } from "@/stores/settingsStore"; import { useToast } from "@/composables/useToast"; import { canCancelQueryExecution, queryExecutionLabelKey } from "@/lib/queryExecutionState"; import { databaseDisplayNameForTab, executionSummaryItems, nextExecutionSummaryView, resultGridCacheKey, resultRunItems, tabularResultItems } from "@/lib/tabPresentation"; @@ -138,6 +139,7 @@ const emit = defineEmits<{ const { t } = useI18n(); const queryStore = useQueryStore(); const connectionStore = useConnectionStore(); +const settingsStore = useSettingsStore(); const { toast } = useToast(); const DEFAULT_QUERY_RESULTS_PANE_SIZE = 68; @@ -169,6 +171,7 @@ const queryEditorRef = ref>(); const resultTabsScrollerRef = ref(null); const columnVisibilitySearch = ref(""); const columnVisibilityOptions = computed(() => dataGridRef.value?.filteredColumnVisibilityOptions(columnVisibilitySearch.value) ?? []); +const dataGridRenderMode = computed(() => settingsStore.editorSettings.dataGridRenderMode); const redisKeyBrowserRef = ref(); const etcdKeyBrowserRef = ref(); const zookeeperKeyBrowserRef = ref(); @@ -188,6 +191,10 @@ function findNodeInTree(nodes: TreeNode[], id: string): TreeNode | undefined { return undefined; } +function setDataGridCanvasRenderMode(value: boolean) { + settingsStore.updateEditorSettings({ dataGridRenderMode: value ? "canvas" : "dom" }); +} + const activeTabDimension = computed(() => { const tab = props.activeTab; if (!tab.connectionId || tab.mode !== "vector") return undefined; @@ -706,7 +713,7 @@ defineExpose({ focusSearch, refreshData, handleModRTarget, requestQueryEditorExe size="icon" class="h-6 w-7 shrink-0 text-foreground hover:bg-accent" :class="{ - 'bg-accent text-foreground': dataGridRef?.nullColumnsHidden || dataGridRef?.multiRowTranspose, + 'bg-accent text-foreground': dataGridRef?.nullColumnsHidden || dataGridRef?.multiRowTranspose || dataGridRenderMode === 'dom', }" :title="t('grid.viewOptions')" :aria-label="t('grid.viewOptions')" @@ -718,6 +725,16 @@ defineExpose({ focusSearch, refreshData, handleModRTarget, requestQueryEditorExe
{{ t("grid.viewOptions") }}
+ + +