From 46ddb36c79abf30ec99970e969486fa041e6b956 Mon Sep 17 00:00:00 2001 From: MacRimi Date: Tue, 7 Oct 2025 03:03:45 +0200 Subject: [PATCH] Update hardware.tsx --- AppImage/components/hardware.tsx | 551 +++++++++++++++---------------- 1 file changed, 269 insertions(+), 282 deletions(-) diff --git a/AppImage/components/hardware.tsx b/AppImage/components/hardware.tsx index 383a514..ccc155c 100644 --- a/AppImage/components/hardware.tsx +++ b/AppImage/components/hardware.tsx @@ -60,17 +60,16 @@ export default function Hardware() { const [selectedGPU, setSelectedGPU] = useState(null) const [realtimeGPUData, setRealtimeGPUData] = useState(null) - const [loadingRealtimeData, setLoadingRealtimeData] = useState(false) const [selectedPCIDevice, setSelectedPCIDevice] = useState(null) const [selectedDisk, setSelectedDisk] = useState(null) const [selectedNetwork, setSelectedNetwork] = useState(null) const handleGPUClick = async (gpu: GPU) => { - setSelectedGPU(gpu) - setLoadingRealtimeData(true) + // Don't open modal yet - wait for data first setRealtimeGPUData(null) try { + console.log("[v0] Fetching real-time GPU data for slot:", gpu.slot) const response = await fetch(`http://localhost:8008/api/gpu/${gpu.slot}/realtime`) if (response.ok) { const data = await response.json() @@ -83,9 +82,9 @@ export default function Hardware() { } catch (error) { console.error("[v0] Error fetching real-time GPU data:", error) setRealtimeGPUData({ has_monitoring_tool: false }) - } finally { - setLoadingRealtimeData(false) } + + setSelectedGPU(gpu) } const findPCIDeviceForGPU = (gpu: GPU): PCIDevice | null => { @@ -388,313 +387,301 @@ export default function Hardware() { {selectedGPU && ( <> - {loadingRealtimeData ? ( - <> - - {selectedGPU.name} - Loading GPU data... - -
-
-
- - ) : hasRealtimeData() ? ( - // Advanced modal with real-time data - (() => { - const pciDevice = findPCIDeviceForGPU(selectedGPU) + {hasRealtimeData() + ? // Advanced modal with real-time data + (() => { + const pciDevice = findPCIDeviceForGPU(selectedGPU) - return ( - <> - - {selectedGPU.name} - Real-Time GPU Monitoring - + return ( + <> + + {selectedGPU.name} + Real-Time GPU Monitoring + -
- {/* Basic Information */} -
-

Basic Information

-
-
- Vendor - {selectedGPU.vendor} -
-
- Type - {selectedGPU.type} -
-
- PCI Slot - {pciDevice?.slot || selectedGPU.slot} -
- {(pciDevice?.driver || selectedGPU.pci_driver) && ( +
+ {/* Basic Information */} +
+

Basic Information

+
- Driver - - {pciDevice?.driver || selectedGPU.pci_driver} - + Vendor + {selectedGPU.vendor}
- )} - {(pciDevice?.kernel_module || selectedGPU.pci_kernel_module) && (
- Kernel Module - - {pciDevice?.kernel_module || selectedGPU.pci_kernel_module} - + Type + {selectedGPU.type}
- )} -
-
- - {/* Real-Time Metrics */} -
-

Real-Time Metrics

-
- {realtimeGPUData.temperature !== undefined && realtimeGPUData.temperature > 0 && ( -
-
- Temperature - - {realtimeGPUData.temperature}°C +
+ PCI Slot + {pciDevice?.slot || selectedGPU.slot} +
+ {(pciDevice?.driver || selectedGPU.pci_driver) && ( +
+ Driver + + {pciDevice?.driver || selectedGPU.pci_driver}
- -
- )} - {realtimeGPUData.utilization_gpu !== undefined && ( -
-
- GPU Utilization - {realtimeGPUData.utilization_gpu}% -
- -
- )} - {realtimeGPUData.clock_graphics && ( -
- Graphics Clock - {realtimeGPUData.clock_graphics} -
- )} - {realtimeGPUData.clock_memory && ( -
- Memory Clock - {realtimeGPUData.clock_memory} -
- )} - {realtimeGPUData.power_draw && realtimeGPUData.power_draw !== "N/A" && ( -
- Power Draw - {realtimeGPUData.power_draw} -
- )} - {realtimeGPUData.power_limit && ( -
- Power Limit - {realtimeGPUData.power_limit} -
- )} -
-
- - {/* Engine Utilization (Intel/AMD) */} - {(realtimeGPUData.engine_render !== undefined || - realtimeGPUData.engine_blitter !== undefined || - realtimeGPUData.engine_video !== undefined || - realtimeGPUData.engine_video_enhance !== undefined) && ( -
-

Engine Utilization

-
- {realtimeGPUData.engine_render !== undefined && ( -
-
- Render/3D - - {realtimeGPUData.engine_render.toFixed(2)}% - -
- -
)} - {realtimeGPUData.engine_blitter !== undefined && ( -
-
- Blitter - - {realtimeGPUData.engine_blitter.toFixed(2)}% - -
- -
- )} - {realtimeGPUData.engine_video !== undefined && ( -
-
- Video - - {realtimeGPUData.engine_video.toFixed(2)}% - -
- -
- )} - {realtimeGPUData.engine_video_enhance !== undefined && ( -
-
- VideoEnhance - - {realtimeGPUData.engine_video_enhance.toFixed(2)}% - -
- + {(pciDevice?.kernel_module || selectedGPU.pci_kernel_module) && ( +
+ Kernel Module + + {pciDevice?.kernel_module || selectedGPU.pci_kernel_module} +
)}
- )} - {/* Memory Info */} - {realtimeGPUData.memory_total && ( + {/* Real-Time Metrics */}
-

Memory

+

Real-Time Metrics

-
- Total - {realtimeGPUData.memory_total} -
-
- Used - {realtimeGPUData.memory_used} -
-
- Free - {realtimeGPUData.memory_free} -
- {realtimeGPUData.utilization_memory !== undefined && ( + {realtimeGPUData.temperature !== undefined && realtimeGPUData.temperature > 0 && (
- Memory Utilization - {realtimeGPUData.utilization_memory}% + Temperature + + {realtimeGPUData.temperature}°C +
- + +
+ )} + {realtimeGPUData.utilization_gpu !== undefined && ( +
+
+ GPU Utilization + {realtimeGPUData.utilization_gpu}% +
+ +
+ )} + {realtimeGPUData.clock_graphics && ( +
+ Graphics Clock + {realtimeGPUData.clock_graphics} +
+ )} + {realtimeGPUData.clock_memory && ( +
+ Memory Clock + {realtimeGPUData.clock_memory} +
+ )} + {realtimeGPUData.power_draw && realtimeGPUData.power_draw !== "N/A" && ( +
+ Power Draw + {realtimeGPUData.power_draw} +
+ )} + {realtimeGPUData.power_limit && ( +
+ Power Limit + {realtimeGPUData.power_limit}
)}
- )} - {/* Running Processes (NVIDIA) */} - {realtimeGPUData.processes && realtimeGPUData.processes.length > 0 && ( -
-

Running Processes

+ {/* Engine Utilization (Intel/AMD) */} + {(realtimeGPUData.engine_render !== undefined || + realtimeGPUData.engine_blitter !== undefined || + realtimeGPUData.engine_video !== undefined || + realtimeGPUData.engine_video_enhance !== undefined) && (
- {realtimeGPUData.processes.map((proc: any, idx: number) => ( -
-
- PID: {proc.pid} - {proc.memory} +

Engine Utilization

+
+ {realtimeGPUData.engine_render !== undefined && ( +
+
+ Render/3D + + {realtimeGPUData.engine_render.toFixed(2)}% + +
+
-

{proc.name}

+ )} + {realtimeGPUData.engine_blitter !== undefined && ( +
+
+ Blitter + + {realtimeGPUData.engine_blitter.toFixed(2)}% + +
+ +
+ )} + {realtimeGPUData.engine_video !== undefined && ( +
+
+ Video + + {realtimeGPUData.engine_video.toFixed(2)}% + +
+ +
+ )} + {realtimeGPUData.engine_video_enhance !== undefined && ( +
+
+ VideoEnhance + + {realtimeGPUData.engine_video_enhance.toFixed(2)}% + +
+ +
+ )} +
+
+ )} + + {/* Memory Info */} + {realtimeGPUData.memory_total && ( +
+

Memory

+
+
+ Total + {realtimeGPUData.memory_total}
- ))} -
-
- )} -
- - ) - })() - ) : ( - // Basic modal without real-time data - (() => { - const pciDevice = findPCIDeviceForGPU(selectedGPU) - - return ( - <> - - {selectedGPU.name} - PCI Device Information - - -
-
- Device Type - Graphics Card -
- -
- PCI Slot - {pciDevice?.slot || selectedGPU.slot} -
- -
- Device Name - {selectedGPU.name} -
- -
- Vendor - {selectedGPU.vendor} -
- - {(pciDevice?.class || selectedGPU.pci_class) && ( -
- Class - {pciDevice?.class || selectedGPU.pci_class} -
- )} - - {(pciDevice?.driver || selectedGPU.pci_driver) && ( -
- Driver - - {pciDevice?.driver || selectedGPU.pci_driver} - -
- )} - - {(pciDevice?.kernel_module || selectedGPU.pci_kernel_module) && ( -
- Kernel Module - - {pciDevice?.kernel_module || selectedGPU.pci_kernel_module} - -
- )} - -
- Type - {selectedGPU.type} -
- - {realtimeGPUData?.has_monitoring_tool === false && ( -
-
-
- - - -
-
-

- Extended Monitoring Not Available -

-

- {getMonitoringToolRecommendation(selectedGPU.vendor)} -

+
+ Used + {realtimeGPUData.memory_used} +
+
+ Free + {realtimeGPUData.memory_free} +
+ {realtimeGPUData.utilization_memory !== undefined && ( +
+
+ Memory Utilization + {realtimeGPUData.utilization_memory}% +
+ +
+ )}
+ )} + + {/* Running Processes (NVIDIA) */} + {realtimeGPUData.processes && realtimeGPUData.processes.length > 0 && ( +
+

Running Processes

+
+ {realtimeGPUData.processes.map((proc: any, idx: number) => ( +
+
+ PID: {proc.pid} + {proc.memory} +
+

{proc.name}

+
+ ))} +
+
+ )} +
+ + ) + })() + : // Basic modal without real-time data + (() => { + const pciDevice = findPCIDeviceForGPU(selectedGPU) + + return ( + <> + + {selectedGPU.name} + PCI Device Information + + +
+
+ Device Type + Graphics Card
- )} -
- - ) - })() - )} + +
+ PCI Slot + {pciDevice?.slot || selectedGPU.slot} +
+ +
+ Device Name + {selectedGPU.name} +
+ +
+ Vendor + {selectedGPU.vendor} +
+ + {(pciDevice?.class || selectedGPU.pci_class) && ( +
+ Class + {pciDevice?.class || selectedGPU.pci_class} +
+ )} + + {(pciDevice?.driver || selectedGPU.pci_driver) && ( +
+ Driver + + {pciDevice?.driver || selectedGPU.pci_driver} + +
+ )} + + {(pciDevice?.kernel_module || selectedGPU.pci_kernel_module) && ( +
+ Kernel Module + + {pciDevice?.kernel_module || selectedGPU.pci_kernel_module} + +
+ )} + +
+ Type + {selectedGPU.type} +
+ + {realtimeGPUData?.has_monitoring_tool === false && ( +
+
+
+ + + +
+
+

+ Extended Monitoring Not Available +

+

+ {getMonitoringToolRecommendation(selectedGPU.vendor)} +

+
+
+
+ )} +
+ + ) + })()} )}