aboutsummaryrefslogtreecommitdiff
path: root/web/views.go
diff options
context:
space:
mode:
Diffstat (limited to 'web/views.go')
-rw-r--r--web/views.go17
1 files changed, 15 insertions, 2 deletions
diff --git a/web/views.go b/web/views.go
index 9a79906..ddea27e 100644
--- a/web/views.go
+++ b/web/views.go
@@ -75,6 +75,7 @@ type RideDetailView struct {
RouteError string
ActionError string
Notice string
+ ExternalURL string
}
type RideMapPass struct {
@@ -295,8 +296,9 @@ func buildRideDetailView(item ride.StoredRide, parsed ride.Ride, passes []mounta
}
profile := buildRideProfile(parsed, passes, officialClimbs, matchPolicy)
return RideDetailView{
- RideView: buildRideView(item),
- Passes: buildRideMapPasses(passes),
+ RideView: buildRideView(item),
+ Passes: buildRideMapPasses(passes),
+ ExternalURL: externalRideURL(item.ExternalID),
Route: GeoJSONFeatureCollection{
Type: "FeatureCollection",
Features: []GeoJSONFeature{{
@@ -312,6 +314,17 @@ func buildRideDetailView(item ride.StoredRide, parsed ride.Ride, passes []mounta
}
}
+func externalRideURL(externalID string) string {
+ const prefix = "strava:"
+ if len(externalID) > len(prefix) && externalID[:len(prefix)] == prefix {
+ id := externalID[len(prefix):]
+ if id != "" {
+ return "https://www.strava.com/activities/" + id
+ }
+ }
+ return ""
+}
+
func buildRideMapPasses(passes []mountain_pass.MountainPass) []RideMapPass {
mapPasses := make([]RideMapPass, 0, len(passes))
for _, mountainPass := range passes {