2026-01-06 13:52:00 +00:00
<!DOCTYPE html>
< html lang = "en" >
< head >
< meta charset = "UTF-8" >
< meta name = "viewport" content = "width=device-width, initial-scale=1.0" >
2026-01-06 15:39:06 +00:00
< title > SchoolCompare | Compare Primary School Performance</ title >
2026-01-06 13:52:00 +00:00
< link rel = "preconnect" href = "https://fonts.googleapis.com" >
< link rel = "preconnect" href = "https://fonts.gstatic.com" crossorigin >
< link href = "https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,400;0,9..40,500;0,9..40,600;0,9..40,700&family=Playfair+Display:wght@600;700&display=swap" rel = "stylesheet" >
< script src = "https://cdn.jsdelivr.net/npm/chart.js" ></ script >
< link rel = "stylesheet" href = "/static/styles.css" >
</ head >
< body >
< div class = "noise-overlay" ></ div >
< header class = "header" >
< div class = "header-content" >
< div class = "logo" >
< div class = "logo-icon" >
< svg viewBox = "0 0 40 40" fill = "none" xmlns = "http://www.w3.org/2000/svg" >
< circle cx = "20" cy = "20" r = "18" stroke = "currentColor" stroke-width = "2" />
< path d = "M20 8L20 32M12 14L28 14M10 20L30 20M12 26L28 26" stroke = "currentColor" stroke-width = "1.5" stroke-linecap = "round" />
< circle cx = "20" cy = "20" r = "4" fill = "currentColor" />
</ svg >
</ div >
< div class = "logo-text" >
2026-01-06 15:39:06 +00:00
< span class = "logo-title" > SchoolCompare</ span >
< span class = "logo-subtitle" > schoolcompare.co.uk</ span >
2026-01-06 13:52:00 +00:00
</ div >
</ div >
< nav class = "nav" >
< a href = "#" class = "nav-link active" data-view = "dashboard" > Dashboard</ a >
< a href = "#" class = "nav-link" data-view = "compare" > Compare</ a >
< a href = "#" class = "nav-link" data-view = "rankings" > Rankings</ a >
</ nav >
</ div >
</ header >
< main class = "main" >
<!-- Dashboard View -->
< section id = "dashboard-view" class = "view active" >
< div class = "hero" >
2026-01-06 15:39:06 +00:00
< h1 class = "hero-title" > Compare Primary School Performance</ h1 >
< p class = "hero-subtitle" > Explore and compare KS2 results across Wandsworth & Merton primary schools</ p >
2026-01-06 13:52:00 +00:00
</ div >
< div class = "search-section" >
< div class = "search-container" >
< input type = "text" id = "school-search" class = "search-input" placeholder = "Search primary schools by name..." >
< div class = "search-icon" >
< svg viewBox = "0 0 24 24" fill = "none" stroke = "currentColor" stroke-width = "2" >
< circle cx = "11" cy = "11" r = "8" />
< path d = "M21 21l-4.35-4.35" />
</ svg >
</ div >
</ div >
< div class = "filter-row" >
< select id = "local-authority-filter" class = "filter-select" >
< option value = "" > All Areas</ option >
< option value = "Wandsworth" > Wandsworth</ option >
< option value = "Merton" > Merton</ option >
</ select >
< select id = "type-filter" class = "filter-select" >
< option value = "" > All School Types</ option >
</ select >
</ div >
</ div >
< div class = "schools-grid" id = "schools-grid" >
<!-- School cards populated by JS -->
</ div >
</ section >
<!-- Compare View -->
< section id = "compare-view" class = "view" >
< div class = "compare-header" >
< h2 class = "section-title" > Compare Primary Schools</ h2 >
< p class = "section-subtitle" > Select schools to compare their KS2 performance over time</ p >
</ div >
< div class = "selected-schools" id = "selected-schools" >
< div class = "empty-selection" >
< div class = "empty-icon" >
< svg viewBox = "0 0 48 48" fill = "none" stroke = "currentColor" stroke-width = "1.5" >
< rect x = "6" y = "10" width = "36" height = "28" rx = "2" />
< path d = "M6 18h36" />
< circle cx = "14" cy = "14" r = "2" fill = "currentColor" />
< circle cx = "22" cy = "14" r = "2" fill = "currentColor" />
</ svg >
</ div >
< p > Search and add schools to compare</ p >
</ div >
</ div >
< div class = "compare-search-section" >
< input type = "text" id = "compare-search" class = "search-input" placeholder = "Add a school to compare..." >
< div id = "compare-results" class = "compare-results" ></ div >
</ div >
< div class = "charts-section" id = "charts-section" style = "display: none;" >
< div class = "metric-selector" >
< label > Select KS2 Metric:</ label >
< select id = "metric-select" class = "filter-select" >
< optgroup label = "Expected Standard" >
< option value = "rwm_expected_pct" > Reading, Writing & Maths Combined %</ option >
< option value = "reading_expected_pct" > Reading Expected %</ option >
< option value = "writing_expected_pct" > Writing Expected %</ option >
< option value = "maths_expected_pct" > Maths Expected %</ option >
< option value = "gps_expected_pct" > GPS Expected %</ option >
< option value = "science_expected_pct" > Science Expected %</ option >
</ optgroup >
< optgroup label = "Higher Standard" >
< option value = "rwm_high_pct" > RWM Combined Higher %</ option >
< option value = "reading_high_pct" > Reading Higher %</ option >
< option value = "writing_high_pct" > Writing Higher %</ option >
< option value = "maths_high_pct" > Maths Higher %</ option >
< option value = "gps_high_pct" > GPS Higher %</ option >
</ optgroup >
< optgroup label = "Progress Scores" >
< option value = "reading_progress" > Reading Progress</ option >
< option value = "writing_progress" > Writing Progress</ option >
< option value = "maths_progress" > Maths Progress</ option >
</ optgroup >
< optgroup label = "Average Scores" >
< option value = "reading_avg_score" > Reading Avg Score</ option >
< option value = "maths_avg_score" > Maths Avg Score</ option >
< option value = "gps_avg_score" > GPS Avg Score</ option >
</ optgroup >
< optgroup label = "Gender Performance" >
< option value = "rwm_expected_boys_pct" > RWM Expected % (Boys)</ option >
< option value = "rwm_expected_girls_pct" > RWM Expected % (Girls)</ option >
< option value = "rwm_high_boys_pct" > RWM Higher % (Boys)</ option >
< option value = "rwm_high_girls_pct" > RWM Higher % (Girls)</ option >
</ optgroup >
< optgroup label = "Equity (Disadvantaged)" >
< option value = "rwm_expected_disadvantaged_pct" > RWM Expected % (Disadvantaged)</ option >
< option value = "rwm_expected_non_disadvantaged_pct" > RWM Expected % (Non-Disadvantaged)</ option >
< option value = "disadvantaged_gap" > Disadvantaged Gap vs National</ option >
</ optgroup >
< optgroup label = "School Context" >
< option value = "disadvantaged_pct" > % Disadvantaged Pupils</ option >
< option value = "eal_pct" > % EAL Pupils</ option >
< option value = "sen_support_pct" > % SEN Support</ option >
< option value = "stability_pct" > % Pupil Stability</ option >
</ optgroup >
< optgroup label = "3-Year Trends" >
< option value = "rwm_expected_3yr_pct" > RWM Expected % (3-Year Avg)</ option >
< option value = "reading_avg_3yr" > Reading Score (3-Year Avg)</ option >
< option value = "maths_avg_3yr" > Maths Score (3-Year Avg)</ option >
</ optgroup >
</ select >
</ div >
< div class = "chart-container" >
< canvas id = "comparison-chart" ></ canvas >
</ div >
< div class = "data-table-container" >
< table class = "data-table" id = "comparison-table" >
< thead >
< tr id = "table-header" ></ tr >
</ thead >
< tbody id = "table-body" ></ tbody >
</ table >
</ div >
</ div >
</ section >
<!-- Rankings View -->
< section id = "rankings-view" class = "view" >
< div class = "rankings-header" >
< h2 class = "section-title" > Primary School Rankings</ h2 >
2026-01-06 15:39:06 +00:00
< p class = "section-subtitle" > Top performing primary schools ranked by KS2 metric</ p >
2026-01-06 13:52:00 +00:00
</ div >
< div class = "rankings-controls" >
< select id = "ranking-metric" class = "filter-select" >
< optgroup label = "Expected Standard" >
< option value = "rwm_expected_pct" > Reading, Writing & Maths Combined %</ option >
< option value = "reading_expected_pct" > Reading Expected %</ option >
< option value = "writing_expected_pct" > Writing Expected %</ option >
< option value = "maths_expected_pct" > Maths Expected %</ option >
< option value = "gps_expected_pct" > GPS Expected %</ option >
< option value = "science_expected_pct" > Science Expected %</ option >
</ optgroup >
< optgroup label = "Higher Standard" >
< option value = "rwm_high_pct" > RWM Combined Higher %</ option >
< option value = "reading_high_pct" > Reading Higher %</ option >
< option value = "writing_high_pct" > Writing Higher %</ option >
< option value = "maths_high_pct" > Maths Higher %</ option >
< option value = "gps_high_pct" > GPS Higher %</ option >
</ optgroup >
< optgroup label = "Progress Scores" >
< option value = "reading_progress" > Reading Progress</ option >
< option value = "writing_progress" > Writing Progress</ option >
< option value = "maths_progress" > Maths Progress</ option >
</ optgroup >
< optgroup label = "Average Scores" >
< option value = "reading_avg_score" > Reading Avg Score</ option >
< option value = "maths_avg_score" > Maths Avg Score</ option >
< option value = "gps_avg_score" > GPS Avg Score</ option >
</ optgroup >
< optgroup label = "Gender Performance" >
< option value = "rwm_expected_boys_pct" > RWM Expected % (Boys)</ option >
< option value = "rwm_expected_girls_pct" > RWM Expected % (Girls)</ option >
< option value = "rwm_high_boys_pct" > RWM Higher % (Boys)</ option >
< option value = "rwm_high_girls_pct" > RWM Higher % (Girls)</ option >
</ optgroup >
< optgroup label = "Equity (Disadvantaged)" >
< option value = "rwm_expected_disadvantaged_pct" > RWM Expected % (Disadvantaged)</ option >
< option value = "rwm_expected_non_disadvantaged_pct" > RWM Expected % (Non-Disadvantaged)</ option >
</ optgroup >
< optgroup label = "3-Year Trends" >
< option value = "rwm_expected_3yr_pct" > RWM Expected % (3-Year Avg)</ option >
</ optgroup >
</ select >
< select id = "ranking-year" class = "filter-select" >
<!-- Populated by JS -->
</ select >
</ div >
< div class = "rankings-list" id = "rankings-list" >
<!-- Rankings populated by JS -->
</ div >
</ section >
</ main >
<!-- School Detail Modal -->
< div class = "modal" id = "school-modal" >
< div class = "modal-backdrop" ></ div >
< div class = "modal-content" >
< button class = "modal-close" id = "modal-close" >
< svg viewBox = "0 0 24 24" fill = "none" stroke = "currentColor" stroke-width = "2" >
< path d = "M18 6L6 18M6 6l12 12" />
</ svg >
</ button >
< div class = "modal-header" >
< h2 id = "modal-school-name" ></ h2 >
< div class = "modal-meta" id = "modal-meta" ></ div >
</ div >
< div class = "modal-body" >
< div class = "modal-chart-container" >
< canvas id = "school-detail-chart" ></ canvas >
</ div >
< div class = "modal-stats" id = "modal-stats" ></ div >
</ div >
< div class = "modal-footer" >
< button class = "btn btn-primary" id = "add-to-compare" > Add to Compare</ button >
</ div >
</ div >
</ div >
< footer class = "footer" >
< p > Data source: < a href = "https://www.compare-school-performance.service.gov.uk/download-data" target = "_blank" > UK Government - Compare School Performance</ a ></ p >
< p class = "footer-note" > Primary school (KS2) data for Wandsworth and Merton. Data from 2019-2020, 2020-2021, 2021-2022 unavailable due to COVID-19 disruption.</ p >
</ footer >
< script src = "/static/app.js" ></ script >
</ body >
</ html >