Update hardware.tsx

This commit is contained in:
MacRimi
2025-11-04 14:00:01 +01:00
parent 9a32d1c0f7
commit 73a170a5f1

View File

@@ -171,6 +171,22 @@ export default function Hardware() {
refreshInterval: 5000, refreshInterval: 5000,
}) })
useEffect(() => {
if (hardwareData?.storage_devices) {
console.log("[v0] Storage devices data from backend:", hardwareData.storage_devices)
hardwareData.storage_devices.forEach((device) => {
if (device.name.startsWith("nvme")) {
console.log(`[v0] NVMe device ${device.name}:`, {
pcie_gen: device.pcie_gen,
pcie_width: device.pcie_width,
pcie_max_gen: device.pcie_max_gen,
pcie_max_width: device.pcie_max_width,
})
}
})
}
}, [hardwareData])
const [selectedGPU, setSelectedGPU] = useState<GPU | null>(null) const [selectedGPU, setSelectedGPU] = useState<GPU | null>(null)
const [realtimeGPUData, setRealtimeGPUData] = useState<any>(null) const [realtimeGPUData, setRealtimeGPUData] = useState<any>(null)
const [detailsLoading, setDetailsLoading] = useState(false) const [detailsLoading, setDetailsLoading] = useState(false)
@@ -1762,46 +1778,44 @@ export default function Hardware() {
<span className="font-mono text-sm">{selectedDisk.name}</span> <span className="font-mono text-sm">{selectedDisk.name}</span>
</div> </div>
{selectedDisk.name && ( <div className="flex justify-between border-b border-border/50 pb-2">
<div className="flex justify-between border-b border-border/50 pb-2"> <span className="text-sm font-medium text-muted-foreground">Type</span>
<span className="text-sm font-medium text-muted-foreground">Type</span> {(() => {
{(() => { const getDiskTypeBadge = (diskName: string, rotationRate: number | string | undefined) => {
const getDiskTypeBadge = (diskName: string, rotationRate: number | string | undefined) => { let diskType = "HDD"
let diskType = "HDD"
if (diskName.startsWith("nvme")) { if (diskName.startsWith("nvme")) {
diskType = "NVMe" diskType = "NVMe"
} else if (rotationRate !== undefined && rotationRate !== null) { } else if (rotationRate !== undefined && rotationRate !== null) {
const rateNum = typeof rotationRate === "string" ? Number.parseInt(rotationRate) : rotationRate const rateNum = typeof rotationRate === "string" ? Number.parseInt(rotationRate) : rotationRate
if (rateNum === 0 || isNaN(rateNum)) { if (rateNum === 0 || isNaN(rateNum)) {
diskType = "SSD"
}
} else if (typeof rotationRate === "string" && rotationRate.includes("Solid State")) {
diskType = "SSD" diskType = "SSD"
} }
} else if (typeof rotationRate === "string" && rotationRate.includes("Solid State")) {
const badgeStyles: Record<string, { className: string; label: string }> = { diskType = "SSD"
NVMe: {
className: "bg-purple-500/10 text-purple-500 border-purple-500/20",
label: "NVMe SSD",
},
SSD: {
className: "bg-cyan-500/10 text-cyan-500 border-cyan-500/20",
label: "SSD",
},
HDD: {
className: "bg-blue-500/10 text-blue-500 border-blue-500/20",
label: "HDD",
},
}
return badgeStyles[diskType]
} }
const diskBadge = getDiskTypeBadge(selectedDisk.name, selectedDisk.rotation_rate) const badgeStyles: Record<string, { className: string; label: string }> = {
return <Badge className={diskBadge.className}>{diskBadge.label}</Badge> NVMe: {
})()} className: "bg-purple-500/10 text-purple-500 border-purple-500/20",
</div> label: "NVMe SSD",
)} },
SSD: {
className: "bg-cyan-500/10 text-cyan-500 border-cyan-500/20",
label: "SSD",
},
HDD: {
className: "bg-blue-500/10 text-blue-500 border-blue-500/20",
label: "HDD",
},
}
return badgeStyles[diskType]
}
const diskBadge = getDiskTypeBadge(selectedDisk.name, selectedDisk.rotation_rate)
return <Badge className={diskBadge.className}>{diskBadge.label}</Badge>
})()}
</div>
{selectedDisk.size && ( {selectedDisk.size && (
<div className="flex justify-between border-b border-border/50 pb-2"> <div className="flex justify-between border-b border-border/50 pb-2">