Feature: Übungs-Suche, fehlende Legacy-Übungen nachmigriert (110 gesamt) — SW by-v495, APP_VER 472
This commit is contained in:
parent
4c3638c17c
commit
81ee1a063e
4 changed files with 63 additions and 4 deletions
|
|
@ -3,7 +3,7 @@
|
|||
Router, State-Management, Navigation, Initialisierung.
|
||||
============================================================ */
|
||||
|
||||
const APP_VER = '471'; // ← bei jedem Deploy mit Frontend-Änderungen erhöhen
|
||||
const APP_VER = '472'; // ← bei jedem Deploy mit Frontend-Änderungen erhöhen
|
||||
|
||||
const App = (() => {
|
||||
|
||||
|
|
|
|||
|
|
@ -39,6 +39,7 @@ window.Page_uebungen = (() => {
|
|||
let _exercisesByTab = {}; // aus API geladen
|
||||
let _exercisesLoaded = false;
|
||||
let _scrollTarget = null; // { exercise_id, name } — nach _renderContent() scrollen
|
||||
let _searchQuery = ''; // aktuelle Sucheingabe
|
||||
|
||||
// ----------------------------------------------------------
|
||||
// DATEN
|
||||
|
|
@ -566,10 +567,21 @@ window.Page_uebungen = (() => {
|
|||
<div id="ueb-stats-banner" style="padding:var(--space-2) var(--space-4) 0"></div>
|
||||
<div id="ueb-trainer" style="padding:0 var(--space-4);margin-bottom:var(--space-2)"></div>
|
||||
<div id="ueb-suggestions" style="padding:0 var(--space-4);display:flex;flex-direction:column;gap:var(--space-2);margin-bottom:var(--space-2)"></div>
|
||||
<div id="ueb-content"></div>
|
||||
<div style="padding:var(--space-3) var(--space-4) 0" id="ueb-search-wrap">
|
||||
<input type="search" id="ueb-search" placeholder="Übung suchen…"
|
||||
style="width:100%;padding:var(--space-2) var(--space-3);
|
||||
border:1px solid var(--c-border);border-radius:var(--radius-md);
|
||||
background:var(--c-surface);color:var(--c-text);font-size:var(--text-sm);
|
||||
outline:none" value="${_esc(_searchQuery)}">
|
||||
</div>
|
||||
<div id="ueb-content"></div>
|
||||
</div>
|
||||
`;
|
||||
_container.querySelector('#ueb-quicksetup-btn').addEventListener('click', _openQuickSetupModal);
|
||||
_container.querySelector('#ueb-search')?.addEventListener('input', e => {
|
||||
_searchQuery = e.target.value.trim().toLowerCase();
|
||||
_renderContent();
|
||||
});
|
||||
_bindTabs();
|
||||
_renderContent();
|
||||
_renderStatsBanner();
|
||||
|
|
@ -986,9 +998,20 @@ window.Page_uebungen = (() => {
|
|||
// ÜBUNGS-CARDS
|
||||
// ----------------------------------------------------------
|
||||
function _renderUebungsList(list) {
|
||||
const filtered = _searchQuery
|
||||
? list.filter(u =>
|
||||
u.name.toLowerCase().includes(_searchQuery) ||
|
||||
(u.beschreibung || '').toLowerCase().includes(_searchQuery)
|
||||
)
|
||||
: list;
|
||||
if (!filtered.length) {
|
||||
return `<div style="padding:var(--space-8);text-align:center;color:var(--c-text-muted)">
|
||||
${UI.icon('magnifying-glass')} Keine Übungen gefunden für „${_esc(_searchQuery)}"
|
||||
</div>`;
|
||||
}
|
||||
return `
|
||||
<div style="padding:var(--space-4);display:flex;flex-direction:column;gap:var(--space-4)">
|
||||
${list.map((u, i) => _renderCard(u, i)).join('')}
|
||||
${filtered.map((u, i) => _renderCard(u, i)).join('')}
|
||||
</div>
|
||||
`;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
Offline-Cache + Push Notifications + Tile-Cache
|
||||
============================================================ */
|
||||
|
||||
const CACHE_VERSION = 'by-v494';
|
||||
const CACHE_VERSION = 'by-v495';
|
||||
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