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:
co-authored by
Claude Sonnet 4.6
parent
ee1cd684a8
commit
8ec121e4e0
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user