Mejoras F-LAB-28 tomas prolongadas: bugfixes + UX + datos

- guardar_toma.php: reconoce firma campo_id_svg (compat. registros históricos)
- get_consentimientos.php: mismo fix para conteo tomas_firmadas
- ver_formulario_enviado.php: $_mpMap incluye hora fija (Cortisol 3pm/4pm),
  agrupa por condición de separador para no mezclar Glicemia/Cortisol,
  muestra resumen de tomas al completar antes de cerrar el modal
- lugar.php: banner rojo + beep cuando el countdown de una toma llega a cero,
  resetea alerta al cerrar el modal; función _playBeepLugar() compartida

DB Form 15: +10 campos (firma_profesional Minuto 60 Glicemia + campo
Resultado numérico en cada toma Glicemia y Cortisol)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Lizandro Guarnizo
2026-07-09 20:26:12 -05:00
co-authored by Claude Sonnet 4.6
parent 848dd8e4d0
commit fdc04d615c
4 changed files with 169 additions and 59 deletions
+2 -1
View File
@@ -118,7 +118,8 @@ foreach ($consentimientos as &$c) {
$tomasTotal = count($relevantIds);
foreach ($relevantIds as $fid) {
if (!empty($dr[$fid]) && strlen($dr[$fid]) > 10) $tomasFirm++;
if ((!empty($dr[$fid]) && strlen($dr[$fid]) > 10)
|| (!empty($dr[$fid.'_svg']) && strlen($dr[$fid.'_svg']) > 10)) $tomasFirm++;
}
}
+5 -3
View File
@@ -102,9 +102,11 @@ foreach ($esquema as $campo) {
}
// ── Determinar estado y siguiente_toma_at ────────────────────
$firmados = array_filter($firmasCampos, fn($f) => isset($datosMerge[$f['id']]) && strlen($datosMerge[$f['id']]) > 10);
$pendientes = array_filter($firmasCampos, fn($f) => !isset($datosMerge[$f['id']]) || strlen($datosMerge[$f['id']]) <= 10);
$pendientes = array_values($pendientes);
// Acepta firma guardada con clave campo_id O campo_id_svg (compatibilidad registros históricos)
$hasFirma = fn($f) => (isset($datosMerge[$f['id']]) && strlen($datosMerge[$f['id']]) > 10)
|| (isset($datosMerge[$f['id'].'_svg']) && strlen($datosMerge[$f['id'].'_svg']) > 10);
$firmados = array_filter($firmasCampos, $hasFirma);
$pendientes = array_values(array_filter($firmasCampos, fn($f) => !$hasFirma($f)));
$todasFirmadas = empty($pendientes);
$siguienteToma = null;