diff --git a/site/src/components/ActivityCharts.svelte b/site/src/components/ActivityCharts.svelte index fd681ff..a550018 100644 --- a/site/src/components/ActivityCharts.svelte +++ b/site/src/components/ActivityCharts.svelte @@ -7,7 +7,7 @@ // Linked hover: emit/receive index into timeseries arrays export let hoveredIdx: number | null = null; - type Tab = 'elevation' | 'speed' | 'hr' | 'cadence'; + type Tab = 'elevation' | 'speed' | 'hr' | 'cadence' | 'power'; type XMode = 'time' | 'distance'; type ChartType = 'line' | 'histogram'; @@ -38,12 +38,14 @@ speed: timeseries.speed_kmh[i], hr: timeseries.hr_bpm[i], cadence: timeseries.cadence_rpm[i], + power: timeseries.power_w[i], })); $: hasHR = timeseries.hr_bpm.some(v => v != null); $: hasCadence = timeseries.cadence_rpm.some(v => v != null); $: hasElevation = timeseries.elevation_m.some(v => v != null); $: hasSpeed = timeseries.speed_kmh.some(v => v != null); + $: hasPower = timeseries.power_w.some(v => v != null); $: hasDistance = dist_km !== null; const tabLabels: Record = { @@ -51,6 +53,7 @@ speed: 'Speed', hr: 'Heart Rate', cadence: 'Cadence', + power: 'Power', }; const tabMeta: Record = { @@ -58,6 +61,7 @@ speed: { color: '#ff6b35', yLabel: 'Speed (km/h)', yKey: 'speed' }, hr: { color: '#f87171', yLabel: 'Heart Rate (bpm)', yKey: 'hr' }, cadence: { color: '#a78bfa', yLabel: 'Cadence (rpm)', yKey: 'cadence' }, + power: { color: '#facc15', yLabel: 'Power (W)', yKey: 'power' }, }; // ── Histogram controls ─────────────────────────────────────────────────── @@ -116,7 +120,8 @@ activeTab === 'elevation' ? hasElevation : activeTab === 'speed' ? hasSpeed : activeTab === 'hr' ? hasHR : - hasCadence; + activeTab === 'cadence' ? hasCadence : + hasPower; if (!tabEnabled) return; chart = chartType === 'histogram' @@ -199,7 +204,8 @@ tab === 'elevation' ? hasElevation : tab === 'speed' ? hasSpeed : tab === 'hr' ? hasHR : - hasCadence} + tab === 'cadence' ? hasCadence : + hasPower}