fix: 尝试修复浏览器从休眠中恢复时的图表乱序问题 (#656)

This commit is contained in:
ᴀᴍᴛᴏᴀᴇʀ
2026-02-24 01:54:04 +08:00
committed by GitHub
parent 3e465d9b71
commit 8aba906904

View File

@@ -29,11 +29,13 @@
DownloadIcon DownloadIcon
} from '@lucide/svelte/icons'; } from '@lucide/svelte/icons';
let dashboardData: DashBoardResponse | null = null; let dashboardData = $state<DashBoardResponse | null>(null);
let sysInfo: SysInfo | null = null; let sysInfo = $state<SysInfo | null>(null);
let taskStatus: TaskStatus | null = null; let taskStatus = $state<TaskStatus | null>(null);
let loading = false; let loading = $state(false);
let triggering = false; let triggering = $state(false);
let memoryHistory = $state<Array<{ time: number; used: number; process: number }>>([]);
let cpuHistory = $state<Array<{ time: number; used: number; process: number }>>([]);
let unsubscribeSysInfo: (() => void) | null = null; let unsubscribeSysInfo: (() => void) | null = null;
let unsubscribeTasks: (() => void) | null = null; let unsubscribeTasks: (() => void) | null = null;
@@ -90,29 +92,6 @@
} }
} }
onMount(() => {
setBreadcrumb([{ label: '仪表盘' }]);
unsubscribeSysInfo = api.subscribeToSysInfo((data) => {
sysInfo = data;
});
unsubscribeTasks = api.subscribeToTasks((data: TaskStatus) => {
taskStatus = data;
});
loadDashboard();
return () => {
if (unsubscribeSysInfo) {
unsubscribeSysInfo();
unsubscribeSysInfo = null;
}
if (unsubscribeTasks) {
unsubscribeTasks();
unsubscribeTasks = null;
}
};
});
// 图表配置
const videoChartConfig = { const videoChartConfig = {
videos: { videos: {
label: '视频数量', label: '视频数量',
@@ -142,32 +121,51 @@
} }
} satisfies Chart.ChartConfig; } satisfies Chart.ChartConfig;
let memoryHistory: Array<{ time: number; used: number; process: number }> = []; function pushSysInfo(data: SysInfo) {
let cpuHistory: Array<{ time: number; used: number; process: number }> = [];
$: if (sysInfo) {
memoryHistory = [ memoryHistory = [
...memoryHistory.slice(-14), ...memoryHistory.slice(-14),
{ {
time: sysInfo.timestamp, time: data.timestamp,
used: sysInfo.used_memory, used: data.used_memory,
process: sysInfo.process_memory process: data.process_memory
} }
]; ];
cpuHistory = [ cpuHistory = [
...cpuHistory.slice(-14), ...cpuHistory.slice(-14),
{ {
time: sysInfo.timestamp, time: data.timestamp,
used: sysInfo.used_cpu, used: data.used_cpu,
process: sysInfo.process_cpu process: data.process_cpu
} }
]; ];
} }
// 计算磁盘使用率 const diskUsagePercent = $derived(
$: diskUsagePercent = sysInfo sysInfo ? ((sysInfo.total_disk - sysInfo.available_disk) / sysInfo.total_disk) * 100 : 0
? ((sysInfo.total_disk - sysInfo.available_disk) / sysInfo.total_disk) * 100 );
: 0;
onMount(() => {
setBreadcrumb([{ label: '仪表盘' }]);
unsubscribeSysInfo = api.subscribeToSysInfo((data) => {
sysInfo = data;
pushSysInfo(data);
});
unsubscribeTasks = api.subscribeToTasks((data: TaskStatus) => {
taskStatus = data;
});
loadDashboard();
return () => {
if (unsubscribeSysInfo) {
unsubscribeSysInfo();
unsubscribeSysInfo = null;
}
if (unsubscribeTasks) {
unsubscribeTasks();
unsubscribeTasks = null;
}
};
});
</script> </script>
<svelte:head> <svelte:head>