From 7f1bc6055e948a8296c30cfb2acada13b6287408 Mon Sep 17 00:00:00 2001 From: Hitonabi Date: Thu, 24 Sep 2026 22:33:38 +0200 Subject: [PATCH] modelle: Aufraeumen-Listen eingeklappt mit Zusammenfassung, ruhigere Loeschknoepfe Co-Authored-By: Claude Opus 5.5 --- frontend/src/views/Modelle.tsx | 43 ++++++++++++++++++++++++---------- 1 file changed, 31 insertions(+), 12 deletions(-) diff --git a/frontend/src/views/Modelle.tsx b/frontend/src/views/Modelle.tsx index 94510fe..c9b9864 100644 --- a/frontend/src/views/Modelle.tsx +++ b/frontend/src/views/Modelle.tsx @@ -1,7 +1,7 @@ -import { useEffect, useRef, useState } from "react" +import { type ReactNode, useEffect, useRef, useState } from "react" import { useQueryClient } from "@tanstack/react-query" import { useLocation } from "@tanstack/react-router" -import { Search } from "lucide-react" +import { ChevronRight, Search } from "lucide-react" import { Auftraege } from "@/components/cockpit/Auftraege" import { Bestaetigen } from "@/components/cockpit/Bestaetigen" import { Chip, type ChipArt, Zustandsfeld } from "@/components/cockpit/Chip" @@ -325,6 +325,25 @@ function RadarPanel({ hirn, coder }: { hirn: string | undefined; coder: string | ) } +/** Löschen in Listen: ruhig und erst beim Zeigen rot — die Rückfrage danach ist rot und endgültig. */ +const LOESCHKNOPF = "text-rot-text hover:bg-rot-grund hover:text-rot-text" + +/** Eine eingeklappte Liste mit Zusammenfassung — lange Aufräum-Listen erst auf Wunsch. */ +function Klappe({ titel, zusatz, children }: { titel: string; zusatz: string; children: ReactNode }) { + return ( +
+ + + + {titel} + + {zusatz} + +
{children}
+
+ ) +} + /** Was ungenutzt Platz belegt. Gelöscht wird nur auf Knopfdruck, mit Rückfrage — Löschen ist endgültig. */ function AufraeumenPanel() { const liste = useAufraeumen() @@ -355,6 +374,7 @@ function AufraeumenPanel() { ) : kandidaten.length === 0 ? (

Nichts aufzuräumen.

) : ( +
    {kandidaten.map((k) => (
  • @@ -367,13 +387,14 @@ function AufraeumenPanel() { {k.groesse_gb.toLocaleString("de-DE")} GB -
  • ))}
+
)} s + a.groesse_bytes, 0) return (
-
-

Altreste neben dem Betrieb

- {reste.length > 0 && zusammen {mengeText(summe)}} -
-

- Test-Ordner, alte Umgebungen und Arbeitskopien, die nichts mehr nutzt. Die Box prüft sie gegen eine feste Liste und - löscht auch hier nie von selbst. -

{liste.isPending ? (

Wird gelesen …

) : liste.isError && !liste.data ? ( @@ -425,6 +438,11 @@ function Altreste() { ) : reste.length === 0 ? (

Keine Altreste mehr.

) : ( + +

+ Test-Ordner, alte Umgebungen und Arbeitskopien, die nichts mehr nutzt. Die Box prüft sie gegen eine feste Liste + und löscht auch hier nie von selbst. +

    {reste.map((a) => (
  • @@ -438,13 +456,14 @@ function Altreste() { {a.groesse} -
  • ))}
+
)}