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