added power

This commit is contained in:
Davide Scaini
2026-03-29 21:55:35 +02:00
parent 018958f0e9
commit 3fcc8bc089
+9 -3
View File
@@ -7,7 +7,7 @@
// Linked hover: emit/receive index into timeseries arrays // Linked hover: emit/receive index into timeseries arrays
export let hoveredIdx: number | null = null; export let hoveredIdx: number | null = null;
type Tab = 'elevation' | 'speed' | 'hr' | 'cadence'; type Tab = 'elevation' | 'speed' | 'hr' | 'cadence' | 'power';
type XMode = 'time' | 'distance'; type XMode = 'time' | 'distance';
type ChartType = 'line' | 'histogram'; type ChartType = 'line' | 'histogram';
@@ -38,12 +38,14 @@
speed: timeseries.speed_kmh[i], speed: timeseries.speed_kmh[i],
hr: timeseries.hr_bpm[i], hr: timeseries.hr_bpm[i],
cadence: timeseries.cadence_rpm[i], cadence: timeseries.cadence_rpm[i],
power: timeseries.power_w[i],
})); }));
$: hasHR = timeseries.hr_bpm.some(v => v != null); $: hasHR = timeseries.hr_bpm.some(v => v != null);
$: hasCadence = timeseries.cadence_rpm.some(v => v != null); $: hasCadence = timeseries.cadence_rpm.some(v => v != null);
$: hasElevation = timeseries.elevation_m.some(v => v != null); $: hasElevation = timeseries.elevation_m.some(v => v != null);
$: hasSpeed = timeseries.speed_kmh.some(v => v != null); $: hasSpeed = timeseries.speed_kmh.some(v => v != null);
$: hasPower = timeseries.power_w.some(v => v != null);
$: hasDistance = dist_km !== null; $: hasDistance = dist_km !== null;
const tabLabels: Record<Tab, string> = { const tabLabels: Record<Tab, string> = {
@@ -51,6 +53,7 @@
speed: 'Speed', speed: 'Speed',
hr: 'Heart Rate', hr: 'Heart Rate',
cadence: 'Cadence', cadence: 'Cadence',
power: 'Power',
}; };
const tabMeta: Record<Tab, { color: string; yLabel: string; yKey: string }> = { const tabMeta: Record<Tab, { color: string; yLabel: string; yKey: string }> = {
@@ -58,6 +61,7 @@
speed: { color: '#ff6b35', yLabel: 'Speed (km/h)', yKey: 'speed' }, speed: { color: '#ff6b35', yLabel: 'Speed (km/h)', yKey: 'speed' },
hr: { color: '#f87171', yLabel: 'Heart Rate (bpm)', yKey: 'hr' }, hr: { color: '#f87171', yLabel: 'Heart Rate (bpm)', yKey: 'hr' },
cadence: { color: '#a78bfa', yLabel: 'Cadence (rpm)', yKey: 'cadence' }, cadence: { color: '#a78bfa', yLabel: 'Cadence (rpm)', yKey: 'cadence' },
power: { color: '#facc15', yLabel: 'Power (W)', yKey: 'power' },
}; };
// ── Histogram controls ─────────────────────────────────────────────────── // ── Histogram controls ───────────────────────────────────────────────────
@@ -116,7 +120,8 @@
activeTab === 'elevation' ? hasElevation : activeTab === 'elevation' ? hasElevation :
activeTab === 'speed' ? hasSpeed : activeTab === 'speed' ? hasSpeed :
activeTab === 'hr' ? hasHR : activeTab === 'hr' ? hasHR :
hasCadence; activeTab === 'cadence' ? hasCadence :
hasPower;
if (!tabEnabled) return; if (!tabEnabled) return;
chart = chartType === 'histogram' chart = chartType === 'histogram'
@@ -199,7 +204,8 @@
tab === 'elevation' ? hasElevation : tab === 'elevation' ? hasElevation :
tab === 'speed' ? hasSpeed : tab === 'speed' ? hasSpeed :
tab === 'hr' ? hasHR : tab === 'hr' ? hasHR :
hasCadence} tab === 'cadence' ? hasCadence :
hasPower}
<button <button
class="px-3 py-1.5 rounded-md text-sm transition-colors" class="px-3 py-1.5 rounded-md text-sm transition-colors"
class:opacity-30={!enabled} class:opacity-30={!enabled}