From fb4e8e14d6cd2d9c51a53c7f3af8df33ea161c0d Mon Sep 17 00:00:00 2001 From: marsalva Date: Sun, 22 Feb 2026 12:19:37 +0000 Subject: [PATCH] Actualizar agenda.html --- agenda.html | 84 +++++++++++++++++++++++++++++++++++------------------ 1 file changed, 55 insertions(+), 29 deletions(-) diff --git a/agenda.html b/agenda.html index a6c3d05..ce667e1 100644 --- a/agenda.html +++ b/agenda.html @@ -370,45 +370,71 @@ } catch(e) { alert("Error de conexión"); } } - async function loadActiveBlocks() { - const container = document.getElementById('blocksList'); + async function loadActiveBlocks() { + const activeContainer = document.getElementById('blocksList'); + const pastContainer = document.getElementById('pastBlocksList'); + try { const res = await fetch(`${API_URL}/agenda/blocks`, { headers: { "Authorization": `Bearer ${localStorage.getItem("token")}` } }); const data = await res.json(); - if (!data.ok || data.blocks.length === 0) { - container.innerHTML = `

No hay bloqueos activos a futuro.

`; - return; + if (!data.ok) throw new Error("Error fetching blocks"); + + // Sacamos la fecha de hoy (YYYY-MM-DD) para comparar + const todayStr = new Date().toISOString().split('T')[0]; + + // El servidor los manda de más reciente a más antiguo (DESC). + // Los activos los queremos al revés (ASC: el próximo primero) + const activeBlocks = data.blocks.filter(b => b.date >= todayStr).reverse(); + // Los pasados los dejamos en DESC (el más reciente caducado arriba) + const pastBlocks = data.blocks.filter(b => b.date < todayStr); + + // Pintar Activos + if (activeBlocks.length === 0) { + activeContainer.innerHTML = `

No hay bloqueos activos a futuro.

`; + } else { + activeContainer.innerHTML = activeBlocks.map(b => buildBlockHtml(b, false)).join(''); } - container.innerHTML = data.blocks.map(b => { - // Etiqueta visual si es de un gremio concreto o total - const badge = b.guild_name - ? `Solo ${b.guild_name}` - : `Bloqueo Total`; + // Pintar Caducados + if (pastBlocks.length === 0) { + pastContainer.innerHTML = `

No hay bloqueos antiguos.

`; + } else { + pastContainer.innerHTML = pastBlocks.map(b => buildBlockHtml(b, true)).join(''); + } - return ` -
-
-
-

- ${b.worker_name} -

- ${badge} -
-

${b.date} | ${b.time} (${b.duration} min)

-

${b.reason}

-
- -
- `; - }).join(''); lucide.createIcons(); - } catch(e) { container.innerHTML = "Error"; } + } catch(e) { + activeContainer.innerHTML = "Error cargando"; + pastContainer.innerHTML = "Error cargando"; + } + } + + // Helper visual para pintar la tarjeta según sea activa o caducada + function buildBlockHtml(b, isPast) { + const badge = b.guild_name + ? `Solo ${b.guild_name}` + : `Bloqueo Total`; + + return ` +
+
+
+

+ ${b.worker_name} +

+ ${badge} +
+

${b.date} | ${b.time} (${b.duration} min)

+

${b.reason || 'Sin motivo especificado'}

+
+ +
+ `; } async function deleteBlock(id) {