Federal Archive · Khaemenes Academy

Grade 10 United States History Honors

A polished, self-contained student portal for investigating the American story through evidence, constitutional ideas, civic institutions, economics, geography, media literacy, Florida connections, and a nonpartisan civic capstone.

Khaemenes High · Grade 10 United States History Honors · Jennifer Pearl · 2026

`} function printReport(){let w=window.open("","_blank"); w.document.write(reportHTML()); w.document.close(); w.focus(); setTimeout(()=>w.print(),400)} function downloadReport(){download(`SS10_Report_${safe(student().name)}.html`,reportHTML(),"text/html")} function downloadCSV(){ const s=student(); let rows=[["Student","Week","Unit","Title","Lessons","Assignments","Quiz","Attempts","Repeats"]]; APP.weeks.forEach(w=>{let r=weekRec(s,w.week); rows.push([s.name,w.week,w.unit,w.title,lessonPct(s,w.week),assignPct(s,w.week),quizBest(s,w.week)||"",r.quiz.attempts.length,r.repeats||0])}); download(`SS10_Progress_${safe(s.name)}.csv`,rows.map(r=>r.map(csv).join(",")).join("\n"),"text/csv") } function downloadScope(){let rows=[["Week","Unit","Title","Period","Regions","Essential Question","Alignment"]]; APP.weeks.forEach(w=>rows.push([w.week,w.unit,w.title,w.period,w.regions,w.essentialQuestion,w.alignment])); download("SS10_US_History_36_Week_Scope.csv",rows.map(r=>r.map(csv).join(",")).join("\n"),"text/csv")} function downloadCapstone(){download("SS10_Civic_Capstone_Guide.txt","Grade 10 U.S. History Civic Capstone\n\n1. Choose a historically grounded civic issue.\n2. Build an evidence file.\n3. Map institutions and authority.\n4. Compare policy options.\n5. Create a nonpartisan public product.\n6. Reflect on ethics, disagreement, and next steps.\n","text/plain")} function downloadBackup(){download("SS10_USH_Backup.json",JSON.stringify(state,null,2),"application/json")} function importBackup(e){const f=e.target.files[0]; if(!f)return; const r=new FileReader(); r.onload=()=>{try{state=JSON.parse(r.result); if(!state.students)throw Error(); state.activeId=state.activeId||state.students[0]?.id; save(); render()}catch{alert("Could not import backup.")}}; r.readAsText(f)} function safe(s){return String(s||"student").replace(/[^a-z0-9_-]+/gi,"_").slice(0,60)} function csv(v){return `"${String(v??"").replaceAll('"','""')}"`} function download(name,text,type){let b=new Blob([text],{type}),a=document.createElement("a"); a.href=URL.createObjectURL(b); a.download=name; document.body.appendChild(a); a.click(); setTimeout(()=>{URL.revokeObjectURL(a.href);a.remove()},800)} /* Boot */ document.querySelectorAll("[data-view]").forEach(b=>b.onclick=()=>{view=b.dataset.view;render()}); document.querySelectorAll("[data-go]").forEach(b=>b.onclick=()=>{view=b.dataset.go;render()}); $("addStudent").onclick=()=>{let n=$("studentName").value.trim(); if(!n)return alert("Enter a student name."); addStudent(n); $("studentName").value=""}; $("studentSelect").onchange=e=>{state.activeId=e.target.value; save(); render()}; $("deleteStudent").onclick=()=>{let s=student(); if(!s)return; if(!confirm(`Delete ${s.name}?`))return; state.students=state.students.filter(x=>x.id!==s.id); state.activeId=state.students[0]?.id||null; if(!state.students.length)addStudent("First Student"); save(); render()}; $("demo").onclick=()=>{addStudent("Demo Student"); let s=student(); for(let i=1;i<=3;i++){let r=weekRec(s,i); ["Monday","Tuesday","Wednesday"].forEach(d=>r.lessons[d]=true); r.assignments[0]=true; r.quiz.best=[80,72,88][i-1]; r.quiz.attempts.push({date:new Date().toISOString(),score:r.quiz.best})} save(); render()}; if(!state.students.length)addStudent("First Student"); else render();