2.6 KiB
2.6 KiB
Detailed Restoration Plan for League Detail Pages
Executive Summary
Restore /leagues/:id to full functionality per ALPHA_PLAN.md:
- Logo display.
- Team members (roster).
- Races (schedule).
- SoF (avg Strength of Field).
- All tabs/subpages with data.
Timeline: Surgical fixes (data queries, templates, cleanup). Production-ready: Data from bootstrap adapters, no mocks.
Current State (From Tools)
- Routes: Tabs via layout.tsx (Overview, Schedule, Standings, Rulebook + admin).
- page.tsx:
LeagueDetailPageQuery→ LeagueService → partial DTO → hardcoded empty ViewData. - Templates: Overview shows stats (0s), sidebar empty. Detail has breadcrumb/tabs.
- Subpages: schedule/standings exist (empty fallbacks), no roster/page.tsx.
Target State
Data: Full relations from seeded adapters.
UI: Logo header, roster preview, races summary, SoF stat, populated tabs.
Mermaid Flow
graph LR
PQ[LeagueDetailPageQuery]
LS[LeagueService.getLeagueDetailData<br/>FIX: +includes(relations)]
VB[ViewDataBuilder<br/>FIX: real inputs, avgSOF]
LT[LeagueDetailTemplate<br/>Tabs active]
OV[OverviewTemplate<br/>Logo/stats/roster]
SP[Sub Queries/Templates]
Bootstrap[Adapters/Bootstrap Seed] -.-> LS
Step-by-Step Execution (Todo)
-
Data (1-3):
- Read/extend LeagueService: Repo.findById({include: ['memberships', 'races', 'sponsors', 'logoUrl']}).
- Bootstrap: Seed demo-league w/ logo/members/races.sof.
- VB: Pass query data, compute SOF avg.
-
UI (4-8):
- Logo: Add to DTO/template header (img fallback icon).
- Roster preview in overview (members.slice(0,5)).
- Create roster/page.tsx (members table).
- schedule/page.tsx: Races list (date/track/sof/status).
- standings/page.tsx: Standings + per-race SOF.
-
Tabs (9):
- DetailTemplate: usePathname for active tab.
-
Cleanup (10-11):
- search_files unused exports.
- Delete.
-
Verify (12-13):
- eslint/tsc/test.
- Manual demo-league test.
Files to Edit (Clickable)
LeagueService
LeagueDetailPageQuery
LeagueDetailViewDataBuilder
LeagueOverviewTemplate
roster/page.tsx (new)
Success Criteria
- Demo league: Logo shows, members>0, races list, SOF>0, tabs data.
- No empties/hardcodes.
- Tests pass.
Review/approve before code.