Geraeteformular zum Anlegen und Bearbeiten ergaenzen
Schliesst die letzte offene Luecke aus Phase 1. Bis dahin liessen sich Geraete
nur ueber den Import erfassen — fuer einen Bestand richtig, fuer ein einzelnes
nachbeschafftes Geraet umstaendlich.
Neu:
- /geraete/neu und /geraete/<id>/bearbeiten, beide ueber dieselbe Komponente
- Die Lagerung ist ein Umschalter statt zweier Auswahlfelder. Standort und
Fahrzeug schliessen sich aus; so kann der Fehler gar nicht erst entstehen,
den die Datenbank sonst abweisen wuerde. Beim Wechsel des Fahrzeugs wird die
Raumangabe zurueckgesetzt.
- Prueftermin und Lebensdauerende werden beim Tippen vorgerechnet, mit
denselben Funktionen wie auf dem Server. Beim Speichern rechnet der Server
erneut und behaelt das letzte Wort.
- Gibt es nur einen Standort, ist er beim Anlegen vorbelegt.
- Knopf "Neues Geraet" in der Liste, "Bearbeiten" auf der Detailseite
Behoben:
- Das Formular stuerzte beim ersten Rechnen ab. Die Vorgabewerte lagen in einem
"use client"-Modul und wurden von einer Server-Komponente importiert; dort
kommt nur eine Client-Referenz an, kein Objekt, und das Spreaden ergibt lauter
undefined. Die Werte liegen jetzt in geraet-formular-werte.ts ohne
"use client".
- Das Sternchen an Pflichtfeldern wurde von Sprachausgaben mitgelesen
("Bezeichnung Stern"). Es traegt jetzt aria-hidden; dass ein Feld ausgefuellt
werden muss, sagt bereits das required-Attribut.
- Fehlermeldungen in Formularen sind eindeutig ansteuerbar. Next.js haengt
einen eigenen Routen-Ansager mit der Rolle "alert" in jede Seite.
Tests:
- 7 neue Playwright-Tests zum Formular, darunter die Lagerungsregel und die
Fristenvorschau
- Zwei davon laufen nicht unter Touch-Emulation: Chromium nimmt dort keine
zeichenweise Eingabe in Datumsfelder an. Begruendet uebersprungen, die
Rechnung selbst deckt qr-und-fristen.test.ts ab.
- Insgesamt 104 Unit-Tests und 56 E2E-Tests gruen
Anleitung, Changelog, Devlog, Aufwandsschaetzung und Roadmap fortgeschrieben.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
47b8e36a38
commit
1744403620
@@ -186,6 +186,55 @@ bewusst keine zweite Historie: zwei Quellen könnten auseinanderlaufen.
|
||||
|
||||
---
|
||||
|
||||
## 5a. Ein Gerät anlegen oder ändern
|
||||
|
||||

|
||||
|
||||
Über **Neues Gerät** in der Geräteliste, oder über **Bearbeiten** auf der
|
||||
Detailseite eines vorhandenen Geräts. Für größere Bestände ist der Import der
|
||||
schnellere Weg; dieses Formular ist für den Neuzugang zwischendurch.
|
||||
|
||||
Pflicht sind nur zwei Angaben: **Inventarnummer** und **Bezeichnung**. Alles
|
||||
andere kann später nachgetragen werden.
|
||||
|
||||
### Der Gerätetyp nimmt Arbeit ab
|
||||
|
||||
Wird oben ein Gerätetyp gewählt, gelten dessen Prüfintervall, Prüfvorschrift
|
||||
und Lebensdauer — man muss sie nicht eintragen. Die Felder darunter bleiben
|
||||
trotzdem änderbar: Was dort steht, überschreibt die Vorgabe für dieses eine
|
||||
Gerät. Das braucht man, wenn der Hersteller für eine bestimmte Charge etwas
|
||||
anderes vorschreibt.
|
||||
|
||||
Ist die Bezeichnung noch leer, wird sie aus dem Typ übernommen.
|
||||
|
||||
### „Daraus ergibt sich"
|
||||
|
||||
Der graue Kasten zeigt, was aus den Angaben folgt: wann die nächste Prüfung
|
||||
fällig wird und wann die Nutzungsdauer endet. Er rechnet beim Tippen mit,
|
||||
sodass man vor dem Speichern sieht, was herauskommt. Gerechnet wird mit
|
||||
denselben Regeln wie auf dem Server — beim Speichern rechnet dieser erneut und
|
||||
behält das letzte Wort.
|
||||
|
||||
Steht dort „keine", fehlt entweder das Prüfintervall oder die Indienststellung.
|
||||
Das ist kein Fehler: Für Geräte ohne Prüfpflicht ist es der Normalfall.
|
||||
|
||||
### Wo liegt es?
|
||||
|
||||
Entweder an einem Standort **oder** auf einem Fahrzeug. Der Umschalter lässt
|
||||
nur eines von beidem zu — deshalb kann hier gar nicht erst der Fehler
|
||||
entstehen, den die Datenbank sonst abweisen würde.
|
||||
|
||||
Bei „Auf einem Fahrzeug" lässt sich zusätzlich der Geräteraum angeben. Er darf
|
||||
leer bleiben: Manches liegt lose in der Kabine. Wird das Fahrzeug gewechselt,
|
||||
wird die Raumangabe zurückgesetzt — der Raum gehört zum Fahrzeug.
|
||||
|
||||
Gibt es in der Wehr nur einen Standort, ist er beim Anlegen schon ausgewählt.
|
||||
|
||||
> Jede Änderung landet im Verlauf des Geräts. Wer wissen will, wann ein
|
||||
> Prüftermin verschoben wurde und von wem, findet es dort.
|
||||
|
||||
---
|
||||
|
||||
## 6. Etiketten drucken
|
||||
|
||||
Der Bogen ist auf das gängige Format mit **65 Etiketten je DIN-A4-Seite**
|
||||
|
||||
Reference in New Issue
Block a user