/** * The sentences the school page and the compare page print about where an * Ofsted grade came from and what the latest visit was. One wording, two pages. * Rule: docs/superpowers/specs/2026-10-05-ofsted-current-status-design.md */ import type { OfstedCurrentGrade, OfstedInspection, OfstedLatestVisit } from './types'; export function formatOfstedDate(iso: string | null | undefined): string { if (!iso) return ''; const d = new Date(iso); if (Number.isNaN(d.getTime())) return ''; return d.toLocaleDateString('en-GB', { day: 'numeric', month: 'long', year: 'numeric' }); } const VISIT_KIND: Record = { report_card: 'Report card inspection', graded: 'Graded inspection', ungraded: 'Ungraded inspection', }; /** "Graded inspection, 6 July 2016" or "Confirmed at an ungraded inspection, 14 March 2023". */ export function gradeSourceLine(current: OfstedCurrentGrade): string { const when = formatOfstedDate(current.date); const what = current.basis === 'confirmed' ? 'Confirmed at an ungraded inspection' : 'Graded inspection'; return when ? `${what}, ${when}` : what; } /** "Ungraded inspection, 13 November 2024: Standards maintained". */ export function latestVisitLine(visit: OfstedLatestVisit): string { const head = `${VISIT_KIND[visit.kind]}, ${formatOfstedDate(visit.date)}`; return visit.outcome ? `${head}: ${visit.outcome}` : head; } /** * Whether the latest visit needs its own line: when it is not where the grade * came from, or when there is no grade but an ungraded outcome to report. A * graded visit without a grade is already dated by the section title. */ export function showLatestVisitLine( ofsted: Pick, ): boolean { const visit = ofsted.latest_visit; if (!visit || visit.kind === 'report_card') return false; const current = ofsted.current_grade; if (current) return current.date !== visit.date; return visit.kind === 'ungraded'; }