diff options
| author | Martin Kagamino Lehoux <martin@lehoux.net> | 2026-08-21 19:19:45 +0200 |
|---|---|---|
| committer | Martin Kagamino Lehoux <martin@lehoux.net> | 2026-08-21 19:19:45 +0200 |
| commit | 72cc720e91e531fda3da073a8231951e0cccb696 (patch) | |
| tree | acc51bc53166f59531d1a4bf9be979042cc600b9 /web/ride-filters.go | |
| parent | b3a83b2fdd5b406d020398e7c3cf6f46149a2523 (diff) | |
Componentize and isolate the ride range filter
Diffstat (limited to 'web/ride-filters.go')
| -rw-r--r-- | web/ride-filters.go | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/web/ride-filters.go b/web/ride-filters.go index 888d6bc..1fb647b 100644 --- a/web/ride-filters.go +++ b/web/ride-filters.go @@ -65,6 +65,76 @@ type RideFilterView struct { ResetURL string } +type RangeFilterConfig struct { + Legend string + IDPrefix string + Format string + ParamMin string + ParamMax string + BoundMin int + BoundMax int + Step int + ValueMin int + ValueMax int + LabelMin string + LabelMax string + FormatValue func(int) string +} + +func rideDistanceFilterConfig(view RideFilterView) RangeFilterConfig { + return RangeFilterConfig{ + Legend: "Distance", + IDPrefix: "distance", + Format: "distance", + ParamMin: rideFilterDistanceMinParam, + ParamMax: rideFilterDistanceMaxParam, + BoundMin: rideFilterDistanceMinKm, + BoundMax: rideFilterDistanceMaxKm, + Step: rideFilterDistanceStepKm, + ValueMin: view.DistanceMinKm, + ValueMax: view.DistanceMaxKm, + LabelMin: "Minimum distance", + LabelMax: "Maximum distance", + FormatValue: formatRideFilterDistance, + } +} + +func rideDurationFilterConfig(view RideFilterView) RangeFilterConfig { + return RangeFilterConfig{ + Legend: "Moving duration", + IDPrefix: "duration", + Format: "duration", + ParamMin: rideFilterDurationMinParam, + ParamMax: rideFilterDurationMaxParam, + BoundMin: rideFilterDurationMinMinutes, + BoundMax: rideFilterDurationMaxMinutes, + Step: rideFilterDurationStepMinutes, + ValueMin: view.DurationMinMinutes, + ValueMax: view.DurationMaxMinutes, + LabelMin: "Minimum moving duration", + LabelMax: "Maximum moving duration", + FormatValue: formatRideFilterDuration, + } +} + +func rideCotacolFilterConfig(view RideFilterView) RangeFilterConfig { + return RangeFilterConfig{ + Legend: "Cotacol", + IDPrefix: "cotacol", + Format: "cotacol", + ParamMin: rideFilterCotacolMinParam, + ParamMax: rideFilterCotacolMaxParam, + BoundMin: rideFilterCotacolMinPoints, + BoundMax: rideFilterCotacolMaxPoints, + Step: rideFilterCotacolStepPoints, + ValueMin: view.CotacolMinPoints, + ValueMax: view.CotacolMaxPoints, + LabelMin: "Minimum Cotacol", + LabelMax: "Maximum Cotacol", + FormatValue: formatRideFilterCotacol, + } +} + func parseRideFilters(query url.Values) RideFilters { filters := RideFilters{ DistanceMinKm: parseRideFilterInt(query.Get(rideFilterDistanceMinParam), rideFilterDistanceMinKm, rideFilterDistanceMaxKm, rideFilterDistanceStepKm), |
