From 69cbf3c599422dfd54492b86c4a14a137ddc91cc Mon Sep 17 00:00:00 2001 From: rene Date: Wed, 29 Apr 2026 11:13:22 +0200 Subject: [PATCH] =?UTF-8?q?Fix:=20=C3=9Cbungen-Tab=20kaputt=20nach=20Exerc?= =?UTF-8?q?ise-Chip-Navigation=20=E2=80=94=20DB-Kat-Mapping=20+=20refresh(?= =?UTF-8?q?)-Fix=20=E2=80=94=20SW=20by-v490,=20APP=5FVER=20467?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/static/js/app.js | 2 +- backend/static/js/pages/uebungen.js | 25 +++++++++++++++++++++---- backend/static/sw.js | 2 +- 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/backend/static/js/app.js b/backend/static/js/app.js index 44bbf47..c79a63a 100644 --- a/backend/static/js/app.js +++ b/backend/static/js/app.js @@ -3,7 +3,7 @@ Router, State-Management, Navigation, Initialisierung. ============================================================ */ -const APP_VER = '466'; // ← bei jedem Deploy mit Frontend-Änderungen erhöhen +const APP_VER = '467'; // ← bei jedem Deploy mit Frontend-Änderungen erhöhen const App = (() => { diff --git a/backend/static/js/pages/uebungen.js b/backend/static/js/pages/uebungen.js index dd3bff6..40a8b3c 100644 --- a/backend/static/js/pages/uebungen.js +++ b/backend/static/js/pages/uebungen.js @@ -433,17 +433,31 @@ window.Page_uebungen = (() => { // ---------------------------------------------------------- // INIT // ---------------------------------------------------------- + // DB-Kategorien → Tab-IDs + const _KAT_TO_TAB = { + 'grundkommando': 'grundkommandos', + 'grundkommandos': 'grundkommandos', + 'trick': 'tricks', + 'tricks': 'tricks', + 'problemverhalten':'problemverhalten', + 'grundlagen': 'grundlagen', + 'ki-trainer': 'ki-trainer', + }; + const _VALID_TABS = new Set(TABS.map(t => t.id)); + async function init(container, appState, params = {}) { _container = container; _appState = appState; - if (params.kategorie) _activeTab = params.kategorie; + if (params.kategorie) { + const mapped = _KAT_TO_TAB[params.kategorie.toLowerCase()] || params.kategorie; + if (_VALID_TABS.has(mapped)) _activeTab = mapped; + } _render(); if (params.name) { - // Nach Render + Progress-Load zur Übung scrollen setTimeout(() => { const card = _container.querySelector(`[data-exercise-name="${CSS.escape(params.name)}"]`); if (card) card.scrollIntoView({ behavior: 'smooth', block: 'center' }); - }, 600); + }, 700); } // Progress vom Server laden @@ -490,7 +504,10 @@ window.Page_uebungen = (() => { _renderStatsBanner(); } - function refresh() {} + function refresh() { + if (!_VALID_TABS.has(_activeTab)) _activeTab = 'grundkommandos'; + _renderContent(); + } function onDogChange() { _statsData = null; _badgesData = null; diff --git a/backend/static/sw.js b/backend/static/sw.js index b3950ea..f64754d 100644 --- a/backend/static/sw.js +++ b/backend/static/sw.js @@ -3,7 +3,7 @@ Offline-Cache + Push Notifications + Tile-Cache ============================================================ */ -const CACHE_VERSION = 'by-v489'; +const CACHE_VERSION = 'by-v490'; const CACHE_STATIC = `${CACHE_VERSION}-static`; const CACHE_TILES = 'ban-yaro-tiles-v1'; // bleibt über SW-Updates erhalten