Fix: ocultar todas las secciones de tomas excepto las del examen seleccionado
Lógica anterior usaba sepToExam (vacío cuando labels son genéricos "Toma · X"). Nueva lógica: reúne TODOS los sep_ids de _mpAllGroups como allTomaSeps, luego muestra solo los del grupo que coincide con el examen seleccionado (vía _mpGetGroupsForExam). Si el examen no tiene grupos o no hay selección, todas las secciones de toma quedan ocultas. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
25ff224e5e
commit
393c226b7c
+19
-17
@@ -1288,36 +1288,38 @@ function _mpGetGroupsForExam(examName) {
|
||||
return result;
|
||||
}
|
||||
|
||||
// Visibilidad de secciones de tomas según examen seleccionado
|
||||
// (funciona aunque la BD no tenga condiciones, usando sep_id de _mpAllGroups)
|
||||
// Visibilidad de secciones de tomas según examen seleccionado.
|
||||
// Oculta TODOS los sep_ids de _mpAllGroups por defecto;
|
||||
// muestra solo los del grupo cuya clave coincide con el examen.
|
||||
function _mpApplyExamVisibility(selectedExam) {
|
||||
// Construir mapa sep_id → exam_name
|
||||
var sepToExam = {};
|
||||
// 1. Todos los sep_ids que son secciones de toma
|
||||
var allTomaSeps = {};
|
||||
for (var gk in _mpAllGroups) {
|
||||
var parts = gk.split('|').filter(Boolean);
|
||||
var isExamGrp = parts.some(function(p) { return _mpExamOptions.indexOf(p) !== -1; });
|
||||
if (isExamGrp) {
|
||||
_mpAllGroups[gk].forEach(function(sec) {
|
||||
if (sec.sep_id) sepToExam[sec.sep_id] = parts[0];
|
||||
});
|
||||
_mpAllGroups[gk].forEach(function(s) { if (s.sep_id) allTomaSeps[s.sep_id] = gk; });
|
||||
}
|
||||
if (!Object.keys(allTomaSeps).length) return;
|
||||
|
||||
// 2. Sep_ids del examen seleccionado
|
||||
var examSeps = {};
|
||||
if (selectedExam) {
|
||||
var groups = _mpGetGroupsForExam(selectedExam);
|
||||
for (var gk2 in groups) {
|
||||
groups[gk2].forEach(function(s) { if (s.sep_id) examSeps[s.sep_id] = true; });
|
||||
}
|
||||
}
|
||||
if (!Object.keys(sepToExam).length) return;
|
||||
|
||||
// Recorrer todos los elementos con data-campo-id dentro del doc-body
|
||||
// 3. Recorrer DOM y aplicar visibilidad
|
||||
var docBody = document.querySelector('.doc-body');
|
||||
if (!docBody) return;
|
||||
var inHidden = false;
|
||||
docBody.querySelectorAll('[data-campo-id]').forEach(function(el) {
|
||||
var cid = el.getAttribute('data-campo-id');
|
||||
if (el.classList.contains('esquema-sep')) {
|
||||
if (sepToExam[cid] !== undefined) {
|
||||
// Separador de toma: ocultar si no hay examen o si no coincide
|
||||
inHidden = (!selectedExam || sepToExam[cid] !== selectedExam);
|
||||
if (allTomaSeps[cid] !== undefined) {
|
||||
inHidden = !examSeps[cid]; // ocultar si no es del examen
|
||||
el.style.display = inHidden ? 'none' : '';
|
||||
} else {
|
||||
// Separador genérico (ej: Datos del paciente) — siempre visible
|
||||
inHidden = false;
|
||||
inHidden = false; // separador genérico — siempre visible
|
||||
el.style.display = '';
|
||||
}
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user