Fix: Tagesübung-Scroll via _scrollTarget nach exercises-Load statt fixem Timeout — SW by-v494, APP_VER 471
This commit is contained in:
parent
6d9f4a097e
commit
4c3638c17c
3 changed files with 19 additions and 10 deletions
|
|
@ -3,7 +3,7 @@
|
|||
Router, State-Management, Navigation, Initialisierung.
|
||||
============================================================ */
|
||||
|
||||
const APP_VER = '470'; // ← bei jedem Deploy mit Frontend-Änderungen erhöhen
|
||||
const APP_VER = '471'; // ← bei jedem Deploy mit Frontend-Änderungen erhöhen
|
||||
|
||||
const App = (() => {
|
||||
|
||||
|
|
|
|||
|
|
@ -38,6 +38,7 @@ window.Page_uebungen = (() => {
|
|||
let _badgesData = null; // cached badges from /api/achievements
|
||||
let _exercisesByTab = {}; // aus API geladen
|
||||
let _exercisesLoaded = false;
|
||||
let _scrollTarget = null; // { exercise_id, name } — nach _renderContent() scrollen
|
||||
|
||||
// ----------------------------------------------------------
|
||||
// DATEN
|
||||
|
|
@ -485,14 +486,7 @@ window.Page_uebungen = (() => {
|
|||
}
|
||||
|
||||
if (params.exercise_id || params.name) {
|
||||
setTimeout(() => {
|
||||
// Erst per exercise_id suchen (zuverlässig), dann per Name als Fallback
|
||||
const card = (params.exercise_id
|
||||
? _container.querySelector(`[data-exercise-id="${CSS.escape(params.exercise_id)}"]`)
|
||||
: null)
|
||||
|| _container.querySelector(`[data-exercise-name="${CSS.escape(params.name || '')}"]`);
|
||||
if (card) card.scrollIntoView({ behavior: 'smooth', block: 'center' });
|
||||
}, 700);
|
||||
_scrollTarget = { exercise_id: params.exercise_id || '', name: params.name || '' };
|
||||
}
|
||||
|
||||
// Progress vom Server laden
|
||||
|
|
@ -971,6 +965,21 @@ window.Page_uebungen = (() => {
|
|||
_bindLogButtons();
|
||||
_bindNotizButtons();
|
||||
if (_activeTab === 'ki-trainer') _loadKiTrainerFeedback();
|
||||
_tryScrollToTarget();
|
||||
}
|
||||
|
||||
function _tryScrollToTarget() {
|
||||
if (!_scrollTarget) return;
|
||||
const t = _scrollTarget;
|
||||
requestAnimationFrame(() => {
|
||||
const card = (t.exercise_id
|
||||
? _container.querySelector('[data-exercise-id="' + CSS.escape(t.exercise_id) + '"]')
|
||||
: null) || _container.querySelector('[data-exercise-name="' + CSS.escape(t.name) + '"]');
|
||||
if (card) {
|
||||
card.scrollIntoView({ behavior: 'smooth', block: 'center' });
|
||||
_scrollTarget = null;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
Offline-Cache + Push Notifications + Tile-Cache
|
||||
============================================================ */
|
||||
|
||||
const CACHE_VERSION = 'by-v493';
|
||||
const CACHE_VERSION = 'by-v494';
|
||||
const CACHE_STATIC = `${CACHE_VERSION}-static`;
|
||||
const CACHE_TILES = 'ban-yaro-tiles-v1'; // bleibt über SW-Updates erhalten
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue