fix S.M.A.R.T. wrong disk is renderer in the DiskSheet table #1336

This commit is contained in:
henrygd
2025-10-28 12:55:38 -04:00
parent 81731689da
commit 5122d0341d

View File

@@ -89,18 +89,25 @@ function formatCapacity(bytes: number): string {
// Function to convert SmartData to DiskInfo // Function to convert SmartData to DiskInfo
function convertSmartDataToDiskInfo(smartDataRecord: Record<string, SmartData>): DiskInfo[] { function convertSmartDataToDiskInfo(smartDataRecord: Record<string, SmartData>): DiskInfo[] {
const unknown = "Unknown"
return Object.entries(smartDataRecord).map(([key, smartData]) => ({ return Object.entries(smartDataRecord).map(([key, smartData]) => ({
device: smartData.dn || key, device: smartData.dn || key,
model: smartData.mn || "Unknown", model: smartData.mn || unknown,
serialNumber: smartData.sn || "Unknown", serialNumber: smartData.sn || unknown,
firmwareVersion: smartData.fv || "Unknown", firmwareVersion: smartData.fv || unknown,
capacity: smartData.c ? formatCapacity(smartData.c) : "Unknown", capacity: smartData.c ? formatCapacity(smartData.c) : unknown,
status: smartData.s || "Unknown", status: smartData.s || unknown,
temperature: smartData.t || 0, temperature: smartData.t || 0,
deviceType: smartData.dt || "Unknown", deviceType: smartData.dt || unknown,
// These fields need to be extracted from SmartAttribute if available // These fields need to be extracted from SmartAttribute if available
powerOnHours: smartData.a?.find(attr => attr.n.toLowerCase().includes("poweronhours") || attr.n.toLowerCase().includes("power_on_hours"))?.rv, powerOnHours: smartData.a?.find(attr => {
powerCycles: smartData.a?.find(attr => attr.n.toLowerCase().includes("power") && attr.n.toLowerCase().includes("cycle"))?.rv, const name = attr.n.toLowerCase();
return name.includes("poweronhours") || name.includes("power_on_hours");
})?.rv,
powerCycles: smartData.a?.find(attr => {
const name = attr.n.toLowerCase();
return (name.includes("power") && name.includes("cycle")) || name.includes("startstopcycles");
})?.rv,
})) }))
} }
@@ -365,7 +372,7 @@ export default function DisksTable({ systemId }: { systemId: string }) {
</Table> </Table>
</div> </div>
</Card> </Card>
<DiskSheet disk={activeDisk} smartData={activeDisk && smartData ? Object.values(smartData).find(sd => sd.dn === activeDisk.device || sd.mn === activeDisk.model) : undefined} open={sheetOpen} onOpenChange={setSheetOpen} /> <DiskSheet disk={activeDisk} smartData={smartData?.[activeDisk?.serialNumber ?? ""]} open={sheetOpen} onOpenChange={setSheetOpen} />
</div> </div>
) )
} }