Fix: preservar todos los exámenes seleccionados al configurar tiempos

Al guardar config de un examen se sobreescribía _c8j2g16 con solo ese examen,
perdiendo los demás en el reload. Ahora se envía exam_types (array completo),
se guarda como array en datos_respuestas y sessionStorage restaura todos los
checkboxes marcados al recargar.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Lizandro Guarnizo
2026-07-27 23:48:45 -05:00
co-authored by Claude Sonnet 4.6
parent b13cc3f8ea
commit 0ea411ce62
2 changed files with 19 additions and 14 deletions
+12 -13
View File
@@ -1392,14 +1392,15 @@ var _mpOtroHora = <?= json_encode($datosCliente['_otro_hora'] ?? null, JSON_U
function _mpGuardarConfig(config, examType, onOk, onErr, extra) {
var base = window.location.href.split('/ver_formulario_enviado.php')[0];
var payload = Object.assign({ token: _mpCfgToken, tomas_config: config, exam_type: examType }, extra || {});
var allExams = Array.from(document.querySelectorAll('[name="_c8j2g16[]"]:checked,[name="_c8j2g16"]:checked')).map(function(el){ return el.value; });
var payload = Object.assign({ token: _mpCfgToken, tomas_config: config, exam_type: examType, exam_types: allExams }, extra || {});
fetch(base + '/modules/turnero/api/configurar_tomas.php', {
method: 'POST', headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(payload)
})
.then(function(r) { return r.json(); })
.then(function(d) {
if (d.ok) { try { sessionStorage.setItem('_mpExamRestore', examType || ''); } catch(e) {} onOk(); }
if (d.ok) { try { sessionStorage.setItem('_mpExamRestore', allExams.join('||') || examType || ''); } catch(e) {} onOk(); }
else onErr(d.error || 'Error desconocido');
})
.catch(function() { onErr('Error de conexión.'); });
@@ -1611,17 +1612,15 @@ document.addEventListener('click', function(e) {
// Al cargar: aplicar visibilidad y renderizar badges
document.addEventListener('DOMContentLoaded', function() {
var examName = _mpGetExamName();
// Restaurar selección de examen tras el reload del panel de config
if (!examName) {
try {
var saved = sessionStorage.getItem('_mpExamRestore');
if (saved) {
sessionStorage.removeItem('_mpExamRestore');
examName = saved;
_mpSetExamChecked(saved);
}
} catch(e) {}
}
// Restaurar selección de examen(es) tras el reload del panel de config
try {
var saved = sessionStorage.getItem('_mpExamRestore');
if (saved) {
sessionStorage.removeItem('_mpExamRestore');
saved.split('||').filter(Boolean).forEach(function(n) { _mpSetExamChecked(n); });
if (!examName) examName = saved.split('||').filter(Boolean)[0] || '';
}
} catch(e) {}
_mpApplyExamVisibility(examName);
if (_mpModoTurnero) {
_mpRenderBadges();