Batch E of applying the compare-screen learnings to the school detail page — all-through handling (point 11).
The bug
An all-through school carries both KS2 and KS4 figures in the same yearly rows, but SchoolDetailView flipped phase === 'all-through' to isSecondary and rendered GCSE-only, hiding the whole primary phase (SATs, phonics, KS2 trend). (The Results snapshot already gated its KS2/KS4 blocks on data availability, so both showed there — but the title, trend chart, phonics, nav label and history table all still assumed one phase.)
Hero: an "All-through (primary & secondary)" meta chip (all-ages framing).
Results section: title SATs & GCSE Results, combined subtitle, and Primary — KS2 SATs (Year 6) / Secondary — GCSEs (Year 11) sub-headings separating the blocks.
Results Over Time: two stacked PerformanceCharts (KS2 SATs + GCSEs) instead of crowding both stages — different scales, different gap stories — onto one axis; each gets its correct England overlay.
Phonics section + nav item now show for all-through (primary-stage metric).
History table: an all-through column set covering both phases (RWM, Exceeding, Attainment 8, Progress 8, Eng & Maths 4+).
Nav: "Results" label for all-through instead of "GCSEs".
Tests
New e2e journey (Hessle, 137306) asserts both KS2 and KS4 results + the All-through label render, with a data-driven precondition skip if staging drifts.
Batch E of applying the compare-screen learnings to the school **detail page** — all-through handling (point 11).
### The bug
An all-through school carries **both** KS2 and KS4 figures in the same yearly rows, but `SchoolDetailView` flipped `phase === 'all-through'` to `isSecondary` and rendered **GCSE-only**, hiding the whole primary phase (SATs, phonics, KS2 trend). (The Results *snapshot* already gated its KS2/KS4 blocks on data availability, so both showed there — but the title, trend chart, phonics, nav label and history table all still assumed one phase.)
### Changes
- Explicit `isAllThrough` flag + `showPrimaryContent = isPrimary || isAllThrough`; **pure-secondary behaviour unchanged**.
- **Hero:** an "All-through (primary & secondary)" meta chip (all-ages framing).
- **Results section:** title `SATs & GCSE Results`, combined subtitle, and `Primary — KS2 SATs (Year 6)` / `Secondary — GCSEs (Year 11)` sub-headings separating the blocks.
- **Results Over Time:** two stacked `PerformanceChart`s (KS2 SATs + GCSEs) instead of crowding both stages — different scales, different gap stories — onto one axis; each gets its correct England overlay.
- **Phonics** section + nav item now show for all-through (primary-stage metric).
- **History table:** an all-through column set covering both phases (RWM, Exceeding, Attainment 8, Progress 8, Eng & Maths 4+).
- **Nav:** "Results" label for all-through instead of "GCSEs".
### Tests
- New e2e journey (`Hessle`, 137306) asserts both KS2 and KS4 results + the All-through label render, with a data-driven precondition skip if staging drifts.
- `tsc --noEmit` clean; `npm test` 105/105.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Batch E of applying the compare-screen learnings to the school detail page —
all-through handling (point 11).
An all-through school carries both KS2 and KS4 figures in the same yearly
rows, but SchoolDetailView flipped it to isSecondary and rendered GCSE-only,
hiding the entire primary phase (SATs, phonics, KS2 trend). The Results
snapshot already gated its KS2/KS4 blocks purely on data availability, so both
already appeared there — but the section title, the trend chart, phonics, the
nav label and the history table all still assumed a single phase.
- Add an explicit `isAllThrough` flag (+ `showPrimaryContent = isPrimary ||
isAllThrough`); pure-secondary behaviour is unchanged.
- Hero: an "All-through (primary & secondary)" meta chip for all-ages framing.
- Results section: title "SATs & GCSE Results", a combined subtitle, and
"Primary — KS2 SATs (Year 6)" / "Secondary — GCSEs (Year 11)" sub-headings
separating the two blocks.
- Results Over Time: render two stacked PerformanceCharts (KS2 SATs + GCSEs)
rather than crowding both stages' series — on different scales with
different gap stories — onto one axis. Each gets its correct England overlay.
- Phonics section + nav item now show for all-through (primary-stage metric).
- History table: an all-through column set covering both phases (RWM, Exceeding,
Attainment 8, Progress 8, Eng & Maths 4+).
- Nav "Results" label for all-through instead of "GCSEs".
e2e: a new journey asserts an all-through school (Hessle, 137306) shows both
the KS2 and KS4 results and the All-through label, with a data-driven
precondition skip if staging data drifts.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0146VHeLAWjDVE2B5uU67jCB
This PR fixes all-through schools (covering both KS2 and KS4) from being mislabelled as secondary-only and having their primary-phase results, phonics section, and history chart hidden. It introduces an isAllThrough flag and a showPrimaryContent gate, splits the combined results/history sections into labelled primary and secondary sub-sections, and adds an e2e test with a real all-through school fixture. The change is well-scoped, consistent across nav items, section headers, table columns, and charts, and the added props to PerformanceChart are optional/nullish-safe.
✅ No issues found.
## 🤖 AI Code Review (Claude Code)
This PR fixes all-through schools (covering both KS2 and KS4) from being mislabelled as secondary-only and having their primary-phase results, phonics section, and history chart hidden. It introduces an `isAllThrough` flag and a `showPrimaryContent` gate, splits the combined results/history sections into labelled primary and secondary sub-sections, and adds an e2e test with a real all-through school fixture. The change is well-scoped, consistent across nav items, section headers, table columns, and charts, and the added props to PerformanceChart are optional/nullish-safe.
✅ No issues found.
tudor
merged commit 5e370d09f1 into main2026-07-20 12:02:08 +00:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Batch E of applying the compare-screen learnings to the school detail page — all-through handling (point 11).
The bug
An all-through school carries both KS2 and KS4 figures in the same yearly rows, but
SchoolDetailViewflippedphase === 'all-through'toisSecondaryand rendered GCSE-only, hiding the whole primary phase (SATs, phonics, KS2 trend). (The Results snapshot already gated its KS2/KS4 blocks on data availability, so both showed there — but the title, trend chart, phonics, nav label and history table all still assumed one phase.)Changes
isAllThroughflag +showPrimaryContent = isPrimary || isAllThrough; pure-secondary behaviour unchanged.SATs & GCSE Results, combined subtitle, andPrimary — KS2 SATs (Year 6)/Secondary — GCSEs (Year 11)sub-headings separating the blocks.PerformanceCharts (KS2 SATs + GCSEs) instead of crowding both stages — different scales, different gap stories — onto one axis; each gets its correct England overlay.Tests
Hessle, 137306) asserts both KS2 and KS4 results + the All-through label render, with a data-driven precondition skip if staging drifts.tsc --noEmitclean;npm test105/105.🤖 Generated with Claude Code
🤖 AI Code Review (Claude Code)
This PR fixes all-through schools (covering both KS2 and KS4) from being mislabelled as secondary-only and having their primary-phase results, phonics section, and history chart hidden. It introduces an
isAllThroughflag and ashowPrimaryContentgate, splits the combined results/history sections into labelled primary and secondary sub-sections, and adds an e2e test with a real all-through school fixture. The change is well-scoped, consistent across nav items, section headers, table columns, and charts, and the added props to PerformanceChart are optional/nullish-safe.✅ No issues found.