diff --git a/frontend/js/exam-prep/variants.js b/frontend/js/exam-prep/variants.js index c492acc..16aad2f 100644 --- a/frontend/js/exam-prep/variants.js +++ b/frontend/js/exam-prep/variants.js @@ -34,6 +34,12 @@ const pickerOver = document.getElementById('vp-overlay'); const pickerGrid = document.getElementById('vp-grid'); + /* Человекочитаемая метка варианта (ЦТ-2015 и т.п.); фолбэк — «Вариант N». */ + const labelOf = (n) => { + const v = variants.find(x => x.n === n); + return (v && v.label) || `Вариант ${n}`; + }; + /* ── Picker overlay ─────────────────────────────────────────── */ function buildGrid() { pickerGrid.innerHTML = variants.map(v => { @@ -45,7 +51,7 @@ const active = v.n === currentN ? ' active' : ''; const title = `${v.label} · решено ${v.solved}/${v.total}` + (v.viewed_sol ? ` · решений открыто ${v.viewed_sol}` : ''); - return ``; + return ``; }).join(''); pickerGrid.querySelectorAll('button[data-n]').forEach(b => { b.onclick = () => { selectVariant(Number(b.dataset.n)); closePicker(); }; @@ -74,7 +80,7 @@ /* ── Variant rendering ──────────────────────────────────────── */ async function selectVariant(n) { currentN = n; - pickerLabel.textContent = `Вариант ${n}`; + pickerLabel.textContent = labelOf(n); try { localStorage.setItem(`exam_prep_${examKey}_last_variant`, String(n)); } catch {} if (!tasksCache.has(n)) { @@ -94,7 +100,7 @@ } function renderVariant(n, tasks) { - main.innerHTML = `