Laufanalyse

KPI Dashboard

Laufen
@if (error()) {
{{ error() }}
} @if (loading()) {
KPI Dashboard wird geladen...
} @else if (kpis(); as data) { @if (totalRuns(data) === 0) {
Keine Laeufe im Zeitraum gefunden.
} @else {
Akute Belastung {{ formatLoad(data.load.acute) }}
Chronische Belastung {{ formatLoad(data.load.chronic) }}
A/C Ratio {{ formatRatio(data.load.acuteChronicRatio) }}
Erholung {{ data.recovery.score }}
Monotony {{ formatRatio(data.monotony.value) }}
Strain {{ formatLoad(data.strain.value) }}
Letzter harter Lauf {{ formatLoad(data.recovery.daysSinceLastHardRun) }} d
Status {{ recoveryLabel(data.recovery.status) }}

Erholungsindikator

{{ data.recovery.message }}

{{ data.recovery.score }} / 100

Weekly Load

{{ data.rangeStart }} bis {{ data.rangeEnd }}

Akut vs. chronisch

Load Trend

Easy / Moderate / Hard

Zeitanteil

Progression

4 Wochen vs. vorherige 4 Wochen

Progression

Positive Werte sind besser
@for (metric of data.progression; track metric.key) {
{{ metric.label }} {{ metricValue(metric) }} Vorher: {{ previousMetricValue(metric) }} {{ changeLabel(metric.changePercent) }}
}

PR Schaetzungen

Aus Streams, sonst Pace-Fallback
@for (record of data.personalRecords; track record.distanceMeters) { @if (record.activityId) { {{ distanceKm(record.distanceMeters) }} {{ duration(record.timeSeconds) }} {{ pace(record.paceSecondsPerKm) }} {{ record.activityName }} {{ shortDate(record.startDate) }} {{ record.estimated ? 'geschaetzt' : 'exakt' }} } @else {
{{ distanceKm(record.distanceMeters) }} - - Keine Daten - geschaetzt
} }
} }