From 5647e528651a8382df1e0844d542501058b00bdf Mon Sep 17 00:00:00 2001 From: Davide Scaini Date: Sun, 29 Mar 2026 11:20:48 +0200 Subject: [PATCH] add overing in stats page --- site/src/components/ActivityDetail.svelte | 35 ++++++--- site/src/components/StatsView.svelte | 92 +++++++++++++++++++---- 2 files changed, 103 insertions(+), 24 deletions(-) diff --git a/site/src/components/ActivityDetail.svelte b/site/src/components/ActivityDetail.svelte index 2d40ddf..f4cf9d6 100644 --- a/site/src/components/ActivityDetail.svelte +++ b/site/src/components/ActivityDetail.svelte @@ -8,6 +8,8 @@ export let activity: ActivitySummary; export let base: string = '/'; + const editUrl = import.meta.env.PUBLIC_EDIT_URL; + let detail: ActivityDetail | null = null; let error = ''; // Linked hover index shared between map and charts @@ -27,17 +29,18 @@ $: trackUrl = activity.track_url ? `${base}data/${activity.track_url}` : null; $: color = sportColor(activity.sport); - const stat = (label: string, value: string) => ({ label, value }); + const stat = (label: string, value: string, key?: string) => ({ label, value, key }); + $: hiddenStats = new Set((detail?.custom as any)?.hide_stats ?? []); $: stats = [ stat('Distance', formatDistance(activity.distance_m)), stat('Moving time', formatDuration(activity.moving_time_s ?? activity.duration_s)), - stat('Elevation ↑', formatElevation(activity.elevation_gain_m)), - stat('Avg speed', formatSpeed(activity.avg_speed_kmh)), - stat('Max speed', formatSpeed(activity.max_speed_kmh)), - stat('Avg HR', activity.avg_hr_bpm ? `${activity.avg_hr_bpm} bpm` : '—'), - stat('Max HR', activity.max_hr_bpm ? `${activity.max_hr_bpm} bpm` : '—'), - stat('Cadence', activity.avg_cadence_rpm ? `${activity.avg_cadence_rpm} rpm` : '—'), - ]; + stat('Elevation ↑', formatElevation(activity.elevation_gain_m), 'elevation'), + stat('Avg speed', formatSpeed(activity.avg_speed_kmh), 'speed'), + stat('Max speed', formatSpeed(activity.max_speed_kmh), 'speed'), + stat('Avg HR', activity.avg_hr_bpm ? `${activity.avg_hr_bpm} bpm` : '—', 'heart_rate'), + stat('Max HR', activity.max_hr_bpm ? `${activity.max_hr_bpm} bpm` : '—', 'heart_rate'), + stat('Cadence', activity.avg_cadence_rpm ? `${activity.avg_cadence_rpm} rpm` : '—', 'cadence'), + ].filter(s => !s.key || !hiddenStats.has(s.key)); @@ -57,9 +60,21 @@ {formatDate(activity.started_at)} · {formatTime(activity.started_at)} -

{activity.title}

+
+

{activity.title}

+ {#if editUrl} + + Edit + + {/if} +
{#if detail?.description} -

{detail.description}

+

{detail.description}

{/if} diff --git a/site/src/components/StatsView.svelte b/site/src/components/StatsView.svelte index 1825531..82ce424 100644 --- a/site/src/components/StatsView.svelte +++ b/site/src/components/StatsView.svelte @@ -1,7 +1,7 @@