Fix: usar .campos-grid como contenedor real de campos para visibilidad de tomas

Los campos están en div.campos-grid (hijo de .doc-body), no directamente en .doc-body.
Elimina todos los console.log de debug y simplifica _mpApplyExamVisibility.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Lizandro Guarnizo
2026-07-10 12:06:38 -05:00
co-authored by Claude Sonnet 4.6
parent ee1cd684a8
commit 8ec121e4e0
+6 -47
View File
@@ -1297,78 +1297,37 @@ function _mpApplyExamVisibility(selectedExam) {
for (var gk in _mpAllGroups) {
_mpAllGroups[gk].forEach(function(s) { if (s.sep_id) allTomaSeps[s.sep_id] = gk; });
}
console.log('[tomas] _mpAllGroups keys:', Object.keys(_mpAllGroups));
console.log('[tomas] allTomaSeps:', allTomaSeps);
console.log('[tomas] selectedExam:', selectedExam);
if (!Object.keys(allTomaSeps).length) {
console.warn('[tomas] Sin sep_ids en _mpAllGroups — no se aplica visibilidad');
return;
}
if (!Object.keys(allTomaSeps).length) return;
// 2. Sep_ids del examen seleccionado
var examSeps = {};
if (selectedExam) {
var groups = _mpGetGroupsForExam(selectedExam);
console.log('[tomas] groups for', selectedExam, ':', Object.keys(groups));
for (var gk2 in groups) {
groups[gk2].forEach(function(s) { if (s.sep_id) examSeps[s.sep_id] = true; });
}
}
console.log('[tomas] examSeps:', examSeps);
// 3. Recorrer hijos directos de doc-body en orden
// (no querySelectorAll — así capturamos section-title y otros sin data-campo-id)
var docBody = document.querySelector('.doc-body');
if (!docBody) { console.warn('[tomas] .doc-body no encontrado'); return; }
// Encontrar el contenedor real donde están los campos
var fieldContainer = docBody;
var children = Array.from(docBody.children);
var sepsInChildren = children.filter(function(c){return c.classList.contains('esquema-sep');}).length;
console.log('[tomas] docBody.children.length:', children.length, '| seps en children:', sepsInChildren);
if (sepsInChildren === 0 && children.length > 0) {
// Los campos están anidados — buscar el contenedor que tenga esquema-sep
var found = null;
children.forEach(function(child) {
if (!found && child.querySelector('.esquema-sep')) found = child;
});
if (found) {
fieldContainer = found;
console.log('[tomas] usando contenedor anidado:', found.tagName, found.className);
} else {
// Intentar con querySelectorAll en todo el doc-body
console.warn('[tomas] no se encontró .esquema-sep en hijos directos, usando querySelectorAll fallback');
fieldContainer = null;
}
}
var childList = fieldContainer ? Array.from(fieldContainer.children) : [];
// 3. Recorrer hijos directos del contenedor de campos (.campos-grid)
var container = document.querySelector('.campos-grid') || document.querySelector('.doc-body');
if (!container) return;
var inHidden = false;
var hiddenCount = 0;
childList.forEach(function(child) {
Array.from(container.children).forEach(function(child) {
if (child.classList.contains('esquema-sep')) {
var cid = child.getAttribute('data-campo-id') || '';
if (allTomaSeps[cid] !== undefined) {
inHidden = !examSeps[cid];
} else {
inHidden = false; // separador genérico — siempre visible
}
inHidden = allTomaSeps[cid] !== undefined ? !examSeps[cid] : false;
child.style.display = inHidden ? 'none' : '';
if (inHidden) hiddenCount++;
} else {
child.style.display = inHidden ? 'none' : '';
if (inHidden) hiddenCount++;
}
});
console.log('[tomas] elementos ocultados:', hiddenCount);
}
// Escuchar selección de tipo de examen
// Escuchar selección de tipo de examen
document.addEventListener('change', function(e) {
if (!_mpModoTurnero) return;
var el = e.target;
if (el.name !== '_c8j2g16') return;
console.log('[tomas] change _c8j2g16 type:', el.type, 'value:', el.value, 'checked:', el.checked);
var examName = (el.type === 'checkbox' && !el.checked) ? null : el.value;
_mpApplyExamVisibility(examName);
if (_mpTomasConfig !== null) return; // ya configurado, no mostrar panel