mirror of
https://github.com/t8y2/dbx.git
synced 2026-11-02 00:29:30 +00:00
feat: Persist MongoDB browser view mode preference (#370)
* feat: Persist MongoDB browser view mode preference Signed-off-by: baizhi958216 <1475289190@qq.com> * feat: Store MongoDB browser view preference in Pinia Signed-off-by: baizhi958216 <1475289190@qq.com> --------- Signed-off-by: baizhi958216 <1475289190@qq.com>
This commit is contained in:
@@ -8,6 +8,7 @@ import { Badge } from "@/components/ui/badge";
|
|||||||
import DangerConfirmDialog from "@/components/editor/DangerConfirmDialog.vue";
|
import DangerConfirmDialog from "@/components/editor/DangerConfirmDialog.vue";
|
||||||
import DataGrid from "@/components/grid/DataGrid.vue";
|
import DataGrid from "@/components/grid/DataGrid.vue";
|
||||||
import * as api from "@/lib/api";
|
import * as api from "@/lib/api";
|
||||||
|
import { useSettingsStore } from "@/stores/settingsStore";
|
||||||
import JsonEditNode from "./JsonEditNode.vue";
|
import JsonEditNode from "./JsonEditNode.vue";
|
||||||
import type { EditNode } from "@/types/editor";
|
import type { EditNode } from "@/types/editor";
|
||||||
import type { QueryResult } from "@/types/database";
|
import type { QueryResult } from "@/types/database";
|
||||||
@@ -15,6 +16,7 @@ import { Splitpanes, Pane } from "splitpanes";
|
|||||||
import "splitpanes/dist/splitpanes.css";
|
import "splitpanes/dist/splitpanes.css";
|
||||||
|
|
||||||
const { t } = useI18n();
|
const { t } = useI18n();
|
||||||
|
const settingsStore = useSettingsStore();
|
||||||
|
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
connectionId: string;
|
connectionId: string;
|
||||||
@@ -23,6 +25,7 @@ const props = defineProps<{
|
|||||||
}>();
|
}>();
|
||||||
|
|
||||||
type JsonRecord = Record<string, unknown>;
|
type JsonRecord = Record<string, unknown>;
|
||||||
|
type ViewMode = "document" | "table";
|
||||||
|
|
||||||
const documents = ref<JsonRecord[]>([]);
|
const documents = ref<JsonRecord[]>([]);
|
||||||
const total = ref(0);
|
const total = ref(0);
|
||||||
@@ -36,7 +39,10 @@ const isNew = ref(false);
|
|||||||
const error = ref("");
|
const error = ref("");
|
||||||
const editFields = ref<EditNode[]>([]);
|
const editFields = ref<EditNode[]>([]);
|
||||||
const showDeleteConfirm = ref(false);
|
const showDeleteConfirm = ref(false);
|
||||||
const viewMode = ref<"document" | "table">("document");
|
const viewMode = computed<ViewMode>({
|
||||||
|
get: () => settingsStore.editorSettings.mongoViewMode,
|
||||||
|
set: (value) => settingsStore.updateEditorSettings({ mongoViewMode: value }),
|
||||||
|
});
|
||||||
const filterInput = ref("");
|
const filterInput = ref("");
|
||||||
const sortInput = ref("");
|
const sortInput = ref("");
|
||||||
|
|
||||||
|
|||||||
@@ -166,6 +166,7 @@ export interface EditorSettings {
|
|||||||
appLayout: "separated" | "classic";
|
appLayout: "separated" | "classic";
|
||||||
pageSize: number;
|
pageSize: number;
|
||||||
redisScanPageSize: number;
|
redisScanPageSize: number;
|
||||||
|
mongoViewMode: "document" | "table";
|
||||||
shortcuts: ShortcutSettings;
|
shortcuts: ShortcutSettings;
|
||||||
sidebarActivation: SidebarActivation;
|
sidebarActivation: SidebarActivation;
|
||||||
columnFormatters: Record<string, ColumnFormatterConfig>;
|
columnFormatters: Record<string, ColumnFormatterConfig>;
|
||||||
@@ -203,6 +204,7 @@ export const DEFAULT_EDITOR_SETTINGS: EditorSettings = {
|
|||||||
appLayout: "classic",
|
appLayout: "classic",
|
||||||
pageSize: 100,
|
pageSize: 100,
|
||||||
redisScanPageSize: 1000,
|
redisScanPageSize: 1000,
|
||||||
|
mongoViewMode: "document",
|
||||||
shortcuts: normalizeShortcutSettings(),
|
shortcuts: normalizeShortcutSettings(),
|
||||||
sidebarActivation: "single",
|
sidebarActivation: "single",
|
||||||
columnFormatters: {},
|
columnFormatters: {},
|
||||||
@@ -242,6 +244,7 @@ export function normalizeEditorSettings(settings: Partial<EditorSettings>): Edit
|
|||||||
appLayout: settings.appLayout ?? DEFAULT_EDITOR_SETTINGS.appLayout,
|
appLayout: settings.appLayout ?? DEFAULT_EDITOR_SETTINGS.appLayout,
|
||||||
pageSize: normalizeResultPageSize(settings.pageSize),
|
pageSize: normalizeResultPageSize(settings.pageSize),
|
||||||
redisScanPageSize: settings.redisScanPageSize ?? DEFAULT_EDITOR_SETTINGS.redisScanPageSize,
|
redisScanPageSize: settings.redisScanPageSize ?? DEFAULT_EDITOR_SETTINGS.redisScanPageSize,
|
||||||
|
mongoViewMode: settings.mongoViewMode === "table" ? "table" : DEFAULT_EDITOR_SETTINGS.mongoViewMode,
|
||||||
shortcuts: normalizeShortcutSettings(settings.shortcuts),
|
shortcuts: normalizeShortcutSettings(settings.shortcuts),
|
||||||
sidebarActivation:
|
sidebarActivation:
|
||||||
settings.sidebarActivation === "single" || settings.sidebarActivation === "double"
|
settings.sidebarActivation === "single" || settings.sidebarActivation === "double"
|
||||||
|
|||||||
Reference in New Issue
Block a user