feat: add support for TABLE_AUTO question type with table input rendering and auto-grading

This commit is contained in:
Dmitry Belan
2026-09-19 12:19:02 +03:00
parent 9ee1788692
commit 46319def76
9 changed files with 157 additions and 19 deletions
+13 -11
View File
@@ -2,19 +2,21 @@ document.addEventListener('DOMContentLoaded', function() {
function toggleCorrectAnswer(row) {
const typeSelect = row.querySelector('select[name$="-question_type"]');
const correctAnswerInput = row.querySelector('[name$="-correct_answer"]');
const tableRowsInput = row.querySelector('[name$="-table_rows"]');
if (typeSelect && correctAnswerInput) {
let wrapper = row.querySelector('.field-correct_answer');
if (!wrapper) {
// Find a suitable parent div to hide. Unfold puts fields in divs, often with mb-4 or similar.
// We go up to the closest field group container.
wrapper = correctAnswerInput.closest('.form-row') || correctAnswerInput.parentElement.parentElement;
if (typeSelect) {
if (correctAnswerInput) {
let wrapper = row.querySelector('.field-correct_answer');
if (!wrapper) wrapper = correctAnswerInput.closest('.form-row') || correctAnswerInput.parentElement.parentElement;
if (wrapper) {
wrapper.style.display = typeSelect.value === 'FILE_MANUAL' ? 'none' : '';
}
}
if (wrapper) {
if (typeSelect.value === 'FILE_MANUAL') {
wrapper.style.display = 'none';
} else {
wrapper.style.display = '';
if (tableRowsInput) {
let wrapper = row.querySelector('.field-table_rows');
if (!wrapper) wrapper = tableRowsInput.closest('.form-row') || tableRowsInput.parentElement.parentElement;
if (wrapper) {
wrapper.style.display = typeSelect.value === 'TABLE_AUTO' ? '' : 'none';
}
}
}