aboutsummaryrefslogtreecommitdiff
path: root/web/ride-filters.go
diff options
context:
space:
mode:
Diffstat (limited to 'web/ride-filters.go')
-rw-r--r--web/ride-filters.go70
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),