From 992c36c6c7ce7e1e732866b3cd4fb8269a905875 Mon Sep 17 00:00:00 2001 From: Martin Kagamino Lehoux Date: Tue, 18 Aug 2026 21:32:28 +0200 Subject: feat(web): add ride library filters --- web/templates.templ | 87 ++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 76 insertions(+), 11 deletions(-) (limited to 'web/templates.templ') diff --git a/web/templates.templ b/web/templates.templ index f3f07e7..8a987fc 100644 --- a/web/templates.templ +++ b/web/templates.templ @@ -22,34 +22,99 @@ templ Layout(title string, content templ.Component) { } -templ RidesPage(items []RideView, headers []RideSortHeader) { - @Layout("Rides", RidesContent(items, headers)) +templ RidesPage(data RidesPageData) { + @Layout("Rides", RidesContent(data)) } -templ RidesContent(items []RideView, headers []RideSortHeader) { +templ RidesContent(data RidesPageData) {

Ride library

-
-

All rides

Your imported rides, ready for climb analysis.

- Sync Strava -
+
+
+
+

Refine

Filter rides

+
Reset
+
+ + +
+
+ Distance +
{ formatRideFilterDistance(data.Filters.DistanceMinKm) }{ formatRideFilterDistance(data.Filters.DistanceMaxKm) }
+
+
+ + +
+
+
+ Moving duration +
{ formatRideFilterDuration(data.Filters.DurationMinMinutes) }{ formatRideFilterDuration(data.Filters.DurationMaxMinutes) }
+
+
+ + +
+
+
+ Cotacol +
{ formatRideFilterCotacol(data.Filters.CotacolMinPoints) }{ formatRideFilterCotacol(data.Filters.CotacolMaxPoints) }
+
+
+ + +
+
+
+
+
+ Started +
+
+ +
+
+
- if len(items) == 0 { -
No rides stored yet. Import your first Strava rides.
+ if len(data.Items) == 0 { + if data.Filters.Active { +
No rides match the selected filters. Clear filters.
+ } else { +
No rides stored yet. Import your first Strava rides.
+ } } else { - for _, header := range headers { + for _, header := range data.Headers { } - for _, item := range items { + for _, item := range data.Items { }
{ header.Label }
{ item.Name }
{ item.Type }
{ formatRideDate(item.StartDate) }{ formatDistance(item.DistanceM) }{ formatDuration(item.MovingTimeS) }{ formatElevation(item.TotalElevationGainM) }{ item.Cotacol }{ item.CotacolPer100Km }
}
+ } templ RideDetailPage(data RideDetailView) { -- cgit v1.2.3