fix: checkbox _c8j2g16 usa name[] en HTML, no name exacto

El campo tipo examen es checkbox → HTML renderiza name="_c8j2g16[]".
Todos los querySelector y el listener comparaban name="_c8j2g16" exacto
→ nunca matcheaban → visibilidad de secciones y panel de config nunca
se activaban. Añade _mpGetExamName()/_mpSetExamChecked() que aceptan
ambas variantes y los usa en todos los puntos de uso.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Lizandro Guarnizo
2026-07-16 10:36:41 -05:00
co-authored by Claude Sonnet 4.6
parent 182dc01a77
commit 65b18facdb
+17 -8
View File
@@ -1334,11 +1334,22 @@ function _mpApplyExamVisibility(selectedExam) {
});
}
// Helper: leer examen seleccionado (funciona para radio name=_c8j2g16 y checkbox name=_c8j2g16[])
function _mpGetExamName() {
var el = document.querySelector('[name="_c8j2g16"]:checked,[name="_c8j2g16[]"]:checked');
return el ? el.value : null;
}
function _mpSetExamChecked(name) {
var esc = name.replace(/"/g, '\\"');
var el = document.querySelector('[name="_c8j2g16"][value="' + esc + '"],[name="_c8j2g16[]"][value="' + esc + '"]');
if (el) el.checked = true;
}
// Escuchar selección de tipo de examen
document.addEventListener('change', function(e) {
var el = e.target;
if (el.name !== '_c8j2g16') return;
var examName = (el.type === 'checkbox' && !el.checked) ? null : el.value;
if (el.name.replace(/\[\]$/, '') !== '_c8j2g16') return;
var examName = _mpGetExamName();
_mpApplyExamVisibility(examName);
// Panel de configuración solo en modo turnero y si aún no está configurado
if (!_mpModoTurnero || _mpTomasConfig !== null || !examName) return;
@@ -1349,8 +1360,7 @@ document.addEventListener('change', function(e) {
// Al cargar: aplicar visibilidad (sin examen = ocultar todo)
document.addEventListener('DOMContentLoaded', function() {
var radio = document.querySelector('[name="_c8j2g16"]:checked');
var examName = radio ? radio.value : null;
var examName = _mpGetExamName();
// Restaurar selección de examen tras el reload del panel de config
if (!examName) {
try {
@@ -1358,8 +1368,7 @@ document.addEventListener('DOMContentLoaded', function() {
if (saved) {
sessionStorage.removeItem('_mpExamRestore');
examName = saved;
var el = document.querySelector('[name="_c8j2g16"][value="' + saved.replace(/"/g, '\\"') + '"]');
if (el) el.checked = true;
_mpSetExamChecked(saved);
}
} catch(e) {}
}
@@ -1371,7 +1380,7 @@ document.addEventListener('DOMContentLoaded', function() {
// Botón "Usar todas"
document.getElementById('mp-cfg-todas').addEventListener('click', function() {
var examName = (document.querySelector('[name="_c8j2g16"]:checked') || {}).value || '';
var examName = _mpGetExamName() || '';
var cfg = {};
document.querySelectorAll('.mp-cfg-chk').forEach(function(chk) {
if (!cfg[chk.dataset.group]) cfg[chk.dataset.group] = [];
@@ -1387,7 +1396,7 @@ document.getElementById('mp-cfg-todas').addEventListener('click', function() {
// Botón "Iniciar protocolo"
document.getElementById('mp-cfg-iniciar').addEventListener('click', function() {
var examName = (document.querySelector('[name="_c8j2g16"]:checked') || {}).value || '';
var examName = _mpGetExamName() || '';
var byGroup = {};
document.querySelectorAll('.mp-cfg-chk').forEach(function(chk) {
if (!byGroup[chk.dataset.group]) byGroup[chk.dataset.group] = [];