From 2ee90a4b3bfd91a06ad1d224090d9bb14ad0f642 Mon Sep 17 00:00:00 2001 From: Claude Code Date: Mon, 27 Apr 2026 19:29:00 +0000 Subject: [PATCH] Fix: Blur greift sofort beim Anlegen einer neuen Lage MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Im Create-Flow wurde .blurred in selectIncident() erst entfernt und gleich darauf via _showPopupProgress wieder gesetzt. CSS filter:blur greift in der Kombination (frischer isFirst-State + selectIncident im selben Tick + viel vorausgehende DOM-Manipulation durch Modal-Close + renderSidebar) nicht zuverlaessig im selben Frame — der Fall war bis zum Wegklicken/Zurueckklicken unblurred. selectIncident: remove("blurred") wird uebersprungen, wenn der zustaendige Progress-State isFirst=true und nicht minimiert ist (Blur soll bestehen bleiben statt remove+add im selben Tick). createIncident: zusaetzlich requestAnimationFrame mit grid.classList.add im naechsten Frame, falls der Browser den ersten add-Aufruf in selectIncident nicht visuell uebernommen hat. Doppeltes Setzen ist idempotent. dashboard.html: cache-bust app.js auf v=20260427a. --- src/static/dashboard.html | 2 +- src/static/js/app.js | 15 ++++++++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/static/dashboard.html b/src/static/dashboard.html index 70c9cee..f88d6b0 100644 --- a/src/static/dashboard.html +++ b/src/static/dashboard.html @@ -628,7 +628,7 @@ - + diff --git a/src/static/js/app.js b/src/static/js/app.js index 2f0dc71..36936e7 100644 --- a/src/static/js/app.js +++ b/src/static/js/app.js @@ -736,7 +736,12 @@ const App = { const prevMini = document.getElementById('progress-mini'); if (prevMini) prevMini.style.display = 'none'; const grid = document.querySelector('.tab-panels'); - if (grid) grid.classList.remove('blurred'); + // Blur nur entfernen, wenn er nicht direkt danach wieder gesetzt wird. + // Beim Create-Flow (frischer isFirst-State + selectIncident im selben + // Tick) greift CSS filter:blur sonst nicht im selben Frame. + const _restState = isRefreshing ? UI._progressState[id] : null; + const _willReBlur = _restState && _restState.isFirst && !_restState.minimized; + if (grid && !_willReBlur) grid.classList.remove('blurred'); if (isRefreshing) { const state = UI._progressState[id]; @@ -1778,6 +1783,14 @@ const App = { await this.selectIncident(incident.id); + // Im Create-Flow greift CSS filter:blur nach dem viel DOM-Reshuffle + // (Modal-Close, renderSidebar, Tab-Wechsel) im selben Frame nicht + // zuverlaessig. Im naechsten Frame nochmal setzen — Aufwand minimal. + requestAnimationFrame(() => { + const _grid = document.querySelector('.tab-panels'); + if (_grid) _grid.classList.add('blurred'); + }); + this._updateRefreshButton(true); await API.refreshIncident(incident.id); UI.showToast(`Lage "${incident.title}" angelegt. Recherche gestartet.`, 'success');