aboutsummaryrefslogtreecommitdiff
path: root/web/rides.go
diff options
context:
space:
mode:
Diffstat (limited to 'web/rides.go')
-rw-r--r--web/rides.go22
1 files changed, 20 insertions, 2 deletions
diff --git a/web/rides.go b/web/rides.go
index aa39d69..cb38b3c 100644
--- a/web/rides.go
+++ b/web/rides.go
@@ -94,15 +94,33 @@ func (s *Server) handleAnalytics(w http.ResponseWriter, r *http.Request) {
http.Error(w, "failed to load rides", http.StatusInternalServerError)
return
}
+ filters := parseRideFilters(r.URL.Query())
+ minKm := minimumDisplayedDistanceM / 1000
+ if filters.DistanceMinKm != nil && *filters.DistanceMinKm > minKm {
+ minKm = *filters.DistanceMinKm
+ }
+ maxKm := 0
+ if filters.DistanceMaxKm != nil {
+ maxKm = *filters.DistanceMaxKm
+ }
eligible := make([]rides.Ride, 0, len(items))
for _, item := range items {
- if item.DistanceM >= minimumDisplayedDistanceM {
- eligible = append(eligible, item)
+ distanceKm := int(item.DistanceM / 1000)
+ if distanceKm < minKm || (maxKm != 0 && distanceKm > maxKm) {
+ continue
}
+ eligible = append(eligible, item)
+ }
+ filterView := RideFilterView{
+ DistanceMinKm: rideFilterValue(filters.DistanceMinKm, rideFilterDistanceMinKm),
+ DistanceMaxKm: rideFilterValue(filters.DistanceMaxKm, rideFilterDistanceMaxKm),
+ Active: filters.Active(),
+ ResetURL: "/analytics",
}
slog.Info("Loaded ride analytics", "rides", len(eligible))
kcore.RenderPage(r.Context(), AnalyticsPage(AnalyticsPageData{
Points: buildAnalyticsPoints(eligible),
+ Filter: filterView,
}), w)
}