update ServerDashboard
This commit is contained in:
@@ -12,8 +12,23 @@ export interface ConnectSetting {
|
||||
token: string;
|
||||
}
|
||||
|
||||
export type DashboardSnapshotMetric = "os" | "cpu" | "memory" | "jvm" | "network" | "hardware" | "storage";
|
||||
export type DashboardHistoryMetric = "cpu" | "memory" | "jvm" | "network";
|
||||
|
||||
export interface ServerDashboardSetting {
|
||||
snapshotRefreshSeconds: number;
|
||||
historyRefreshSeconds: number;
|
||||
snapshotMetrics: DashboardSnapshotMetric[];
|
||||
historyMetrics: DashboardHistoryMetric[];
|
||||
}
|
||||
|
||||
export interface DashboardSetting {
|
||||
server: ServerDashboardSetting;
|
||||
}
|
||||
|
||||
interface SettingState {
|
||||
connect: ConnectSetting;
|
||||
dashboard: DashboardSetting;
|
||||
}
|
||||
|
||||
const defaultConnectSetting = (): ConnectSetting => ({
|
||||
@@ -23,8 +38,20 @@ const defaultConnectSetting = (): ConnectSetting => ({
|
||||
token: ""
|
||||
});
|
||||
|
||||
const defaultServerDashboardSetting = (): ServerDashboardSetting => ({
|
||||
snapshotRefreshSeconds: 3,
|
||||
historyRefreshSeconds: 10,
|
||||
snapshotMetrics: ["os", "cpu", "memory", "jvm", "network", "hardware", "storage"],
|
||||
historyMetrics: ["cpu", "memory", "jvm", "network"]
|
||||
});
|
||||
|
||||
const defaultDashboardSetting = (): DashboardSetting => ({
|
||||
server: defaultServerDashboardSetting()
|
||||
});
|
||||
|
||||
const defaultSettingState = (): SettingState => ({
|
||||
connect: defaultConnectSetting()
|
||||
connect: defaultConnectSetting(),
|
||||
dashboard: defaultDashboardSetting()
|
||||
});
|
||||
|
||||
function normalizeConnectSetting(connect?: Partial<ConnectSetting>): ConnectSetting {
|
||||
@@ -38,10 +65,52 @@ function normalizeConnectSetting(connect?: Partial<ConnectSetting>): ConnectSett
|
||||
};
|
||||
}
|
||||
|
||||
function normalizeSnapshotMetrics(metrics?: DashboardSnapshotMetric[]): DashboardSnapshotMetric[] {
|
||||
const validMetrics: DashboardSnapshotMetric[] = ["os", "cpu", "memory", "jvm", "network", "hardware", "storage"];
|
||||
const metricList = Array.isArray(metrics) ? metrics : [];
|
||||
const normalizedMetrics = validMetrics.filter((metric) => metricList.includes(metric));
|
||||
return normalizedMetrics.length ? normalizedMetrics : defaultServerDashboardSetting().snapshotMetrics;
|
||||
}
|
||||
|
||||
function normalizeHistoryMetrics(metrics?: DashboardHistoryMetric[]): DashboardHistoryMetric[] {
|
||||
const validMetrics: DashboardHistoryMetric[] = ["cpu", "memory", "jvm", "network"];
|
||||
const metricList = Array.isArray(metrics) ? metrics : [];
|
||||
const normalizedMetrics = validMetrics.filter((metric) => metricList.includes(metric));
|
||||
return normalizedMetrics.length ? normalizedMetrics : defaultServerDashboardSetting().historyMetrics;
|
||||
}
|
||||
|
||||
function normalizeRefreshSeconds(value?: number, fallback = 3): number {
|
||||
if (typeof value !== "number" || Number.isNaN(value)) {
|
||||
return fallback;
|
||||
}
|
||||
|
||||
return Math.min(Math.max(Math.floor(value), 1), 120);
|
||||
}
|
||||
|
||||
function normalizeServerDashboardSetting(setting?: Partial<ServerDashboardSetting>): ServerDashboardSetting {
|
||||
const fallback = defaultServerDashboardSetting();
|
||||
return {
|
||||
snapshotRefreshSeconds: normalizeRefreshSeconds(setting?.snapshotRefreshSeconds, fallback.snapshotRefreshSeconds),
|
||||
historyRefreshSeconds: normalizeRefreshSeconds(setting?.historyRefreshSeconds, fallback.historyRefreshSeconds),
|
||||
snapshotMetrics: normalizeSnapshotMetrics(setting?.snapshotMetrics),
|
||||
historyMetrics: normalizeHistoryMetrics(setting?.historyMetrics)
|
||||
};
|
||||
}
|
||||
|
||||
function normalizeDashboardSetting(setting?: Partial<DashboardSetting>): DashboardSetting {
|
||||
return {
|
||||
server: normalizeServerDashboardSetting(setting?.server)
|
||||
};
|
||||
}
|
||||
|
||||
export const useSettingStore = defineStore("setting", () => {
|
||||
const state = ref<SettingState>(Storage.getDefault<SettingState>(SETTING_STORAGE_KEY, defaultSettingState()));
|
||||
state.value.connect = normalizeConnectSetting(state.value.connect);
|
||||
state.value.dashboard = normalizeDashboardSetting(state.value.dashboard);
|
||||
persist();
|
||||
|
||||
const connect = computed(() => state.value.connect);
|
||||
const dashboard = computed(() => state.value.dashboard);
|
||||
const hasConnectConfig = computed(() => {
|
||||
const currentConnect = state.value.connect;
|
||||
return !!currentConnect.host && !!currentConnect.port && !!currentConnect.token;
|
||||
@@ -64,10 +133,20 @@ export const useSettingStore = defineStore("setting", () => {
|
||||
persist();
|
||||
}
|
||||
|
||||
function setServerDashboard(serverSetting: Partial<ServerDashboardSetting>): void {
|
||||
state.value.dashboard.server = normalizeServerDashboardSetting({
|
||||
...state.value.dashboard.server,
|
||||
...serverSetting
|
||||
});
|
||||
persist();
|
||||
}
|
||||
|
||||
return {
|
||||
connect,
|
||||
dashboard,
|
||||
hasConnectConfig,
|
||||
setConnect,
|
||||
resetConnect
|
||||
resetConnect,
|
||||
setServerDashboard
|
||||
};
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user