Setup-Menü: runde Klammern aus Feld-Labels entfernt, Popup verbreitert

- FELDER-Katalog: "(Datum)"/"(Restkilometer)"/"(Liter)"/"(Knopf)"/"(Fahrertür)"
  aus sieben Labels entfernt - die Unterscheidung übernimmt bereits das
  [Einheit]-Label neben der Überschrift (feldEinheitAnzeige()).
- .setup-popup auf max-width:760px verbreitert (eigener Wert, getrennt von
  .sdpopup/.sheet/.beleg-popup), damit lange Rohsensornamen nicht mehr
  umbrechen müssen.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-28 11:19:28 +02:00
parent d1cc742a59
commit ff9aaeb338
4 changed files with 44 additions and 9 deletions
+29
View File
@@ -4315,6 +4315,35 @@ clean via log; all three fixes re-verified live in the browser (Tanken form scre
of `-98` and the shrunk `Kilometerstand`/`Getankte Liter` fields; Setup candidate-list device_class check
above).
**`.10`: the owner's "round collum" report was about something else entirely** - not the ellipsis (already
fixed and confirmed gone at `.9`), but the parenthetical suffixes on seven Setup field labels
("Nächster Ölwechsel **(Datum)**", "Tankvolumen **(Liter)**", "Türschloss **(Fahrertür)**", ...) - "remove
alle words in round collum for Sensors". Stripped the `(...)` suffix from all seven `FELDER` labels in
`einstellungen.py` (`TANK_LITER_SENSOR`, `REFRESH_BUTTON`, `TUERSCHLOSS_SENSOR`,
`NAECHSTER_OELWECHSEL_SENSOR`/`OELWECHSEL_STRECKE_SENSOR`, `NAECHSTE_INSPEKTION_SENSOR`/
`INSPEKTION_STRECKE_SENSOR`). Safe to do without losing the Datum-vs-Restkilometer distinction the
parenthetical used to carry: the `.7`/`.8` work earlier this same round already added a `[Datum]`/`[km]`
unit label next to every headline (`feldEinheitAnzeige()`) - that bracket now carries the disambiguation
the round-bracket suffix used to, so "Nächster Ölwechsel" now shows as two rows differing only by
`[Datum]` vs `[km]`, same as every other field pair in the catalog.
**Also `.10`: "Make the Popup wider because of the long Name"** - the owner had manually mapped
`TANK_DISTANZ_SENSOR` to `calculated_distance_covered_after_the_latest_refueling` (55 characters), which
the `.setup-popup`'s existing desktop cap (`max-width:560px`, from the 2026-08-13 design audit) had too
little room for even after the `.8` ellipsis fix let it wrap. Widened `.setup-popup` specifically to
`max-width:760px` in the `@container (min-width:860px)` block (`audi-dashboard-ios.css`) - split out of
the shared `.sdpopup,.sheet,.beleg-popup,.setup-popup` selector so only Setup (the one popup that shows
raw, potentially long sensor identifiers) gets the wider cap; the others are unaffected. Verified live at
a real 1400px viewport (not the browser tool's `desktop` preset, which stays narrow - same lesson noted
in section N): `getBoundingClientRect()`/`getClientRects()` on the actual rendered hint span confirmed
the popup measures 760px and the full 55-character name now renders on a single, unclipped line
(`scrollWidth === clientWidth`, `lineCount: 1`) instead of wrapping or overflowing.
Verified: `py_compile` clean on `einstellungen.py` (inside `audi_ha_test`, `MSYS_NO_PATHCONV=1` needed for
`docker cp`/`docker exec` on this machine's Git Bash - plain paths were silently mis-translated to a
Windows path once, worth remembering for future sessions), manifest bumped to `2026.8.28.10`,
`audi_ha_test` restarted and confirmed clean via log, both fixes confirmed live in the browser as above.
Verified live in `audi_ha_test` at every step (`.6` then `.7`), each time reading the actual rendered Setup
popup fresh after a real restart (not a stale tab - confirmed via `performance.getEntriesByType('resource')`
showing the new `?v=` served with a nonzero transfer size each time). Final state (`.7`), all 20 single-value
@@ -168,7 +168,7 @@ FELDER: list[dict] = [
"hinweis": "Füllstand in Prozent - für die automatische Tankerkennung.",
"domains": ["sensor"], "device_classes": [], "units": ["%"], "liste": False, "pflicht": False,
"stichworte": ["tank", "fuel", "kraftstoff", "füllstand", "level"]},
{"key": "TANK_LITER_SENSOR", "label": "Tankvolumen (Liter)", "gruppe": "fahrterkennung",
{"key": "TANK_LITER_SENSOR", "label": "Tankvolumen", "gruppe": "fahrterkennung",
"hinweis": "Optional, vom CAN statt aus dem Prozentwert umgerechnet - macht die automatische "
"Tankerkennung genauer und liefert eine Vorbelegung für die getankte Menge.",
"domains": ["sensor"], "device_classes": ["volume"], "units": ["L", "l"], "liste": False, "pflicht": False,
@@ -191,7 +191,7 @@ FELDER: list[dict] = [
"Temperaturwert je Tag.",
"domains": ["sensor"], "device_classes": ["temperature"], "units": ["°C", "°F"], "liste": False,
"pflicht": False, "stichworte": ["außentemperatur", "aussentemperatur", "ambient", "temperatur", "temperature"]},
{"key": "REFRESH_BUTTON", "label": "Sofort-Aktualisierung (Knopf)", "gruppe": "uebersicht",
{"key": "REFRESH_BUTTON", "label": "Sofort-Aktualisierung", "gruppe": "uebersicht",
"hinweis": "Der von der Integration bereitgestellte Knopf für \"Ziehen zum Aktualisieren\".",
"domains": ["button"], "device_classes": [], "units": [], "liste": False, "pflicht": False,
"stichworte": ["refresh", "aktualisieren", "update", "abrufen", "poll"]},
@@ -211,7 +211,7 @@ FELDER: list[dict] = [
"hinweis": "\"aus\"/off = zu.",
"domains": ["binary_sensor"], "device_classes": ["door", "opening"], "units": [], "liste": False, "pflicht": False,
"stichworte": ["haube", "hood", "bonnet", "motorhaube"]},
{"key": "TUERSCHLOSS_SENSOR", "label": "Türschloss (Fahrertür)", "gruppe": "sicherheit",
{"key": "TUERSCHLOSS_SENSOR", "label": "Türschloss", "gruppe": "sicherheit",
"hinweis": "\"aus\"/off = verriegelt. Die Zentralverriegelung schließt alle Türen gemeinsam - "
"die Fahrertür genügt für \"Fahrzeug verriegelt\".",
"domains": ["binary_sensor"], "device_classes": ["lock"], "units": [], "liste": False,
@@ -224,19 +224,19 @@ FELDER: list[dict] = [
"hinweis": "\"aus\"/off = kein Licht.",
"domains": ["binary_sensor"], "device_classes": ["light"], "units": [], "liste": False, "pflicht": False,
"stichworte": ["licht", "standlicht", "light", "parking lights"]},
{"key": "NAECHSTER_OELWECHSEL_SENSOR", "label": "Nächster Ölwechsel (Datum)", "gruppe": "uebersicht",
{"key": "NAECHSTER_OELWECHSEL_SENSOR", "label": "Nächster Ölwechsel", "gruppe": "uebersicht",
"hinweis": "Vom Fahrzeug selbst gemeldete Fälligkeit, ergänzt die App-eigene Servicebuch-Prognose.",
"domains": ["sensor"], "device_classes": ["date", "timestamp"], "units": [], "liste": False, "pflicht": False,
"stichworte": ["ölwechsel", "oil", "service", "change"]},
{"key": "OELWECHSEL_STRECKE_SENSOR", "label": "Nächster Ölwechsel (Restkilometer)", "gruppe": "uebersicht",
{"key": "OELWECHSEL_STRECKE_SENSOR", "label": "Nächster Ölwechsel", "gruppe": "uebersicht",
"hinweis": "Meldet die Integration oft als negativen Countdown - die App zeigt nur den Betrag.",
"domains": ["sensor"], "device_classes": ["distance"], "units": ["km", "mi"], "liste": False, "pflicht": False,
"stichworte": ["ölwechsel", "oil", "distance", "strecke"]},
{"key": "NAECHSTE_INSPEKTION_SENSOR", "label": "Nächste Inspektion (Datum)", "gruppe": "uebersicht",
{"key": "NAECHSTE_INSPEKTION_SENSOR", "label": "Nächste Inspektion", "gruppe": "uebersicht",
"hinweis": "Vom Fahrzeug selbst gemeldete Fälligkeit.",
"domains": ["sensor"], "device_classes": ["date", "timestamp"], "units": [], "liste": False, "pflicht": False,
"stichworte": ["inspektion", "inspection", "service"]},
{"key": "INSPEKTION_STRECKE_SENSOR", "label": "Nächste Inspektion (Restkilometer)", "gruppe": "uebersicht",
{"key": "INSPEKTION_STRECKE_SENSOR", "label": "Nächste Inspektion", "gruppe": "uebersicht",
"hinweis": "Meldet die Integration oft als negativen Countdown - die App zeigt nur den Betrag.",
"domains": ["sensor"], "device_classes": ["distance"], "units": ["km", "mi"], "liste": False, "pflicht": False,
"stichworte": ["inspektion", "inspection", "distance", "strecke"]},
@@ -332,7 +332,13 @@ main#view{--seitenrand:16px;padding:0 var(--seitenrand) 30px;scroll-behavior:smo
ruhigen Karte. max-width + margin:auto zentriert sie innerhalb des
bestehenden left/right-Abstands, ohne die transform-basierte
Einblend-Animation dieser Elemente zu beruehren. */
.setup-popup,.sdpopup,.sheet,.beleg-popup{max-width:560px;margin-left:auto;margin-right:auto}
.sdpopup,.sheet,.beleg-popup{max-width:560px;margin-left:auto;margin-right:auto}
/* .setup-popup breiter als die übrigen Popups: die Sensorkennung neben der
Feld-Überschrift (entitaetIdKurz()) kann ein echter Rohsensorname von
Herstellerseite sein, teils 40-60 Zeichen lang
("calculated_distance_covered_after_the_latest_refueling") - bei 560px
wäre das mehrzeiliges Umbrechen auf fast jeder Zeile. */
.setup-popup{max-width:760px;margin-left:auto;margin-right:auto}
.standortmenu{max-width:640px;margin-left:auto;margin-right:auto}
/* Batteriespannungs-Diagramm: die Hoehe bleibt bewusst bei den festen 170px
@@ -1,7 +1,7 @@
{
"domain": "audi_dashboard",
"name": "Audi Dashboard",
"version": "2026.8.28.9",
"version": "2026.8.28.10",
"documentation": "https://gitea.nothaft.cloud/paul/audi-app/src/branch/main/README.md",
"issue_tracker": "https://gitea.nothaft.cloud/paul/audi-app/issues",
"codeowners": ["@paul"],