diff --git a/frontend/js/labs/lab-glue.js b/frontend/js/labs/lab-glue.js new file mode 100644 index 0000000..d6d5ae6 --- /dev/null +++ b/frontend/js/labs/lab-glue.js @@ -0,0 +1,825 @@ +'use strict'; + const { user, isTeacher, isAdmin } = LS.initPage(); + window._simQuizAllowed = true; // default; overridden after permission fetch for students + LS.showBoardIfAllowed(); + + + /* ════════════════════════════════ + SIM CATALOGUE (defined after P_* consts below) + ════════════════════════════════ */ + + let _catFilter = 'all'; + var _disabledSimIds = new Set(); + let _simModuleDisabled = false; + + function filterSims(cat, btn) { + _catFilter = cat; + document.querySelectorAll('.lab-filter').forEach(b => b.classList.remove('active')); + btn.classList.add('active'); + renderSims(); + } + + function renderSims() { + const base = _catFilter === 'all' ? SIMS : SIMS.filter(s => s.cat === _catFilter); + const list = base.filter(s => !s.id || !_disabledSimIds.has(s.id)); + document.getElementById('sim-grid').innerHTML = list.map(s => ` +