fix(akte): Grid-Overlap bei Nicht-Fahrzeug-Objekten auf Desktop-Breite
CI / backend-tests (push) Successful in 3m37s
CI / frontend-build (push) Successful in 21s

Nutzer-Screenshot-Fund: Notizen/Bereitschaftshistorie/Ressourcenbuchung
werden für JEDES Objekt gerendert, das Desktop-Grid-Template (≥900px) für
Nicht-Fahrzeuge listete diese Grid-Areas aber gar nicht - Kinder ohne
gültige Area landeten im Implicit-Grid und überlappten sich (z.B.
"Hinzufügen"-Button über Bereitschaftshistorie-Text). Zusätzlich: neues
ZaehlerstandPanel (ASSET-009) hatte gar keine Grid-Area zugewiesen, dadurch
zu schmal gerendert (Platzhaltertext abgeschnitten, Zahlen-Spinner
überlappte Text). Beide Templates jetzt vollständig, ZaehlerstandPanel
bekommt eigene Area + Felder untereinander statt in einer Reihe.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VDMvneg6wKfXdXvTYNd3dN
This commit is contained in:
patrickandClaude Sonnet 5 committed 2026-09-13 23:08:41 +02:00
1 parent f3cf7d98dd
commit e5bb213cca
5 files changed
+98 -29

No files matched your search

