start: Radar-Kasten springt wirklich zum Radar, Checkliste fragt vor Neustart und Freigeben
- "Ansehen" im Radar-Kasten fuehrt nach /modelle#radar. Der Router sprang beim Rendern zum Anker, als dort noch "wird gelesen" stand; jetzt springt die Modelle-Seite, sobald alles ueber dem Radar geladen ist. - Knoepfe der Checkliste, die einen Dienst (neu) starten, einen Job erneut laufen lassen oder ein Update freigeben, fragen vorher nach. Das Protokoll oeffnet weiter sofort; der Dialog wird erst bei Bedarf geladen und bleibt aus dem Start-Buendel. - Scheitert nur ein spaeteres Nachladen, bleibt der letzte Stand der Startseite stehen statt einer Fehlerflaeche. - Test fuer die Rueckfrage-Logik (wann gefragt wird, Checkliste erst nach "Ja", gesperrter Ja-Knopf, Ersatz-Hinweis beim Installieren). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
3c1d8bf88f
commit
739f27a7e5
@@ -1,7 +1,7 @@
|
||||
// Reine Anzeige-Logik der Cockpit-Seiten — getrennt von den Komponenten, damit sie ohne
|
||||
// DOM testbar bleibt und Vites Hot-Reload die Komponenten-Dateien sauber tauschen kann.
|
||||
|
||||
import type { AktionsErgebnis, Job, Modell, Start } from "./typen"
|
||||
import type { AktionsErgebnis, Hinweis, HinweisAktion, Job, Modell, Start } from "./typen"
|
||||
|
||||
// --- Rundinstrument -----------------------------------------------------------------
|
||||
// 240°-Bogen wie ein Zeigerinstrument, Mittelpunkt (100|95) in einer 200×150-Zeichnung.
|
||||
@@ -54,6 +54,53 @@ export function hauptleuchte(z: Start["zustand"]) {
|
||||
: { art: "gelb" as const, oben: "Achtung", mitte, unten: "Drücken zum Ansehen" }
|
||||
}
|
||||
|
||||
// --- Checkliste ---------------------------------------------------------------------
|
||||
|
||||
export interface Rueckfrage {
|
||||
titel: string
|
||||
text: string
|
||||
knopf: string
|
||||
}
|
||||
|
||||
/**
|
||||
* Braucht ein Knopf eines Hinweises eine Rückfrage? Ja bei allem, was etwas neu startet, erneut
|
||||
* laufen lässt oder freigibt (services/waechter.fuehre_aktion_aus). Nur das Protokoll öffnet sofort.
|
||||
*/
|
||||
export function hinweisRueckfrage(
|
||||
h: Pick<Hinweis, "id" | "titel">,
|
||||
a: Pick<HinweisAktion, "id" | "label">,
|
||||
): Rueckfrage | null {
|
||||
const betrifft = `„${h.titel}“:`
|
||||
switch (a.id) {
|
||||
case "protokoll":
|
||||
return null
|
||||
case "neustart":
|
||||
if (h.id.startsWith("timer:")) {
|
||||
return { titel: `${a.label}?`, text: `${betrifft} Der Dienst läuft sofort noch einmal.`, knopf: a.label }
|
||||
}
|
||||
return {
|
||||
titel: `${a.label}?`,
|
||||
text: `${betrifft} Der Dienst wird ${/^starten/i.test(a.label) ? "gestartet" : "neu gestartet"} und ist dabei kurz nicht erreichbar.`,
|
||||
knopf: a.label,
|
||||
}
|
||||
case "job-wiederholen":
|
||||
return {
|
||||
titel: "Job erneut ausführen?",
|
||||
text: `${betrifft} Hermes führt den Job sofort noch einmal aus, mit allem, was er sonst auch tut — etwa Nachrichten verschicken.`,
|
||||
knopf: a.label,
|
||||
}
|
||||
case "freigeben":
|
||||
return {
|
||||
titel: "Update freigeben?",
|
||||
text: `${betrifft} Nach dem Freigeben versucht der nächste Sonntags-Lauf das Update wieder.`,
|
||||
knopf: a.label,
|
||||
}
|
||||
default:
|
||||
// Ein Knopf, den der Wächter neu gelernt hat: lieber einmal zu oft fragen als einmal zu wenig.
|
||||
return { titel: `${a.label}?`, text: `${betrifft} ${a.label}.`, knopf: a.label }
|
||||
}
|
||||
}
|
||||
|
||||
// --- Aktionen und Aufträge (auch im Start-Bündel gebraucht) ----------------------------
|
||||
|
||||
/** Warum eine Aktion nicht geklappt hat — die Endpunkte legen den Grund in verschiedene Felder. */
|
||||
|
||||
Reference in New Issue
Block a user