fix: 尝试修复浏览器从休眠中恢复时的图表乱序问题 (#656)
This commit is contained in:
@@ -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>
|
||||||
|
|||||||
Reference in New Issue
Block a user