/* 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(); /* restore session (same browser tab session only) */ (function(){ let name = null; try{ name = sessionStorage.getItem("teach.session"); }catch(e){} const users = loadUsers(); if(name && users[name]){ currentUser = { name, data: users[name].data }; THEMES = themesFromData(currentUser.data); GENERAL_EXTRA = generalExtraFromData(currentUser.data); updateUserUI(); BS = boardsFromData(currentUser.data); loadCurrentSlot(); }else{ updateBoardsUI(); } })();