Add empleado, borrado del seeder, cambios esteticos y middleware.
This commit is contained in:
+55
-37
@@ -45,43 +45,53 @@ document.addEventListener('DOMContentLoaded', function () {
|
||||
window.location.href = `/agenda/dia/${fecha}`
|
||||
},
|
||||
*/
|
||||
|
||||
eventClick: function (info) {
|
||||
const evento = info.event;
|
||||
const modal = document.getElementById("eventModal");
|
||||
if (!modal) return;
|
||||
|
||||
const evento = info.event
|
||||
modal.classList.remove("hidden");
|
||||
document.body.style.overflow = "hidden";
|
||||
|
||||
const modal = document.getElementById("eventModal")
|
||||
if (!modal) return
|
||||
// Llenar campos dinámicos
|
||||
document.getElementById("modalClientName").innerText = evento.extendedProps.client_name ?? 'Sin asignar';
|
||||
document.getElementById("modalBikeModel").innerText = evento.extendedProps.bike_model ?? 'Sin modelo';
|
||||
|
||||
modal.classList.remove("hidden")
|
||||
|
||||
const statusMap = {
|
||||
pending: 'Pendiente',
|
||||
confirmed: 'Confirmado',
|
||||
in_progress: 'En progreso',
|
||||
ready: 'Listo',
|
||||
delivered: 'Entregado'
|
||||
}
|
||||
|
||||
const estado = statusMap[evento.extendedProps.status] ?? 'desconocido'
|
||||
|
||||
document.getElementById("modalTitle").innerText =
|
||||
evento.extendedProps.description + " - " + estado
|
||||
|
||||
const fecha = evento.start
|
||||
|
||||
const hora = fecha.toLocaleTimeString("es-AR", {
|
||||
hour: "2-digit",
|
||||
minute: "2-digit",
|
||||
// Formatear Fecha y Hora
|
||||
const fecha = evento.start;
|
||||
const dateStr = fecha.toLocaleDateString("es-AR", {
|
||||
weekday: 'long',
|
||||
day: 'numeric',
|
||||
month: 'long',
|
||||
year: 'numeric'
|
||||
});
|
||||
const timeStr = fecha.toLocaleTimeString("es-AR", {
|
||||
hour: '2-digit',
|
||||
minute: '2-digit',
|
||||
hour12: false
|
||||
})
|
||||
});
|
||||
const formattedDateTime = dateStr.charAt(0).toUpperCase() + dateStr.slice(1) + " a las " + timeStr;
|
||||
document.getElementById("modalDateTime").innerText = formattedDateTime;
|
||||
|
||||
document.getElementById("modalDate").innerText =
|
||||
"Hora: " + hora
|
||||
const url = window.appointmentShowTemplate.replace(':id', evento.id);
|
||||
document.getElementById("viewEventBtn").href = url;
|
||||
|
||||
const url = window.appointmentShowTemplate.replace(':id', evento.id)
|
||||
|
||||
document.getElementById("viewEventBtn").href = url
|
||||
// Mapear Badge de Estado y clases correspondientes (estilo pastel idéntico a pendiente)
|
||||
const statusMap = {
|
||||
pending: { label: 'Pendiente', classes: ['bg-red-100', 'text-red-800', 'border-red-200', 'dark:bg-red-900/30', 'dark:text-red-400', 'dark:border-red-800'] },
|
||||
confirmed: { label: 'Confirmado', classes: ['bg-blue-100', 'text-blue-800', 'border-blue-200', 'dark:bg-blue-900/30', 'dark:text-blue-400', 'dark:border-blue-800'] },
|
||||
in_progress: { label: 'En progreso', classes: ['bg-orange-100', 'text-orange-800', 'border-orange-200', 'dark:bg-orange-950/30', 'dark:text-orange-400', 'dark:border-orange-800'] },
|
||||
ready: { label: 'Listo', classes: ['bg-green-100', 'text-green-800', 'border-green-200', 'dark:bg-green-900/30', 'dark:text-green-450', 'dark:border-green-800'] },
|
||||
delivered: { label: 'Entregado', classes: ['bg-neutral-100', 'text-neutral-800', 'border-neutral-200', 'dark:bg-neutral-800', 'dark:text-neutral-400', 'dark:border-neutral-700'] }
|
||||
};
|
||||
const statusObj = statusMap[evento.extendedProps.status] || { label: 'Desconocido', classes: ['bg-neutral-100', 'text-neutral-800', 'border-neutral-200'] };
|
||||
|
||||
const badge = document.getElementById("modalStatusBadge");
|
||||
if (badge) {
|
||||
badge.innerText = statusObj.label;
|
||||
badge.className = "px-2.5 py-0.5 text-xs font-black rounded-full uppercase tracking-wider border";
|
||||
statusObj.classes.forEach(c => badge.classList.add(c));
|
||||
}
|
||||
},
|
||||
|
||||
events: window.appointments ?? [],
|
||||
@@ -109,14 +119,22 @@ document.addEventListener('DOMContentLoaded', function () {
|
||||
|
||||
calendar.render()
|
||||
|
||||
const closeBtn = document.getElementById("closeModal")
|
||||
// Manejo del cierre del modal con múltiples triggers (Cerrar, Botón X y Click afuera)
|
||||
const closeModalElements = [
|
||||
document.getElementById("closeModal"),
|
||||
document.getElementById("closeModalCross"),
|
||||
document.getElementById("eventModal")
|
||||
]
|
||||
|
||||
if (closeBtn) {
|
||||
closeBtn.addEventListener("click", function () {
|
||||
document.getElementById("eventModal").classList.add("hidden")
|
||||
document.body.style.overflow = "auto"
|
||||
})
|
||||
}
|
||||
closeModalElements.forEach(el => {
|
||||
if (el) {
|
||||
el.addEventListener("click", function (e) {
|
||||
if (el.id === "eventModal" && e.target !== el) return;
|
||||
document.getElementById("eventModal").classList.add("hidden")
|
||||
document.body.style.overflow = "auto"
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user