Segments Phase 4: detail page, activity efforts, athlete tab, new APIs
New API endpoints:
- GET /api/segments/{id} — single segment metadata
- GET /api/activities/{id}/segment_efforts — efforts for an activity (auth)
- GET /api/users/{handle}/segment_summary — public best time + count per segment
New components:
- SegmentDetail.svelte — map + metadata + effort table (with PR/Δ) + rescan button
- SegmentsPage.svelte — URL router: shows detail when /segments/{id}/, list otherwise
Updated:
- segments/index.astro — now uses SegmentsPage router
- nginx-activity.conf — add /segments/ try_files rule for client-side routing
- ActivityDetail.svelte — segment efforts block below laps
- AthleteView.svelte — Segments tab with best time + effort count per segment
- format.ts — add formatElapsed() for compact m:ss display
This commit is contained in:
@@ -1,9 +1,7 @@
|
||||
---
|
||||
import Base from '../../layouts/Base.astro';
|
||||
import SegmentsView from '../../components/SegmentsView.svelte';
|
||||
import SegmentsPage from '../../components/SegmentsPage.svelte';
|
||||
---
|
||||
<Base title="Segments — BincioActivity">
|
||||
<div class="flex flex-col" style="height: calc(100vh - 48px);">
|
||||
<SegmentsView base={import.meta.env.BASE_URL} client:only="svelte" />
|
||||
</div>
|
||||
<SegmentsPage base={import.meta.env.BASE_URL} client:only="svelte" />
|
||||
</Base>
|
||||
|
||||
@@ -36,7 +36,7 @@ const athleteUrl = `${mergedBase}athlete.json`;
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<AthleteView {base} {indexUrl} {athleteUrl} client:only="svelte" />
|
||||
<AthleteView {base} {indexUrl} {athleteUrl} {handle} client:only="svelte" />
|
||||
</Base>
|
||||
<script define:vars={{ handle }}>
|
||||
function applyMeCheck(me) {
|
||||
|
||||
Reference in New Issue
Block a user