mirror of
https://github.com/MacRimi/ProxMenux.git
synced 2025-11-18 11:36:17 +00:00
Update hardware.tsx
This commit is contained in:
@@ -22,6 +22,34 @@ import useSWR from "swr"
|
|||||||
import { useState, useEffect } from "react"
|
import { useState, useEffect } from "react"
|
||||||
import { type HardwareData, type GPU, type PCIDevice, type StorageDevice, fetcher } from "../types/hardware"
|
import { type HardwareData, type GPU, type PCIDevice, type StorageDevice, fetcher } from "../types/hardware"
|
||||||
|
|
||||||
|
const parseLsblkSize = (sizeStr: string | undefined): number => {
|
||||||
|
if (!sizeStr) return 0
|
||||||
|
|
||||||
|
// Remove spaces and convert to uppercase
|
||||||
|
const cleaned = sizeStr.trim().toUpperCase()
|
||||||
|
|
||||||
|
// Extract number and unit
|
||||||
|
const match = cleaned.match(/^([\d.]+)([KMGT]?)$/)
|
||||||
|
if (!match) return 0
|
||||||
|
|
||||||
|
const value = Number.parseFloat(match[1])
|
||||||
|
const unit = match[2] || "K" // Default to KB if no unit
|
||||||
|
|
||||||
|
// Convert to KB
|
||||||
|
switch (unit) {
|
||||||
|
case "K":
|
||||||
|
return value
|
||||||
|
case "M":
|
||||||
|
return value * 1024
|
||||||
|
case "G":
|
||||||
|
return value * 1024 * 1024
|
||||||
|
case "T":
|
||||||
|
return value * 1024 * 1024 * 1024
|
||||||
|
default:
|
||||||
|
return value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const formatMemory = (memoryKB: number | string): string => {
|
const formatMemory = (memoryKB: number | string): string => {
|
||||||
const kb = typeof memoryKB === "string" ? Number.parseFloat(memoryKB) : memoryKB
|
const kb = typeof memoryKB === "string" ? Number.parseFloat(memoryKB) : memoryKB
|
||||||
|
|
||||||
@@ -1571,7 +1599,7 @@ export default function Hardware() {
|
|||||||
{device.type}
|
{device.type}
|
||||||
</Badge>
|
</Badge>
|
||||||
</div>
|
</div>
|
||||||
{device.size && <p className="text-sm font-medium">{formatMemory(device.size)}</p>}
|
{device.size && <p className="text-sm font-medium">{formatMemory(parseLsblkSize(device.size))}</p>}
|
||||||
{device.model && (
|
{device.model && (
|
||||||
<p className="text-xs text-muted-foreground line-clamp-2 break-words">{device.model}</p>
|
<p className="text-xs text-muted-foreground line-clamp-2 break-words">{device.model}</p>
|
||||||
)}
|
)}
|
||||||
@@ -1610,7 +1638,7 @@ export default function Hardware() {
|
|||||||
{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">
|
||||||
<span className="text-sm font-medium text-muted-foreground">Capacity</span>
|
<span className="text-sm font-medium text-muted-foreground">Capacity</span>
|
||||||
<span className="text-sm font-medium">{formatMemory(selectedDisk.size)}</span>
|
<span className="text-sm font-medium">{formatMemory(parseLsblkSize(selectedDisk.size))}</span>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user