fix: 修复某些边缘情况的图表显示异常 (#592)

This commit is contained in:
ᴀᴍᴛᴏᴀᴇʀ
2026-01-09 18:14:32 +08:00
committed by GitHub
parent 18d06c51ba
commit 64eecaa822
4 changed files with 23 additions and 21 deletions

View File

@@ -184,6 +184,7 @@ pub struct DashBoardResponse {
#[derive(Serialize, Clone, Copy)] #[derive(Serialize, Clone, Copy)]
pub struct SysInfo { pub struct SysInfo {
pub timestamp: i64,
pub total_memory: u64, pub total_memory: u64,
pub used_memory: u64, pub used_memory: u64,
pub process_memory: u64, pub process_memory: u64,

View File

@@ -262,6 +262,7 @@ impl WebSocketHandler {
(available, total) (available, total)
}); });
let sys_info = SysInfo { let sys_info = SysInfo {
timestamp: chrono::Utc::now().timestamp_millis(),
total_memory: system.total_memory(), total_memory: system.total_memory(),
used_memory: system.used_memory(), used_memory: system.used_memory(),
process_memory: process.memory(), process_memory: process.memory(),

View File

@@ -328,6 +328,7 @@ export interface DashBoardResponse {
} }
export interface SysInfo { export interface SysInfo {
timestamp: number;
total_memory: number; total_memory: number;
used_memory: number; used_memory: number;
process_memory: number; process_memory: number;
@@ -336,7 +337,6 @@ export interface SysInfo {
total_disk: number; total_disk: number;
used_disk: number; used_disk: number;
available_disk: number; available_disk: number;
uptime: number;
} }
export interface TaskStatus { export interface TaskStatus {

View File

@@ -47,6 +47,15 @@
return `${cpu.toFixed(1)}%`; return `${cpu.toFixed(1)}%`;
} }
function formatTimestamp(timestamp: number): string {
return new Date(timestamp).toLocaleString('en-US', {
hour: '2-digit',
minute: '2-digit',
second: '2-digit',
hour12: true
});
}
async function loadDashboard() { async function loadDashboard() {
loading = true; loading = true;
try { try {
@@ -131,27 +140,28 @@
} }
} satisfies Chart.ChartConfig; } satisfies Chart.ChartConfig;
let memoryHistory: Array<{ time: Date; used: number; process: number }> = []; let memoryHistory: Array<{ time: number; used: number; process: number }> = [];
let cpuHistory: Array<{ time: Date; used: number; process: number }> = []; let cpuHistory: Array<{ time: number; used: number; process: number }> = [];
$: if (sysInfo) { $: if (sysInfo) {
memoryHistory = [ memoryHistory = [
...memoryHistory.slice(-19), ...memoryHistory.slice(-14),
{ {
time: new Date(), time: sysInfo.timestamp,
used: sysInfo.used_memory, used: sysInfo.used_memory,
process: sysInfo.process_memory process: sysInfo.process_memory
} }
]; ];
cpuHistory = [ cpuHistory = [
...cpuHistory.slice(-19), ...cpuHistory.slice(-14),
{ {
time: new Date(), time: sysInfo.timestamp,
used: sysInfo.used_cpu, used: sysInfo.used_cpu,
process: sysInfo.process_cpu process: sysInfo.process_cpu
} }
]; ];
} }
// 计算磁盘使用率 // 计算磁盘使用率
$: diskUsagePercent = sysInfo $: diskUsagePercent = sysInfo
? ((sysInfo.total_disk - sysInfo.available_disk) / sysInfo.total_disk) * 100 ? ((sysInfo.total_disk - sysInfo.available_disk) / sysInfo.total_disk) * 100
@@ -435,13 +445,8 @@
> >
{#snippet tooltip()} {#snippet tooltip()}
<MyChartTooltip <MyChartTooltip
labelFormatter={(v: Date) => { labelFormatter={(timestamp: number) => {
return v.toLocaleString('en-US', { return formatTimestamp(timestamp);
hour: '2-digit',
minute: '2-digit',
second: '2-digit',
hour12: true
});
}} }}
valueFormatter={(v: number) => formatBytes(v)} valueFormatter={(v: number) => formatBytes(v)}
indicator="line" indicator="line"
@@ -502,13 +507,8 @@
> >
{#snippet tooltip()} {#snippet tooltip()}
<MyChartTooltip <MyChartTooltip
labelFormatter={(v: Date) => { labelFormatter={(timestamp: number) => {
return v.toLocaleString('en-US', { return formatTimestamp(timestamp);
hour: '2-digit',
minute: '2-digit',
second: '2-digit',
hour12: true
});
}} }}
valueFormatter={(v: number) => formatCpu(v)} valueFormatter={(v: number) => formatCpu(v)}
indicator="line" indicator="line"