Version-Kachel: Klassenkollision behoben, "aktuell" statt Satz

Die zusammengefuehrte Kachel war zerlegt: ich hatte den Wrapper
.dm-abschnitt genannt, den Namen gibt es aber schon - als Flex-Zeile mit
space-between (bausteine/FahrtDetail/TankDetail). Der Kachelinhalt lag dadurch
nebeneinander statt untereinander, der Knopf lief aus der Kachel. Der neue
Wrapper heisst .dm-kachelabschnitt, die bestehende Klasse bleibt unberuehrt.

Gefunden hat es der Eigentuemer, nicht ich: ich hatte nach dem Umbau die
Abstaende der eingesetzten Probe gemessen, aber nie die Kachel selbst
angesehen.

Dazu auf seine Vorgabe: statt "Integration ist aktuell (Zeitpunkt)." steht
jetzt ein gruenes "aktuell" direkt unter dem installierten Stand, der
Zeitpunkt gedaempft daneben. Wurde NIE geprueft, steht dort gar nichts mehr -
gruen "aktuell" waere ohne Pruefung eine Behauptung ohne Grundlage, und der
Knopf "Auf Update pruefen" sagt den Zustand ohnehin. In beiden Codebasen.

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
2026-09-05 11:29:04 +02:00
co-authored by Claude Opus 5
parent 80a3eef6ec
commit f693a41692
7 changed files with 65 additions and 14 deletions
+10 -7
View File
@@ -748,7 +748,7 @@ export function Einstellungen({
<Tile> <Tile>
<span className="ads-eyebrow">Version</span> <span className="ads-eyebrow">Version</span>
<div className="dm-abschnitt"> <div className="dm-kachelabschnitt">
{/* Nur wenn darunter wirklich ein zweiter Abschnitt folgt. Ohne den {/* Nur wenn darunter wirklich ein zweiter Abschnitt folgt. Ohne den
staende "Integration" allein unter "Version" - eine Unterteilung staende "Integration" allein unter "Version" - eine Unterteilung
ohne zweiten Teil, genau wie im Panel, das den App-Abschnitt gar ohne zweiten Teil, genau wie im Panel, das den App-Abschnitt gar
@@ -840,11 +840,14 @@ export function Einstellungen({
</div> </div>
) : ( ) : (
<> <>
<p className="dm-erklaerung"> {integrationUpdate && (
{integrationUpdate <span className="dm-standmarke">
? `Integration ist aktuell (${integrationUpdate.geprueft_am ? datumZeit(integrationUpdate.geprueft_am) : ""}).` aktuell
: "Noch nicht geprüft."} {integrationUpdate.geprueft_am && (
</p> <small>geprüft {datumZeit(integrationUpdate.geprueft_am)}</small>
)}
</span>
)}
<div className="dm-knopfreihe"> <div className="dm-knopfreihe">
<ActionButton onClick={() => void updatePruefenAusloesen()}> <ActionButton onClick={() => void updatePruefenAusloesen()}>
Auf Update prüfen Auf Update prüfen
@@ -861,7 +864,7 @@ export function Einstellungen({
</div> </div>
{otaMoeglich() && ( {otaMoeglich() && (
<div className="dm-abschnitt"> <div className="dm-kachelabschnitt">
<span className="ads-eyebrow">App</span> <span className="ads-eyebrow">App</span>
<Werteliste <Werteliste
kinder={ kinder={
+32 -3
View File
@@ -1653,7 +1653,11 @@ button.dm-listenzeile {
einer Suche nach allen Speicherleisten des Projekts kam das QR-Blatt als einer Suche nach allen Speicherleisten des Projekts kam das QR-Blatt als
Treffer heraus, obwohl es dort nichts zu speichern gibt (vom Eigentümer Treffer heraus, obwohl es dort nichts zu speichern gibt (vom Eigentümer
richtiggestellt). Eine Klasse soll eine Sache bedeuten. */ richtiggestellt). Eine Klasse soll eine Sache bedeuten. */
/* Zwei benannte Abschnitte in EINER Kachel, durch eine Haarlinie getrennt. /* NICHT .dm-abschnitt - den Namen gibt es schon, als Flex-Zeile mit
space-between (weiter oben, benutzt in bausteine/FahrtDetail/TankDetail).
Genau diese Verwechslung hat am 05.09.2026 die Version-Kachel zerlegt.
Zwei benannte Abschnitte in EINER Kachel, durch eine Haarlinie getrennt.
Gebraucht in "Version": dort stehen seit dem 05.09.2026 die Integration Gebraucht in "Version": dort stehen seit dem 05.09.2026 die Integration
und die App untereinander, jede mit eigenem Stand und eigenem und die App untereinander, jede mit eigenem Stand und eigenem
@@ -1663,7 +1667,32 @@ button.dm-listenzeile {
Die Linie sitzt am ZWEITEN Abschnitt (Geschwister-Selektor), damit der Die Linie sitzt am ZWEITEN Abschnitt (Geschwister-Selektor), damit der
erste keinen Strich direkt unter der Kachelueberschrift bekommt. */ erste keinen Strich direkt unter der Kachelueberschrift bekommt. */
.dm-abschnitt + .dm-abschnitt { /* "aktuell" als grünes Wort direkt unter dem installierten Stand, statt
eines Satzes darunter (Vorgabe des Eigentuemers, 05.09.2026).
Der Zeitpunkt der Prüfung bleibt daneben stehen, gedaempft: die
angezeigte Fassung ist das gespeicherte Ergebnis der letzten Prüfung,
nicht der Live-Stand - ohne den Zeitpunkt sieht eine Wochen alte Zahl aus
wie eine Tatsache.
Wurde NIE geprüft, steht hier gar nichts: grün "aktuell" wäre dann
eine Behauptung ohne Grundlage, und der Knopf "Auf Update prüfen" sagt
den Zustand ohnehin. */
.dm-standmarke {
display: block;
margin-top: 6px;
font-size: 13px;
line-height: 1.6;
color: var(--ok);
}
.dm-standmarke small {
margin-left: 8px;
color: var(--fg2);
font-size: 13px;
}
.dm-kachelabschnitt + .dm-kachelabschnitt {
margin-top: var(--sp-4); margin-top: var(--sp-4);
padding-top: var(--sp-4); padding-top: var(--sp-4);
border-top: 1px solid var(--line); border-top: 1px solid var(--line);
@@ -1671,7 +1700,7 @@ button.dm-listenzeile {
/* Die Ueberschrift eines Abschnitts ist kein direktes Kind der Kachel, die /* Die Ueberschrift eines Abschnitts ist kein direktes Kind der Kachel, die
Regel .ads-tile > .ads-eyebrow:first-child greift hier also nicht. */ Regel .ads-tile > .ads-eyebrow:first-child greift hier also nicht. */
.dm-abschnitt > .ads-eyebrow:first-child { .dm-kachelabschnitt > .ads-eyebrow:first-child {
display: block; display: block;
margin-bottom: 14px; margin-bottom: 14px;
} }
@@ -1 +1 @@
{"version":"2026.9.5.16","sha256":"0e0e8054be5aff66e649b872c00b809be6151b6e63e0e4d902342ed8d7b6b6c4","bytes":324571,"gebaut":"2026-09-05T09:19:12Z"} {"version":"2026.9.5.18","sha256":"8b03fe0a871e5fc88b421146910832fbd73999ee9844000efbaf1b41a52ab603","bytes":324620,"gebaut":"2026-09-05T09:27:15Z"}
@@ -3764,8 +3764,8 @@ function vEinst() {
<button class="aktion primaer" style="margin-top:14px" data-update="installieren">Update installieren</button> <button class="aktion primaer" style="margin-top:14px" data-update="installieren">Update installieren</button>
<button class="aktion" style="margin-top:8px" data-update="pruefen">Erneut prüfen</button>`; <button class="aktion" style="margin-top:8px" data-update="pruefen">Erneut prüfen</button>`;
} }
return `<span style="display:block;margin-top:8px;color:var(--fg2);font-size:13px;line-height:1.6"> return `${u ? `<span class="standmarke">aktuell${u.geprueft_am
${u ? `Integration ist aktuell${u.geprueft_am ? ` (geprüft ${dedat(new Date(u.geprueft_am))})` : ""}.` : "Noch nicht geprüft."}</span> ? `<small>geprüft ${dedat(new Date(u.geprueft_am))}</small>` : ""}</span>` : ""}
<button class="aktion" style="margin-top:14px" data-update="pruefen">Auf Update prüfen</button>`; <button class="aktion" style="margin-top:14px" data-update="pruefen">Auf Update prüfen</button>`;
})()} })()}
${INTEGRATION_UPDATE && INTEGRATION_UPDATE.fehler && !INTEGRATION_UPDATE_LAEUFT ${INTEGRATION_UPDATE && INTEGRATION_UPDATE.fehler && !INTEGRATION_UPDATE_LAEUFT
@@ -828,6 +828,25 @@ img.carfix.klein { aspect-ratio: auto; height: auto; }
.mitEinheit input { min-width: 0; width: 96px; text-align: right; } .mitEinheit input { min-width: 0; width: 96px; text-align: right; }
.mitEinheit span:last-child { font-size: 13px; color: var(--fg2); } .mitEinheit span:last-child { font-size: 13px; color: var(--fg2); }
.druckfeld { width: 58px !important; min-width: 0 !important; } .druckfeld { width: 58px !important; min-width: 0 !important; }
/* "aktuell" als gruenes Wort direkt unter dem installierten Stand, statt
eines Satzes darunter (Vorgabe des Eigentuemers, 05.09.2026).
Der Zeitpunkt der Pruefung bleibt daneben stehen, gedaempft: die
angezeigte Fassung ist das gespeicherte Ergebnis der letzten Pruefung,
nicht der Live-Stand - ohne den Zeitpunkt sieht eine Wochen alte Zahl aus
wie eine Tatsache.
Wurde NIE geprueft, steht hier gar nichts: gruen "aktuell" waere dann
eine Behauptung ohne Grundlage, und der Knopf "Auf Update pruefen" sagt
den Zustand ohnehin. */
.standmarke {
display: block;
margin-top: 6px;
font-size: 13px;
line-height: 1.6;
color: var(--ok);
}
.standmarke small { margin-left: 8px; color: var(--fg2); font-size: 13px; }
/* Feldbreiten nach dem, was drinsteht, statt nach dem Browser-Standardwert. /* Feldbreiten nach dem, was drinsteht, statt nach dem Browser-Standardwert.
Ohne diese Klassen bekommt jedes Textfeld dieselbe intrinsische Breite Ohne diese Klassen bekommt jedes Textfeld dieselbe intrinsische Breite
@@ -1,7 +1,7 @@
{ {
"domain": "audi_dashboard", "domain": "audi_dashboard",
"name": "Audi Dashboard", "name": "Audi Dashboard",
"version": "2026.9.5.16", "version": "2026.9.5.18",
"documentation": "https://gitea.nothaft.cloud/paul/audi-app/src/branch/main/README.md", "documentation": "https://gitea.nothaft.cloud/paul/audi-app/src/branch/main/README.md",
"issue_tracker": "https://gitea.nothaft.cloud/paul/audi-app/issues", "issue_tracker": "https://gitea.nothaft.cloud/paul/audi-app/issues",
"codeowners": [ "codeowners": [