fix: secciones de toma se renderizan en orden cronológico
El render iteraba $esquema en orden original del JSON — Otro siempre quedaba de último. Ahora se re-ordena $esquema agrupando las secciones de toma por su minuto (usando $_mpSepOrder construido del usort ya existente) antes de entrar al foreach de render. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
2d125f9533
commit
815f136dca
@@ -302,6 +302,9 @@ if ($modoTurnero && $embebido && $_soloFirmaPro) {
|
||||
}
|
||||
// Ordenar por tiempo antes de agrupar para garantizar orden cronológico
|
||||
usort($_mpSecs, fn($a, $b) => $a['min'] <=> $b['min']);
|
||||
// Mapa sep_id → minuto para re-ordenar secciones en el render
|
||||
$_mpSepOrder = [];
|
||||
foreach ($_mpSecs as $_s) { $_mpSepOrder[$_s['sep_id']] = $_s['min']; }
|
||||
$_mpGroups = [];
|
||||
foreach ($_mpSecs as $_s) { $_mpGroups[$_s['tipo']][] = $_s; }
|
||||
$_mpGroupsFull = $_mpGroups;
|
||||
@@ -892,6 +895,26 @@ function _addExamWizardHtml(string $cid): string {
|
||||
$_firmaGlobalPacienteUsada = false; // la firma global solo va al primer campo firma
|
||||
|
||||
if ($compact): ?><div class="campos-grid"><?php endif;
|
||||
// Re-ordenar $esquema para que las secciones de toma aparezcan en orden cronológico
|
||||
if (!empty($_mpSepOrder)) {
|
||||
$__secs = []; $__cur = ['is_toma' => false, 'min' => null, 'campos' => []];
|
||||
foreach ($esquema as $__c) {
|
||||
if (($__c['tipo'] ?? '') === 'separador') {
|
||||
if (!empty($__cur['campos'])) $__secs[] = $__cur;
|
||||
$__it = isset($_mpSepOrder[$__c['id'] ?? '']);
|
||||
$__cur = ['is_toma' => $__it, 'min' => $__it ? $_mpSepOrder[$__c['id']] : null, 'campos' => [$__c]];
|
||||
} else {
|
||||
$__cur['campos'][] = $__c;
|
||||
}
|
||||
}
|
||||
if (!empty($__cur['campos'])) $__secs[] = $__cur;
|
||||
$__tomaIdxs = []; $__tomaList = [];
|
||||
foreach ($__secs as $i => $s) { if ($s['is_toma']) { $__tomaIdxs[] = $i; $__tomaList[] = $s; } }
|
||||
usort($__tomaList, fn($a, $b) => $a['min'] <=> $b['min']);
|
||||
foreach ($__tomaIdxs as $j => $i) { $__secs[$i] = $__tomaList[$j]; }
|
||||
$esquema = array_merge(...array_column($__secs, 'campos'));
|
||||
}
|
||||
|
||||
$_saltarSeccion = false;
|
||||
$_mpSkipSec = false; // toma excluida por _tomas_config; siempre ocultar sin importar modoEditar
|
||||
foreach ($esquema as $campo):
|
||||
|
||||
Reference in New Issue
Block a user