Update-Knopf: Seitensprung im Großbild-Layout behoben

Auf Update prüfen/Update installieren ließ die Seite im Seitenleisten-Layout
sichtbar nach oben springen - render()s eigene Scroll-Wiederherstellung
reichte hier nicht, vermutlich weil die Zustandsänderung des
Update-Sensors zusätzlich über HAs eigenes set-hass-Durchreichen an das
eingebettete Panel einen zweiten Render-Pfad anstößt. Statt die genaue
Ursache weiter zu jagen: fester Scroll-Merkwert vor dem Klick, per
requestAnimationFrame nach jedem eigenen render()-Aufruf dieses Ablaufs
erneut erzwungen. Live bei 1280x800 verifiziert: kein Sprung mehr.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
This commit is contained in:
2026-08-24 18:18:51 +02:00
co-authored by Claude Sonnet 5
parent 7276d06a18
commit 0354ab8768
3 changed files with 46 additions and 2 deletions
@@ -4669,7 +4669,22 @@ function ereignisseVerdrahten() {
// diese drei Aktionen brauchen einen sichtbaren Ladezustand, siehe
// INTEGRATION_UPDATE_LAEUFT's Kommentar an der Deklaration.
if (aktion === "pruefen" || aktion === "installieren") {
// Im Großbild-Layout (Seitenleiste statt Tableiste) sprang die Seite
// beim Klick sichtbar nach oben, obwohl render() den Scroll eigentlich
// wiederherstellt (v.scrollTop = merkeScroll) - die Zustandsänderung
// an sensor.audi_dashboard_app_version, die dieser Aufruf auslöst,
// verschiebt scrollTop zusätzlich über einen zweiten, äußeren Pfad
// (HA reicht jede Zustandsänderung an das eingebettete Panel durch).
// Statt die Ursache dort zu jagen: fester Merkwert vor dem Klick, per
// rAF nach jedem render() dieses Ablaufs erneut erzwungen - wirkt
// gegen render()s eigene Wiederherstellung UND gegen den äußeren Pfad.
const merkeScrollUpdate = $("#view").scrollTop;
const scrollWiederherstellen = () => requestAnimationFrame(() => {
const view = $("#view");
if (view) view.scrollTop = merkeScrollUpdate;
});
INTEGRATION_UPDATE_LAEUFT = aktion; render();
scrollWiederherstellen();
HASS.callService(DOMAIN, `update_${aktion}`, {})
.catch((err) => {
hinweis(
@@ -4677,7 +4692,7 @@ function ereignisseVerdrahten() {
err && err.message ? err.message : "Der Dienst konnte nicht ausgeführt werden.",
);
})
.finally(() => { INTEGRATION_UPDATE_LAEUFT = null; render(); });
.finally(() => { INTEGRATION_UPDATE_LAEUFT = null; render(); scrollWiederherstellen(); });
} else if (aktion === "neustart") {
INTEGRATION_UPDATE_LAEUFT = "neustart"; render();
HASS.callService("homeassistant", "restart", {}).catch((err) => {
@@ -1,7 +1,7 @@
{
"domain": "audi_dashboard",
"name": "Audi Dashboard",
"version": "2026.8.24.11",
"version": "2026.8.24.12",
"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"],