import { Field, ProgressBar } from "@fluentui/react-components"; import { filesize } from "filesize"; import React from "react"; import { SysInfoApi, SysInfoStatus } from "../api/SysInfoApi"; import { useToast } from "../hooks/providers/ToastProvider"; import { format_duration } from "../utils/time_utils"; import { AsyncWidget } from "./AsyncWidget"; import { SectionContainer } from "./SectionContainer"; export function SystemInfoWidget(): React.ReactElement { const toast = useToast(); const [status, setStatus] = React.useState(); const load = async () => { setStatus(await SysInfoApi.Status()); }; React.useEffect(() => { const interval = setInterval(async () => { try { await load(); } catch (e) { console.error(e); toast("Error", "Failed to refresh system status!", "error"); } }, 5000); return () => clearInterval(interval); }); return ( (

Load average: {status!.system.load_average.one}{" "} {status!.system.load_average.five}{" "} {status!.system.load_average.fifteen}

Number physical cores: {status!.system.physical_core_count}
)} />
); } function UptimeWidget(p: { uptime: number }): React.ReactElement { const [uptime, setUptime] = React.useState(p.uptime); React.useEffect(() => { const interval = setInterval(() => setUptime((uptime) => uptime + 1), 1000); return () => clearInterval(interval); }, [p.uptime]); return

Uptime: {format_duration(uptime)}

; }