feat(mysql): add server metrics dashboard

This commit is contained in:
Bagus Wahyu Aprianto authored and GitHub committed 2026-07-13 23:55:52 +08:00
1 parent c02b3967df
commit c9c2fddfe2
17 files changed
+812 -2

No files matched your search

@@ -51,6 +51,7 @@ import {
Check,
UsersRound,
Activity,
Gauge,
CalendarClock,
Lock,
HardDriveDownload,
@@ -146,6 +147,7 @@ import { selectedTreeNodesInVisibleOrder as orderSelectedTreeNodes, treeSelectio
import { connectionPasteTargetGroupId, selectedConnectionClipboardTargets, selectedConnectionDeleteTargets, selectedConnectionDuplicateTargets, selectedConnectionEditTarget } from "@/lib/sidebar/sidebarConnectionSelection";
import { supportsDatabaseUserAdmin } from "@/lib/database/databaseUserAdmin";
import { supportsProcessList } from "@/lib/database/mysqlProcessList";
import { connectionSupportsServerDashboard } from "@/lib/database/mysqlServerStatus";
import { canCloseSidebarDatabaseConnection, isSidebarDatabaseOpened } from "@/lib/sidebar/sidebarDatabaseOpenState";
import { sidebarTreeContextKey } from "@/lib/sidebar/sidebarTreeContext";
import { batchTableEmptyFeedback, runBatchTableEmpty } from "@/lib/sidebar/batchTableEmpty";
@@ -1167,6 +1169,18 @@ async function openProcessList() {
}
}
async function openMysqlDashboard() {
const node = props.node;
if (!node.connectionId) return;
try {
await connectionStore.ensureConnected(node.connectionId);
connectionStore.activeConnectionId = node.connectionId;
queryStore.openMysqlDashboard(node.connectionId);
} catch (e: any) {
toast(t("connection.connectFailed", { message: translateBackendError(t, e?.message || String(e)) }), 5000);
}
}
async function openDamengJobAdmin() {
const node = props.node;
if (!node.connectionId) return;
@@ -4714,6 +4728,9 @@ function treeItemMenuItems(): ContextMenuItem[] {
if (supportsProcessList(currentDatabaseType())) {
items.push({ label: t("contextMenu.processList"), action: openProcessList, icon: Activity });
}
if (node.connectionId && connectionSupportsServerDashboard(connectionStore.getConfig(node.connectionId))) {
items.push({ label: t("contextMenu.serverDashboard"), action: openMysqlDashboard, icon: Gauge });
}
if (currentDatabaseType() === "dameng") {
items.push({ label: t("contextMenu.damengJobAdmin"), action: openDamengJobAdmin, icon: CalendarClock });
}