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) {
|
for (var gk in _mpAllGroups) {
|
||||||
_mpAllGroups[gk].forEach(function(s) { if (s.sep_id) allTomaSeps[s.sep_id] = gk; });
|
_mpAllGroups[gk].forEach(function(s) { if (s.sep_id) allTomaSeps[s.sep_id] = gk; });
|
||||||
}
|
}
|
||||||
console.log('[tomas] _mpAllGroups keys:', Object.keys(_mpAllGroups));
|
if (!Object.keys(allTomaSeps).length) return;
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 2. Sep_ids del examen seleccionado
|
// 2. Sep_ids del examen seleccionado
|
||||||
var examSeps = {};
|
var examSeps = {};
|
||||||
if (selectedExam) {
|
if (selectedExam) {
|
||||||
var groups = _mpGetGroupsForExam(selectedExam);
|
var groups = _mpGetGroupsForExam(selectedExam);
|
||||||
console.log('[tomas] groups for', selectedExam, ':', Object.keys(groups));
|
|
||||||
for (var gk2 in groups) {
|
for (var gk2 in groups) {
|
||||||
groups[gk2].forEach(function(s) { if (s.sep_id) examSeps[s.sep_id] = true; });
|
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
|
// 3. Recorrer hijos directos del contenedor de campos (.campos-grid)
|
||||||
// (no querySelectorAll — así capturamos section-title y otros sin data-campo-id)
|
var container = document.querySelector('.campos-grid') || document.querySelector('.doc-body');
|
||||||
var docBody = document.querySelector('.doc-body');
|
if (!container) return;
|
||||||
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) : [];
|
|
||||||
var inHidden = false;
|
var inHidden = false;
|
||||||
var hiddenCount = 0;
|
Array.from(container.children).forEach(function(child) {
|
||||||
childList.forEach(function(child) {
|
|
||||||
if (child.classList.contains('esquema-sep')) {
|
if (child.classList.contains('esquema-sep')) {
|
||||||
var cid = child.getAttribute('data-campo-id') || '';
|
var cid = child.getAttribute('data-campo-id') || '';
|
||||||
if (allTomaSeps[cid] !== undefined) {
|
inHidden = allTomaSeps[cid] !== undefined ? !examSeps[cid] : false;
|
||||||
inHidden = !examSeps[cid];
|
|
||||||
} else {
|
|
||||||
inHidden = false; // separador genérico — siempre visible
|
|
||||||
}
|
|
||||||
child.style.display = inHidden ? 'none' : '';
|
child.style.display = inHidden ? 'none' : '';
|
||||||
if (inHidden) hiddenCount++;
|
|
||||||
} else {
|
} else {
|
||||||
child.style.display = inHidden ? 'none' : '';
|
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
|
// Escuchar selección de tipo de examen
|
||||||
document.addEventListener('change', function(e) {
|
document.addEventListener('change', function(e) {
|
||||||
if (!_mpModoTurnero) return;
|
if (!_mpModoTurnero) return;
|
||||||
var el = e.target;
|
var el = e.target;
|
||||||
if (el.name !== '_c8j2g16') return;
|
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;
|
var examName = (el.type === 'checkbox' && !el.checked) ? null : el.value;
|
||||||
_mpApplyExamVisibility(examName);
|
_mpApplyExamVisibility(examName);
|
||||||
if (_mpTomasConfig !== null) return; // ya configurado, no mostrar panel
|
if (_mpTomasConfig !== null) return; // ya configurado, no mostrar panel
|
||||||
|
|||||||
Reference in New Issue
Block a user