edefdd66d8
- Archiv-Knopf jetzt in Zeile mit "Montiert" (stale margin-top entfernt), bekommt einen sichtbaren Hintergrund - companion-app: Wechseltermin-Datumsfeld (appearance-Reset gegen natives Safari-Chrome, Breite auf Inhalt geschrumpft) - Mein Audi/Reifen-Box: "montiert: Sommerräder" links statt Marke/Modell, "offen" durch "-" ersetzt - "Servicebuch" ueberall in "Wartungsplan" umbenannt (nur Anzeigetext, beide Codebasen) - Version-Kachel: tote Fahrzeugdaten-/Position-/Dashboard-Zeilen entfernt (inkl. der nie aktualisierten CONFIG.version-Konstante) Version 2026.8.28.1, live im Testcontainer verifiziert. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
122 lines
3.0 KiB
TypeScript
122 lines
3.0 KiB
TypeScript
/**
|
|
* Flacher Navigationszustand — kein Router-Paket.
|
|
*
|
|
* Übernommen aus dem alten HA-Panel (`route` + `ZURUECK`): Die App hat keinen
|
|
* Verlaufsstapel, sondern genau eine aktuelle Seite und eine feste Tabelle,
|
|
* welche Seite der Zurück-Pfeil ansteuert. Das ist bewusst so geblieben —
|
|
* die Verschachtelung ist flach genug (höchstens drei Ebenen), und ein Router
|
|
* würde nur Gewicht ohne Nutzen bringen.
|
|
*/
|
|
|
|
export const HAUPTBEREICHE = ["home", "audi", "trips", "stat", "fuel"] as const
|
|
|
|
export type Hauptbereich = (typeof HAUPTBEREICHE)[number]
|
|
|
|
export type SeitenName =
|
|
| Hauptbereich
|
|
// Unterseiten von "Mein Audi"
|
|
| "ident"
|
|
| "battverlauf"
|
|
| "battliste"
|
|
| "service"
|
|
| "werkstatt"
|
|
| "sbuch"
|
|
| "reifen"
|
|
| "vers"
|
|
| "beitrag"
|
|
| "vertrag"
|
|
| "vertragsdetails"
|
|
| "schutz"
|
|
| "notruf"
|
|
| "steuer"
|
|
// Detailseiten der Listen
|
|
| "trip"
|
|
| "fill"
|
|
// Sonstige
|
|
| "sicherheit"
|
|
| "tuerenklappen"
|
|
| "live"
|
|
| "einst"
|
|
|
|
export interface Route {
|
|
name: SeitenName
|
|
/** Datensatz-Kennung bei Detailseiten (Fahrt, Tankvorgang, Servicebuch). */
|
|
id?: string
|
|
}
|
|
|
|
/**
|
|
* Ziel des Zurück-Pfeils je Unterseite. Seiten, die hier fehlen, sind
|
|
* Hauptbereiche und zeigen keinen Zurück-Pfeil.
|
|
*/
|
|
export const ZURUECK: Partial<Record<SeitenName, SeitenName>> = {
|
|
trip: "trips",
|
|
fill: "fuel",
|
|
service: "audi",
|
|
reifen: "audi",
|
|
ident: "audi",
|
|
battverlauf: "audi",
|
|
battliste: "battverlauf",
|
|
vers: "audi",
|
|
beitrag: "vers",
|
|
vertrag: "vers",
|
|
vertragsdetails: "vers",
|
|
schutz: "vertragsdetails",
|
|
steuer: "vers",
|
|
notruf: "vers",
|
|
werkstatt: "service",
|
|
sbuch: "service",
|
|
einst: "home",
|
|
sicherheit: "home",
|
|
tuerenklappen: "sicherheit",
|
|
live: "home",
|
|
}
|
|
|
|
/** Überschrift je Seite. Leer bedeutet: die Seite bringt ihre eigene mit. */
|
|
export const TITEL: Record<SeitenName, string> = {
|
|
home: "Übersicht",
|
|
audi: "Mein Audi",
|
|
trips: "Fahrten",
|
|
stat: "Statistik",
|
|
fuel: "Tanken",
|
|
ident: "Fahrzeugdaten",
|
|
battverlauf: "Batterie",
|
|
battliste: "Messwerte",
|
|
service: "Service",
|
|
werkstatt: "Werkstatt",
|
|
sbuch: "Wartungsplan",
|
|
reifen: "Reifen",
|
|
vers: "Versicherung & Steuer",
|
|
beitrag: "Beitrag",
|
|
vertrag: "Vertrag",
|
|
vertragsdetails: "Vertragsdetails",
|
|
schutz: "Schutzbrief",
|
|
notruf: "Notruf",
|
|
steuer: "Kfz-Steuer",
|
|
trip: "Fahrt",
|
|
fill: "Tankvorgang",
|
|
sicherheit: "Fahrzeugstatus",
|
|
tuerenklappen: "Türen und Klappen",
|
|
live: "Fahrt läuft",
|
|
einst: "Einstellungen",
|
|
}
|
|
|
|
export function istHauptbereich(name: SeitenName): name is Hauptbereich {
|
|
return (HAUPTBEREICHE as readonly string[]).includes(name)
|
|
}
|
|
|
|
/**
|
|
* Der Hauptbereich, zu dem eine Seite gehört — bestimmt, welcher Eintrag in
|
|
* Tab-Leiste bzw. Seitenleiste hervorgehoben wird. Folgt der ZURUECK-Kette
|
|
* nach oben.
|
|
*/
|
|
export function bereichVon(name: SeitenName): Hauptbereich {
|
|
let aktuell: SeitenName = name
|
|
for (let tiefe = 0; tiefe < 5; tiefe++) {
|
|
if (istHauptbereich(aktuell)) return aktuell
|
|
const eltern = ZURUECK[aktuell]
|
|
if (!eltern) return "home"
|
|
aktuell = eltern
|
|
}
|
|
return "home"
|
|
}
|