From 8e0c55230ef59869bda1ca19ca8697b447d57698 Mon Sep 17 00:00:00 2001 From: Martin Kagamino Lehoux Date: Sun, 6 Sep 2026 12:38:16 +0200 Subject: Preview: analyze a raw GPX or FIT file without persisting it --- web/views.go | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) (limited to 'web/views.go') diff --git a/web/views.go b/web/views.go index 952b045..bfbfe09 100644 --- a/web/views.go +++ b/web/views.go @@ -68,14 +68,16 @@ func buildAnalyticsPoints(items []ride.StoredRide) []AnalyticsPoint { type RideDetailView struct { RideView - Route GeoJSONFeatureCollection - Passes []RideMapPass - HasRoute bool - Profile RideProfile - RouteError string - ActionError string - Notice string - ExternalURL string + Route GeoJSONFeatureCollection + Passes []RideMapPass + HasRoute bool + Profile RideProfile + RouteError string + ActionError string + Notice string + ExternalURL string + Preview bool + OfficialClimbFormURL string } type RideMapPass struct { @@ -289,17 +291,19 @@ func officialClimbCreateURL(id int64) string { return fmt.Sprintf("/rides/%d/official-climbs", id) } -func buildRideDetailView(item ride.StoredRide, parsed ride.Ride, passes []mountain_pass.MountainPass, officialClimbs []official_climb.OfficialClimb, matchPolicy official_climb.MatchPolicy) RideDetailView { +func buildRideDetailView(view RideView, parsed ride.Ride, passes []mountain_pass.MountainPass, officialClimbs []official_climb.OfficialClimb, matchPolicy official_climb.MatchPolicy) RideDetailView { coords := parsed.Coords coordinates := make([][]float64, len(coords)) for i, coordinate := range coords { coordinates[i] = []float64{coordinate.Lon, coordinate.Lat} } profile := buildRideProfile(parsed, passes, officialClimbs, matchPolicy) - return RideDetailView{ - RideView: buildRideView(item), - Passes: buildRideMapPasses(passes), - ExternalURL: externalRideURL(item.ExternalID), + detail := RideDetailView{ + RideView: view, + Passes: buildRideMapPasses(passes), + ExternalURL: externalRideURL(view.Ride.ExternalID), + OfficialClimbFormURL: officialClimbCreateURL(view.Ride.ID), + HasRoute: true, Route: GeoJSONFeatureCollection{ Type: "FeatureCollection", Features: []GeoJSONFeature{{ @@ -310,9 +314,9 @@ func buildRideDetailView(item ride.StoredRide, parsed ride.Ride, passes []mounta }, }}, }, - HasRoute: true, - Profile: profile, + Profile: profile, } + return detail } func externalRideURL(externalID string) string { -- cgit v1.3