+36
View File
@@ -15641,3 +15641,39 @@ Keine Commits in dieser Session.
- backend/tests/test_zust004_standort_sichtbarkeit.py | 90 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
---
## 2026-09-13 22:55 – 22:57 (1m)
**Beschreibung:** Claude Code Session
**Projekt:** asb-material
### Commits
- f3cf7d9 docs(backlog): MAINT-008 stale DECISION-REQUIRED-Rest bereinigt
### Geänderte Dateien
- DEVLOG.md | 32 ++++++++++++++++++++++++++++++++
- arbeitskacheln/10_maintenance.md | 6 +-----
---
## 2026-09-13 22:57 – 22:57 (0m)
**Beschreibung:** Claude Code Session
**Projekt:** asb-material
### Commits
Keine Commits in dieser Session.
### Geänderte Dateien
- DEVLOG.md | 32 ++++++++++++++++++++++++++++++++
- arbeitskacheln/10_maintenance.md | 6 +-----
---
## 2026-09-13 23:01 – 23:01 (0m)
**Beschreibung:** Claude Code Session
**Projekt:** asb-material
### Commits
Keine Commits in dieser Session.
### Geänderte Dateien
- DEVLOG.md | 32 ++++++++++++++++++++++++++++++++
- arbeitskacheln/10_maintenance.md | 6 +-----
---
+39 -24
View File
@@ -48,30 +48,45 @@ export function ZaehlerstandPanel({ objektId, fahrzeugdetails, onAktualisiert }:
return (
<div className="card">
<h3 style={{ marginTop: 0 }}>Zählerstand</h3>
<div style={{ marginBottom: "0.5rem" }}>
<span className="text-muted">Kilometerstand: </span>
{fahrzeugdetails?.kilometerstand ?? "–"} km
<span className="text-muted" style={{ marginLeft: "1rem" }}>
Betriebsstunden:{" "}
</span>
{fahrzeugdetails?.betriebsstunden ?? "–"} h
<div style={{ marginBottom: "0.75rem" }}>
<div>
<span className="text-muted">Kilometerstand: </span>
{fahrzeugdetails?.kilometerstand ?? "–"} km
</div>
<div>
<span className="text-muted">Betriebsstunden: </span>
{fahrzeugdetails?.betriebsstunden ?? "–"} h
</div>
</div>
<div className="row" style={{ flexWrap: "wrap", gap: "0.5rem" }}>
<input
className="input"
type="number"
placeholder="Neuer Kilometerstand"
value={kilometerstand}
onChange={(e) => setKilometerstand(e.target.value)}
/>
<input
className="input"
type="number"
step="0.1"
placeholder="Neue Betriebsstunden"
value={betriebsstunden}
onChange={(e) => setBetriebsstunden(e.target.value)}
/>
{/* Card kann schmal sein (Sidebar-Layout) - Felder untereinander statt
in einer Reihe, sonst schneidet der Platzhaltertext ab bzw.
überlappt der Zahlen-Spinner den Text (Bug-Fund per Screenshot). */}
<div className="stack" style={{ gap: "0.5rem" }}>
<div>
<label className="text-muted" style={{ fontSize: "0.85rem", display: "block", marginBottom: "0.2rem" }}>
Neuer Kilometerstand
</label>
<input
className="input"
style={{ width: "100%", boxSizing: "border-box" }}
type="number"
value={kilometerstand}
onChange={(e) => setKilometerstand(e.target.value)}
/>
</div>
<div>
<label className="text-muted" style={{ fontSize: "0.85rem", display: "block", marginBottom: "0.2rem" }}>
Neue Betriebsstunden
</label>
<input
className="input"
style={{ width: "100%", boxSizing: "border-box" }}
type="number"
step="0.1"
value={betriebsstunden}
onChange={(e) => setBetriebsstunden(e.target.value)}
/>
</div>
<button
className="btn btn-primary"
onClick={melden}
@@ -80,7 +95,7 @@ export function ZaehlerstandPanel({ objektId, fahrzeugdetails, onAktualisiert }:
Melden
</button>
</div>
{fehler && <p style={{ color: "var(--color-danger)", marginBottom: 0 }}>{fehler}</p>}
{fehler && <p style={{ color: "var(--color-danger)", marginBottom: 0, marginTop: "0.5rem" }}>{fehler}</p>}
</div>
);
}
+7 -5
View File
@@ -268,11 +268,13 @@ export function AktePage() {
)}
</div>
<ZaehlerstandPanel
objektId={objekt.id}
fahrzeugdetails={akte.fahrzeugdetails}
onAktualisiert={async () => laden()}
/>
<div className="akte-zaehlerstand">
<ZaehlerstandPanel
objektId={objekt.id}
fahrzeugdetails={akte.fahrzeugdetails}
onAktualisiert={async () => laden()}
/>
</div>
<div className="akte-wartung">
<WartungSection objektId={objekt.id} onFehler={setFehler} />
+4
View File
@@ -6,6 +6,7 @@
"kopf"
"aktionen"
"stamm"
"zaehlerstand"
"beladung"
"wartung"
"pruefungen"
@@ -13,6 +14,8 @@
"maengel"
"dokumente"
"notizen"
"tankbuch"
"einsatzhistorie"
"readiness"
"ressourcenbuchung"
"historie";
@@ -21,6 +24,7 @@
.akte-kopf { grid-area: kopf; }
.akte-aktionen { grid-area: aktionen; }
.akte-stamm { grid-area: stamm; }
.akte-zaehlerstand { grid-area: zaehlerstand; }
.akte-beladung { grid-area: beladung; }
.akte-wartung { grid-area: wartung; }
.akte-pruefungen { grid-area: pruefungen; }
+12
View File
@@ -1,13 +1,24 @@
@media (min-width: 900px) {
/* Bug-Fund (Nutzer-Screenshot 2026-09-13): .akte-notizen/-readiness-verlauf/
-ressourcenbuchung werden für JEDES Objekt gerendert (nicht nur
Fahrzeuge), das Nicht-Fahrzeug-Template hier listete diese Grid-Areas
bisher gar nicht - Kinder ohne gültige benannte Area landen im
Implicit-Grid und überlappen unvorhersehbar (Zählerstand-Panel/
Bereitschaftshistorie/Notizen-"Hinzufügen"-Button). Beide Templates
jetzt vollständig, gleiche Areas wie die 1-Spalten-Basis.*/
.akte-grid {
grid-template-columns: 2fr 1fr;
grid-template-areas:
"kopf kopf"
"aktionen aktionen"
"stamm wartung"
"zaehlerstand zaehlerstand"
"beladung pruefungen"
"verantwortlich maengel"
"dokumente dokumente"
"notizen notizen"
"readiness readiness"
"ressourcenbuchung ressourcenbuchung"
"historie historie";
}
@@ -16,6 +27,7 @@
"kopf kopf"
"aktionen aktionen"
"wartung stamm"
"zaehlerstand zaehlerstand"
"pruefungen beladung"
"maengel verantwortlich"
"dokumente dokumente"