feat(nacos): add Nacos dashboard metrics

This commit is contained in:
二丫讲梵 authored and GitHub committed 2026-07-27 12:16:39 +08:00
1 parent 98bf3d1dfd
commit f9c2fb27d3
41 files changed
+3268 -36

No files matched your search

@@ -5,6 +5,11 @@ describe("queryStore switchTab", () => {
beforeEach(() => {
vi.resetModules();
vi.unstubAllGlobals();
vi.stubGlobal("localStorage", {
getItem: vi.fn(() => null),
setItem: vi.fn(),
removeItem: vi.fn(),
});
setActivePinia(createPinia());
});
@@ -87,4 +92,16 @@ describe("queryStore switchTab", () => {
queryStore.updateDataGridLocalColumnFilters(tabId, {});
expect(tab.result.local_column_filters).toBeUndefined();
});
it("opens one reusable Nacos dashboard tab per connection", async () => {
const { useQueryStore } = await import("@/stores/queryStore");
const queryStore = useQueryStore();
const tabId = queryStore.openNacosDashboard("nacos-1");
const reopenedTabId = queryStore.openNacosDashboard("nacos-1");
expect(reopenedTabId).toBe(tabId);
expect(queryStore.tabs.filter((tab) => tab.mode === "nacos-dashboard")).toHaveLength(1);
expect(queryStore.activeTabId).toBe(tabId);
});
});
+26
View File
@@ -1320,6 +1320,31 @@ export const useQueryStore = defineStore("query", () => {
return id;
}
function openNacosDashboard(connectionId: string) {
const existing = tabs.value.find((tab) => tab.mode === "nacos-dashboard" && tab.connectionId === connectionId);
if (existing) {
switchTab(existing.id);
return existing.id;
}
const conn = useConnectionStore().getConfig(connectionId);
const id = uuid();
const tab: QueryTab = {
id,
title: conn?.name ? `${conn.name} - ${t("serverDashboard.title")}` : t("serverDashboard.title"),
connectionId,
database: conn?.database || "",
sql: "",
isExecuting: false,
isCancelling: false,
isExplaining: false,
mode: "nacos-dashboard",
};
tabs.value.push(tab);
activeTabId.value = id;
return id;
}
function openDamengJobAdmin(connectionId: string) {
const existing = tabs.value.find((tab) => tab.mode === "dameng-jobs" && tab.connectionId === connectionId);
if (existing) {
@@ -4644,6 +4669,7 @@ export const useQueryStore = defineStore("query", () => {
openProcessList,
openMysqlDashboard,
openPostgresDashboard,
openNacosDashboard,
openDamengJobAdmin,
openMqAdmin,
openNacosAdmin,