Fix drive usage display and center status icon

This commit is contained in:
2025-08-13 01:24:35 -06:00
parent 3cae0331ca
commit 7a48fc2a28
2 changed files with 41 additions and 19 deletions

View File

@@ -283,13 +283,33 @@ export default function DeviceDetails({ device, onBack }) {
}; };
const renderStorage = () => { const renderStorage = () => {
const rows = (details.storage || []).map((d) => ({ const parseNum = (val) => {
drive: d.drive, if (val === undefined || val === null) return undefined;
disk_type: d.disk_type, const n = Number(String(val).replace(/[^0-9.]/g, ""));
usage: d.usage !== undefined ? Number(d.usage) : undefined, return Number.isNaN(n) ? undefined : n;
total: d.total !== undefined ? Number(d.total) : undefined, };
free: d.free !== undefined ? Number(d.free) : undefined, const rows = (details.storage || []).map((d) => {
})); const total = parseNum(d.total);
const rawFree = parseNum(d.free);
const freePct = rawFree !== undefined
? rawFree <= 100
? rawFree
: total
? (rawFree / total) * 100
: undefined
: undefined;
let usage = parseNum(d.usage);
if ((usage === undefined || Number.isNaN(usage)) && freePct !== undefined) {
usage = 100 - freePct;
}
return {
drive: d.drive,
disk_type: d.disk_type,
usage,
total,
free: freePct,
};
});
if (!rows.length) if (!rows.length)
return placeholderTable(["Drive Letter", "Disk Type", "Usage", "Total Size", "Free %"]); return placeholderTable(["Drive Letter", "Disk Type", "Usage", "Total Size", "Free %"]);
return ( return (

View File

@@ -172,18 +172,20 @@ export default function DeviceList({ onSelectDevice }) {
sx={{ cursor: onSelectDevice ? "pointer" : "default" }} sx={{ cursor: onSelectDevice ? "pointer" : "default" }}
> >
<TableCell> <TableCell>
<span <Box sx={{ display: "flex", alignItems: "center" }}>
style={{ <Box
display: "inline-block", component="span"
width: 10, sx={{
height: 10, display: "inline-block",
borderRadius: 10, width: 10,
background: statusColor(r.status), height: 10,
marginRight: 8, borderRadius: 10,
verticalAlign: "middle" bgcolor: statusColor(r.status),
}} mr: 1,
/> }}
{r.status} />
{r.status}
</Box>
</TableCell> </TableCell>
<TableCell>{r.hostname}</TableCell> <TableCell>{r.hostname}</TableCell>
<TableCell>{timeSince(r.lastSeen)}</TableCell> <TableCell>{timeSince(r.lastSeen)}</TableCell>