diff options
Diffstat (limited to 'web/rides.go')
| -rw-r--r-- | web/rides.go | 22 |
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) } |
