fix(ofsted): badge and compare read the grade still in force
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>
This commit is contained in:
1 parent
a9e3a6a700
commit
a42c586cc8
7 files changed
+179
-52
No files matched your search
@@ -0,0 +1,48 @@
|
||||
/**
|
||||
* 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';
|
||||
}
|
||||
Reference in new issue
Block a user