Admin group: large variant modal with the assigned variant task text
This commit is contained in:
@@ -195,6 +195,8 @@ function openDefense(btn) {
|
||||
|
||||
/* ---------- Назначение варианта (вручную или случайно из уровня) ---------- */
|
||||
|
||||
var VARIANT_CACHE = {};
|
||||
|
||||
function openVariant(btn) {
|
||||
var student = btn.getAttribute('data-student') || '';
|
||||
var lab = btn.getAttribute('data-lab') || '';
|
||||
@@ -210,6 +212,7 @@ function openVariant(btn) {
|
||||
|
||||
var levelSel = $id('variant-level');
|
||||
levelSel.innerHTML = '';
|
||||
VARIANT_CACHE = {};
|
||||
fetch('/admin/labs/' + encodeURIComponent(lab) + '/schema')
|
||||
.then(function (r) { return r.ok ? r.json() : { levels: [] }; })
|
||||
.then(function (data) {
|
||||
@@ -218,8 +221,19 @@ function openVariant(btn) {
|
||||
opt.value = lvl.id;
|
||||
opt.textContent = lvl.title || ('Уровень ' + (i + 1));
|
||||
opt.__variants = lvl.variants || [];
|
||||
(lvl.variants || []).forEach(function (v) { VARIANT_CACHE[v.id] = v; });
|
||||
levelSel.appendChild(opt);
|
||||
});
|
||||
// если вариант уже назначен — открываем уровень, в котором он лежит
|
||||
if (currentVariant) {
|
||||
Array.prototype.some.call(levelSel.options, function (opt) {
|
||||
if ((opt.__variants || []).some(function (v) { return v.id === currentVariant; })) {
|
||||
levelSel.value = opt.value;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
}
|
||||
levelSel.onchange = function () { fillVariantSelect(currentVariant); };
|
||||
fillVariantSelect(currentVariant);
|
||||
});
|
||||
@@ -243,7 +257,27 @@ function fillVariantSelect(currentVariant) {
|
||||
});
|
||||
$id('variant-random-level').value = levelSel.value || '';
|
||||
$id('variant-pin-id').value = variantSel.value || '';
|
||||
variantSel.onchange = function () { $id('variant-pin-id').value = variantSel.value || ''; };
|
||||
variantSel.onchange = function () {
|
||||
$id('variant-pin-id').value = variantSel.value || '';
|
||||
showVariantTask();
|
||||
};
|
||||
showVariantTask();
|
||||
}
|
||||
|
||||
function showVariantTask() {
|
||||
var variantSel = $id('variant-variant');
|
||||
var wrap = $id('variant-task-wrap');
|
||||
var box = $id('variant-task');
|
||||
if (!wrap || !box) return;
|
||||
var sel = variantSel.selectedOptions[0];
|
||||
var v = sel && VARIANT_CACHE[sel.value];
|
||||
if (v && v.statementHtml) {
|
||||
box.innerHTML = v.statementHtml;
|
||||
wrap.hidden = false;
|
||||
} else {
|
||||
box.innerHTML = '';
|
||||
wrap.hidden = true;
|
||||
}
|
||||
}
|
||||
|
||||
/* ---------- Таймеры защиты в ячейках ---------- */
|
||||
|
||||
Reference in New Issue
Block a user