diff --git a/AppImage/components/storage-overview.tsx b/AppImage/components/storage-overview.tsx index beb99b6..a9caff7 100644 --- a/AppImage/components/storage-overview.tsx +++ b/AppImage/components/storage-overview.tsx @@ -147,11 +147,15 @@ export function StorageOverview() { ) } + const disksWithTemp = storageData.disks.filter((disk) => disk.temperature > 0) const avgTemp = - storageData.disks.length > 0 - ? Math.round(storageData.disks.reduce((sum, disk) => sum + disk.temperature, 0) / storageData.disks.length) + disksWithTemp.length > 0 + ? Math.round(disksWithTemp.reduce((sum, disk) => sum + disk.temperature, 0) / disksWithTemp.length) : 0 + const usagePercent = + storageData.total > 0 ? ((storageData.used / (storageData.total * 1024)) * 100).toFixed(2) : "0.00" + return (
{/* Storage Summary */} @@ -174,9 +178,7 @@ export function StorageOverview() {
{storageData.used.toFixed(1)} GB
-

- {storageData.total > 0 ? ((storageData.used / (storageData.total * 1024)) * 100).toFixed(1) : 0}% used -

+

{usagePercent}% used

@@ -331,13 +333,15 @@ export function StorageOverview() { {disk.usage_percent}% )}
- {disk.usage_percent !== undefined && } - {disk.total && disk.used && disk.available && ( -
- {disk.used} GB used - - {disk.available} GB free of {disk.total} GB - + {disk.usage_percent !== undefined && ( +
+ +
+ {disk.used} GB used + + {disk.available} GB free of {disk.total} GB + +
)}
@@ -447,11 +451,11 @@ export function StorageOverview() {
Used: - {selectedDisk.used} GB + {selectedDisk.used} GB
Available: - {selectedDisk.available} GB + {selectedDisk.available} GB
{selectedDisk.usage_percent !== undefined && (
diff --git a/AppImage/scripts/flask_server.py b/AppImage/scripts/flask_server.py index 14589e4..88eae91 100644 --- a/AppImage/scripts/flask_server.py +++ b/AppImage/scripts/flask_server.py @@ -363,7 +363,8 @@ def get_storage_info(): if len(parts) >= 3 and parts[2] == 'disk': disk_name = parts[0] disk_size_bytes = int(parts[1]) - disk_size_gb = round(disk_size_bytes / (1024**3), 1) + disk_size_gb = disk_size_bytes / (1024**3) + disk_size_tb = disk_size_bytes / (1024**4) total_disk_size_bytes += disk_size_bytes @@ -372,9 +373,14 @@ def get_storage_info(): smart_data = get_smart_data(disk_name) print(f"[v0] SMART data for {disk_name}: {smart_data}") + if disk_size_tb >= 1: + size_str = f"{disk_size_tb:.1f}T" + else: + size_str = f"{disk_size_gb:.1f}G" + physical_disks[disk_name] = { 'name': disk_name, - 'size': f"{disk_size_gb}T" if disk_size_gb >= 1000 else f"{disk_size_gb}G", + 'size': size_str, 'size_bytes': disk_size_bytes, 'temperature': smart_data.get('temperature', 0), 'health': smart_data.get('health', 'unknown'), @@ -399,7 +405,7 @@ def get_storage_info(): except Exception as e: print(f"Error getting disk list: {e}") - storage_data['total'] = round(total_disk_size_bytes / (1024**3), 1) + storage_data['total'] = round(total_disk_size_bytes / (1024**4), 1) # Get disk usage for mounted partitions try: @@ -643,6 +649,23 @@ def get_smart_data(disk_name): smart_data['health'] = 'critical' elif smart_data['temperature'] >= 60: smart_data['health'] = 'warning' + else: + print(f"[v0] smartctl returned code {result.returncode} for {disk_name}") + print(f"[v0] stderr: {result.stderr}") + # Intentar obtener al menos información básica del disco + try: + result_info = subprocess.run(['smartctl', '-i', f'/dev/{disk_name}'], + capture_output=True, text=True, timeout=5) + if result_info.returncode in [0, 4]: + output = result_info.stdout + for line in output.split('\n'): + line = line.strip() + if line.startswith('Device Model:') or line.startswith('Model Number:'): + smart_data['model'] = line.split(':', 1)[1].strip() + elif line.startswith('Serial Number:'): + smart_data['serial'] = line.split(':', 1)[1].strip() + except Exception as e: + print(f"[v0] Error getting basic info for {disk_name}: {e}") except FileNotFoundError: print(f"smartctl not found - install smartmontools package")