From b130eeb967302e500124099d86854294f28707ea Mon Sep 17 00:00:00 2001 From: Hitonabi Date: Fri, 24 Jul 2026 16:44:33 +0200 Subject: [PATCH] feat(ui): Master-Panel 'Ripping Operations' DIREKT unter Laufwerke verschoben --- docker/ui/src/pages/Dashboard.tsx | 256 +++++++++++++++--------------- 1 file changed, 128 insertions(+), 128 deletions(-) diff --git a/docker/ui/src/pages/Dashboard.tsx b/docker/ui/src/pages/Dashboard.tsx index 5c5cd90..dc65adb 100644 --- a/docker/ui/src/pages/Dashboard.tsx +++ b/docker/ui/src/pages/Dashboard.tsx @@ -1,5 +1,5 @@ import { useEffect, useState } from 'react' -import { Cpu, HardDrive, Disc, Download, Trash2, Activity, Film, Server, RotateCcw, FileSpreadsheet, Play, Layers, Clock, AlertCircle } from 'lucide-react' +import { Cpu, HardDrive, Disc, Download, Trash2, Activity, Film, Server, RotateCcw, FileSpreadsheet, Layers } from 'lucide-react' import { api } from '../lib/api' import { useToast } from '../context/ToastContext' import { Card, CardHeader, CardTitle, CardContent } from '../components/ui/Card' @@ -145,132 +145,10 @@ export default function Dashboard() { return (
- {/* 1. GANZ OBEN: Laufwerke & Erkannte Disc im Laufwerk (Akira Auto Pre-Scan Banner) */} + {/* POS 1: LAUFWERKE (Device Discovery Slot ganz oben) */} - {/* 2. SYSTEM STATUS & ZULETZT GERIPPT HIGHLIGHT LEISTE */} -
- - {/* Left: Server Status Card */} -
- - - - - Server Status (Echte Live-Daten) - - - -
-
-
-
- Auslastung: - {aktiverJob ? `${cpuPercent}% (Aktiv)` : 'Standby (0%)'} -
-
-
-
-
- -
-
- Worker Status: - {workerCount} Worker Online -
-
-
-
-
- -
-
- Speichermounts: - {freiGb > 0 ? `${freiGb} GB frei` : 'Aktiv'} -
-
-
-
-
-
- -
- - - -
-
- - -
- - {/* Right: Recently Ripped Posters */} -
- - - Zuletzt gerippt ({completedJobs.length}) - {completedJobs.length > 0 && ( - - )} - - - {completedJobs.length === 0 ? ( -
- Noch keine gerippten Medien in der Datenbank -
- ) : ( -
- {completedJobs.slice(0, 3).map((item) => { - const poster = posterUrl(item.meta) - return ( -
-
- {poster ? ( - {item.title - ) : ( -
- - {item.type} -
- )} -
- -
-

{item.title || 'Unbekannt'}

-

{new Date(item.startTime).toLocaleDateString('de-DE')}

- -
-
- ) - })} -
- )} -
-
-
- -
- - {/* 3. DAS EINE ZUSAMMENGEFASSTE MASTER-PANEL: "Ripping Operations & Medien-Manager" */} + {/* POS 2: RIPPING OPERATIONS & MEDIEN-MANAGER (DIREKT UNTER LAUFWERKE!) */}
@@ -364,7 +242,7 @@ export default function Dashboard() { - {/* Top Banner inside Master Panel when a Job is Ripping Live */} + {/* Live Rip Banner inside Panel when a Job is active */} {aktiverJob && (activeTab === 'all' || activeTab === 'active') && (
@@ -410,7 +288,7 @@ export default function Dashboard() {
)} - {/* Master Unified Table */} + {/* Unified Jobs Table */} {filteredJobs.length === 0 ? (
@@ -534,7 +412,129 @@ export default function Dashboard() { - {/* 4. Live-Log Section */} + {/* POS 3: SYSTEM STATUS & ZULETZT GERIPPT HIGHLIGHT LEISTE (UNTER DEM MASTER-PANEL) */} +
+ + {/* Left: Server Status Card */} +
+ + + + + Server Status (Echte Live-Daten) + + + +
+
+
+
+ Auslastung: + {aktiverJob ? `${cpuPercent}% (Aktiv)` : 'Standby (0%)'} +
+
+
+
+
+ +
+
+ Worker Status: + {workerCount} Worker Online +
+
+
+
+
+ +
+
+ Speichermounts: + {freiGb > 0 ? `${freiGb} GB frei` : 'Aktiv'} +
+
+
+
+
+
+ +
+ + + +
+
+ + +
+ + {/* Right: Recently Ripped Posters */} +
+ + + Zuletzt gerippt ({completedJobs.length}) + {completedJobs.length > 0 && ( + + )} + + + {completedJobs.length === 0 ? ( +
+ Noch keine gerippten Medien in der Datenbank +
+ ) : ( +
+ {completedJobs.slice(0, 3).map((item) => { + const poster = posterUrl(item.meta) + return ( +
+
+ {poster ? ( + {item.title + ) : ( +
+ + {item.type} +
+ )} +
+ +
+

{item.title || 'Unbekannt'}

+

{new Date(item.startTime).toLocaleDateString('de-DE')}

+ +
+
+ ) + })} +
+ )} +
+
+
+ +
+ + {/* POS 4: Live-Log Section */} setDetailJobId(null)} />