Files
gridpilot.gg/plans/league-detail-restoration.md
2026-01-21 01:56:07 +01:00

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)

  1. 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.
  2. 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.
  3. Tabs (9):

    • DetailTemplate: usePathname for active tab.
  4. Cleanup (10-11):

    • search_files unused exports.
    • Delete.
  5. 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.