From 825cf388b55a6c8441e02149749bb6e2968477c0 Mon Sep 17 00:00:00 2001 From: Martin Kagamino Lehoux Date: Thu, 27 Aug 2026 11:21:17 +0200 Subject: Extract climb detection into a dedicated climb package Move climb detection, slope, and Cotacol scoring out of ride into a new climb package that operates on a geometry-only Route (distances, elevations, coords). Ride embeds climb.Route and keeps its timing and telemetry columns. - climb.Detect returns []DetectedClimb (Climb + ride-absolute Start). - Climb owns its sliced geometry; indices are local, with Start reported at the detection boundary for absolute position. - Detected bounds use core.Interval; freeRegions claim suppression fixed. - ride no longer builds slices: ClimbFromDist/ClimbFromIndexes/climbFrom and ride.Climb/Interval/Range are removed; rideanalysis, mountain_pass MatchClimb, and web views are rewired to climb types. - New internal/routetest builds climb.Route from the ride DSL; ridetest reuses it and adds timestamps and telemetry. - Tests moved to climb (synthetic detection and difficulty) and kept in ride for GPX-example integration; ride.comparison detection coverage retained. - mountain_pass.nearestCrossing now reuses geo.Nearest. --- web/ride-filters.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'web/ride-filters.go') diff --git a/web/ride-filters.go b/web/ride-filters.go index 0bb97d8..8535756 100644 --- a/web/ride-filters.go +++ b/web/ride-filters.go @@ -6,6 +6,7 @@ import ( "strconv" "time" + "github.com/martinlehoux/biking_home/climb" "github.com/martinlehoux/biking_home/ride" ) @@ -417,7 +418,7 @@ func rideMatchesFilters(item ride.StoredRide, filters RideFilters) bool { } if filters.CotacolMinPoints != nil || filters.CotacolMaxPoints != nil { cotacol, ready := item.CotacolScore() - if !ready || item.CotacolAlgorithmVersion() != ride.CotacolAlgorithmVersion || item.DistanceM <= 0 { + if !ready || item.CotacolAlgorithmVersion() != climb.CotacolAlgorithmVersion || item.DistanceM <= 0 { return false } if filters.CotacolMinPoints != nil && cotacol < float64(*filters.CotacolMinPoints) { -- cgit v1.3