feat(detail): replace SATs text tables with cascade bar charts, add admissions bar and history accordion
Build and Push Docker Images / Build Backend (FastAPI) (push) Successful in 19s
Build and Push Docker Images / Build Frontend (Next.js) (push) Successful in 46s
Build and Push Docker Images / Build Pipeline (Meltano + dbt + Airflow) (push) Successful in 13s
Build and Push Docker Images / Trigger Portainer Update (push) Successful in 1s

Redesign the School Details page for better parent comprehension:
- New SatsChart component: horizontal cascade bars with ruler scale and
  national average marker (teal/coral palette matching site theme)
- Admissions section: visual progress bar showing 1st-preference demand
  vs available places, colour-coded by oversubscription status
- Historical data: collapse raw year-by-year table behind a disclosure
  element while keeping the performance line chart always visible
- EAL metric: add national average comparison via DeltaChip (backend now
  includes eal_pct in national averages endpoint)
- New formatWithSuppression utility for null/suppressed data handling

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Tudor Sitaru
2026-04-13 21:22:24 +01:00
parent 8ce34b3ecc
commit 3bf2e8f262
6 changed files with 506 additions and 113 deletions
+7
View File
@@ -71,6 +71,13 @@ export function formatPercentage(value: number | null | undefined, decimals: num
return `${value.toFixed(decimals)}%`;
}
export function formatWithSuppression(value: number | null | undefined): { display: string; suppressed: boolean } {
if (value == null) return { display: '—', suppressed: true };
return { display: formatPercentage(value), suppressed: false };
}
export const SUPPRESSED_TOOLTIP = 'Data not available — may be suppressed to protect small cohorts.';
/**
* Format a progress score (can be negative)
*/