athlete page first draft

This commit is contained in:
Davide Scaini
2026-03-30 09:05:18 +02:00
parent 2a1493a3e5
commit ec6175b143
8 changed files with 594 additions and 3 deletions
+21
View File
@@ -4,6 +4,25 @@ export type Sport = "cycling" | "running" | "hiking" | "walking" | "swimming" |
export type SubSport = "road" | "mountain" | "gravel" | "indoor" | "trail" | "track" | "nordic" | null;
export type Privacy = "public" | "blur_start" | "no_gps" | "private";
/** [duration_s, avg_watts] pairs, sorted by duration ascending. */
export type MmpCurve = [number, number][];
export interface AthletePowerCurve {
all_time: MmpCurve | null;
last_365d: MmpCurve | null;
last_90d: MmpCurve | null;
}
export interface AthleteJson {
bas_version: string;
generated_at: string;
power_curve: AthletePowerCurve;
max_hr?: number;
ftp_w?: number;
hr_zones?: [number, number][];
power_zones?: [number, number][];
}
export interface ActivitySummary {
id: string;
title: string;
@@ -20,6 +39,7 @@ export interface ActivitySummary {
max_hr_bpm: number | null;
avg_cadence_rpm: number | null;
avg_power_w: number | null;
mmp: MmpCurve | null;
source: string | null;
privacy: Privacy;
detail_url: string | null;
@@ -66,6 +86,7 @@ export interface ActivityDetail extends ActivitySummary {
end_latlng: [number, number] | null;
laps: Lap[];
timeseries: Timeseries;
mmp: MmpCurve | null;
strava_id: string | null;
duplicate_of: string | null;
custom: Record<string, unknown>;