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
} }
@if (data.performance && data.performance.length > 0) {

Leistungskennzahlen

@for (kpi of data.performance; track kpi.key) {
{{ kpi.label }} {{ formatPerformanceKpi(kpi) }} {{ kpi.description }}
}
} @if (data.injuryRisk) {

Verletzungsrisiko

{{ data.injuryRisk.riskLevel | uppercase }}

{{ data.injuryRisk.recommendation }}

} @if (data.readiness) {

Bereitschaft

{{ data.readiness.score }} / 100
{{ data.readiness.status | uppercase }}
@for (reason of data.readiness.reasons; track reason) { {{ reason }} }
} @if (data.predictions) {

Vorhersagen

VO2max

{{ data.predictions.vo2max ?? '-' }} ml/kg/min Schatzung der aeroben Kapazitat

Nachster Meilenstein

{{ data.predictions.nextMilestone.target }} {{ data.predictions.nextMilestone.type }}

Geschatzte Rennzeiten

5 km:{{ formatRaceTime(data.predictions.raceTimes.distance5k) }}
10 km:{{ formatRaceTime(data.predictions.raceTimes.distance10k) }}
Halbmarathon:{{ formatRaceTime(data.predictions.raceTimes.distanceHalfMarathon) }}
Marathon:{{ formatRaceTime(data.predictions.raceTimes.distanceMarathon) }}
} } }