Search badges date a grade by the inspection that awarded or confirmed it (ofsted_grade_date) and say 'Inspected · year' when the latest inspection gave no grade. ofstedDisplay's kinds become graded / confirmed / no_overall_grade, read from current_grade rather than a carried-forward overall_effectiveness. lib/ofstedStatus.ts holds the two sentences the school and compare pages share. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
49 lines
1.9 KiB
TypeScript
49 lines
1.9 KiB
TypeScript
/**
|
|
* 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<OfstedLatestVisit['kind'], string> = {
|
|
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<OfstedInspection, 'current_grade' | 'latest_visit'>,
|
|
): 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';
|
|
}
|