diff options
| author | Martin Kagamino Lehoux <martin@lehoux.net> | 2026-08-16 11:24:45 +0200 |
|---|---|---|
| committer | Martin Kagamino Lehoux <martin@lehoux.net> | 2026-08-16 11:24:45 +0200 |
| commit | 3e1c6f9c0056c488f51dc2e13d6ddf5365adb312 (patch) | |
| tree | 7d8bc8320643c91bf6bf217c622240859b5efe12 /web/views.go | |
| parent | 9dd4a9ac8f359f8d25b1c89fccc9e098f7b124ca (diff) | |
refactor(web): derive climb display groups
Diffstat (limited to 'web/views.go')
| -rw-r--r-- | web/views.go | 41 |
1 files changed, 26 insertions, 15 deletions
diff --git a/web/views.go b/web/views.go index 6c96576..f8a45d3 100644 --- a/web/views.go +++ b/web/views.go @@ -29,11 +29,29 @@ type RideDetailView struct { } type RideProfile struct { - Points []RideProfilePoint `json:"points"` - Climbs []RideProfileClimb `json:"climbs"` - OfficialClimbs []RideProfileClimb `json:"-"` - UnmatchedClimbs []RideProfileClimb `json:"-"` - Crossings []RideProfileCrossing `json:"crossings"` + Points []RideProfilePoint `json:"points"` + Climbs []RideProfileClimb `json:"climbs"` + Crossings []RideProfileCrossing `json:"crossings"` +} + +func (profile RideProfile) OfficialClimbs() []RideProfileClimb { + climbs := make([]RideProfileClimb, 0) + for _, climb := range profile.Climbs { + if climb.OfficialClimbID > 0 { + climbs = append(climbs, climb) + } + } + return climbs +} + +func (profile RideProfile) UnmatchedClimbs() []RideProfileClimb { + climbs := make([]RideProfileClimb, 0) + for _, climb := range profile.Climbs { + if climb.OfficialClimbID == 0 { + climbs = append(climbs, climb) + } + } + return climbs } type RideProfilePoint struct { @@ -228,11 +246,9 @@ func buildRideDetailView(item rides.Ride, parsed ride.Ride, passes []mountain_pa func buildRideProfile(parsed ride.Ride, passes []mountain_pass.MountainPass, officialClimbs []official_climb.OfficialClimb, matchPolicy official_climb.MatchPolicy) RideProfile { profile := RideProfile{ - Points: make([]RideProfilePoint, parsed.Len()), - Climbs: make([]RideProfileClimb, 0), - OfficialClimbs: make([]RideProfileClimb, 0), - UnmatchedClimbs: make([]RideProfileClimb, 0), - Crossings: make([]RideProfileCrossing, 0), + Points: make([]RideProfilePoint, parsed.Len()), + Climbs: make([]RideProfileClimb, 0), + Crossings: make([]RideProfileCrossing, 0), } for i := 0; i < parsed.Len(); i++ { coordinate := parsed.Coord(i) @@ -264,11 +280,6 @@ func buildRideProfile(parsed ride.Ride, passes []mountain_pass.MountainPass, off EndIndex: segment.EndIndex(), } profile.Climbs = append(profile.Climbs, climb) - if climb.OfficialClimbID > 0 { - profile.OfficialClimbs = append(profile.OfficialClimbs, climb) - } else { - profile.UnmatchedClimbs = append(profile.UnmatchedClimbs, climb) - } } for _, crossing := range analysis.Crossings { profile.Crossings = append(profile.Crossings, RideProfileCrossing{ |