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}
-+ ${b.worker_name} +
+ ${badge} +${b.date} | ${b.time} (${b.duration} min)
+${b.reason || 'Sin motivo especificado'}
+