teach/public/js/app.js
bes-r 352e22a64b
All checks were successful
dev - build & deploy naar test / build-and-deploy (push) Successful in 13s
v0.2.00: schoolsysteem met rollen (super/admin/groepsleiding/leerling), koppelcodes, server-API en beheerpaneel
2026-07-09 22:26:01 +02:00

52 lines
No EOL
2.1 KiB
JavaScript

/* teach - start: beeldgrootte, contrast, sessie-herstel */
/* =========================================================
init
==========================================================*/
/* display size: scale the whole app up for pupils who need it (device setting) */
let ZOOM = 100;
const btnZoomIn = document.getElementById("btnZoomIn");
const btnZoomOut = document.getElementById("btnZoomOut");
const zoomPct = document.getElementById("zoomPct");
function setZoom(z){
ZOOM = Math.max(100, Math.min(200, Math.round(z/10)*10));
document.body.style.zoom = ZOOM/100;
zoomPct.textContent = ZOOM+"%";
zoomPct.classList.toggle("on", ZOOM!==100);
btnZoomIn.title = btnZoomOut.title = zoomPct.title = T("zoomUI");
btnZoomIn.disabled = ZOOM>=200;
btnZoomOut.disabled = ZOOM<=100;
try{ localStorage.setItem("teach.zoom", ZOOM); }catch(e){}
}
btnZoomIn.addEventListener("click", ()=>setZoom(ZOOM+10));
btnZoomOut.addEventListener("click", ()=>setZoom(ZOOM-10));
zoomPct.addEventListener("click", ()=>setZoom(100)); /* tap the % to reset */
document.addEventListener("langchange", ()=>{ btnZoomIn.title = btnZoomOut.title = zoomPct.title = T("zoomUI"); });
try{ const z = +localStorage.getItem("teach.zoom"); if(z>100) setZoom(z); else setZoom(100); }catch(e){ setZoom(100); }
/* high-contrast accessibility mode (device setting, persists) */
const btnHC = document.getElementById("btnHC");
function setHC(on){
document.body.classList.toggle("hc", on);
btnHC.classList.toggle("on", on);
btnHC.title = T("a11y");
try{ localStorage.setItem("teach.hc", on ? "1" : ""); }catch(e){}
}
btnHC.addEventListener("click", ()=>setHC(!document.body.classList.contains("hc")));
document.addEventListener("langchange", ()=>{ btnHC.title = T("a11y"); });
try{ if(localStorage.getItem("teach.hc")==="1") setHC(true); }catch(e){}
applyI18n();
updateEmptyHint();
/* sessie herstellen: geldig servertoken? dan opnieuw inloggen zonder wachtwoord */
(async function(){
updateBoardsUI();
if(!TOKEN) return;
try{
const me = await api("/auth/me");
currentUser = me.user;
updateUserUI();
await hydrateFromServer();
}catch(e){
resetToGuest();
}
})();