added power
This commit is contained in:
@@ -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}
|
||||||
|
|||||||
Reference in New Issue
Block a user