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