Session 2026-04-19: Navigation, Kompass, Übungsfortschritt

Routen-Navigation:
- POI-Marker: farbige Kreise mit Phosphor-Icons (wie Hauptkarte)
- Screensaver: Navi-Pfeil dreht sich via DeviceOrientationEvent (iOS+Android)
- Pfeil-Dämpfung: EMA α=0.12 mit Wrap-Around
- GPS-Distanz-Bug: Fortschritt nur wenn <500m zur Route
- fitBounds: User-Position nur wenn <20km von Route
- Screensaver: "zur Route" vs "verbleibend" kontextabhängig
- Richtungspfeile entlang Route (blau, max 7 Stück)
- Umkehren ins Route-Detail verschoben, Detail-Map rebuildet sich
- rk-header z-index:10 (Leaflet-Tiles liefen drüber)
- 2-Sek. Screensaver-Entsperrung

km-Tracking:
- route_walks Tabelle
- POST /api/routes/{id}/walked (≥50%)
- total_km = erstellte Routes + gelaufene route_walks
- Toast bei neuem Badge

Übungsfortschritt:
- exercise_progress + training_plan_progress Tabellen
- GET/POST /api/training/progress, /plan-progress, /suggestions
- uebungen.js: API-first + localStorage-Fallback + Auto-Migration
- Empfehlungs-Banner (regelbasiert)
- Toast bei "sitzt"
This commit is contained in:
rene 2026-04-19 20:33:01 +02:00
parent 390176383f
commit 9a78121a3e
25 changed files with 2487 additions and 248 deletions

View file

@ -1994,6 +1994,8 @@ html.modal-open {
border-bottom: 1px solid var(--c-border-light);
padding: var(--space-3) var(--space-4);
flex-shrink: 0;
position: relative;
z-index: 10;
}
.rk-search-row {
display: flex;
@ -3824,6 +3826,22 @@ html.modal-open {
}
.forum-foto-img:hover { opacity: 0.85; }
.forum-pdf-card {
display: inline-flex;
align-items: center;
gap: var(--space-2);
padding: var(--space-2) var(--space-3);
border-radius: var(--radius-md);
background: var(--c-surface-2);
border: 1px solid var(--c-border);
color: var(--c-text);
text-decoration: none;
font-size: var(--text-sm);
transition: background var(--transition-fast);
}
.forum-pdf-card:hover { background: var(--c-surface); }
.forum-pdf-card .ph-icon { color: var(--c-danger); flex-shrink: 0; }
/* Upload */
.forum-upload-area { display: flex; gap: var(--space-2); align-items: center; }
.forum-upload-previews {
@ -4984,6 +5002,7 @@ html.modal-open {
}
.chat-conv-item:hover,
.chat-conv-item:active { background: var(--c-surface-2); }
.chat-conv-item.active { background: var(--c-primary-subtle); border-left: 3px solid var(--c-primary); }
.chat-conv-avatar {
width: 44px;
@ -5055,10 +5074,12 @@ html.modal-open {
display: flex;
align-items: center;
gap: var(--space-3);
padding: var(--space-3) var(--space-4);
padding: 0 var(--space-4);
height: 56px;
background: var(--c-surface);
border-bottom: 1px solid var(--c-border);
flex-shrink: 0;
box-sizing: border-box;
}
.chat-thread-partner {

View file

@ -132,16 +132,19 @@
/* Gassi-Treffen + Sitting: volle Höhe, internes Scroll */
#page-walks,
#page-sitting {
#page-sitting,
#page-chat {
height: 100%;
overflow: hidden;
}
#page-walks > .page-body,
#page-sitting > .page-body {
#page-sitting > .page-body,
#page-chat > .page-body {
padding: 0 !important;
gap: 0 !important;
overflow: hidden;
height: 100%;
position: relative;
}
/* Routen: volle Höhe damit .rk-layout height:100% auflöst und
@ -320,7 +323,7 @@
}
.sidebar-logo {
padding: var(--space-6) var(--space-5);
padding: calc(var(--space-6) + var(--safe-top)) var(--space-5) var(--space-6);
display: flex;
align-items: center;
gap: var(--space-3);