{/* En-tête du calendrier */}
{currentDate.toLocaleDateString('fr-FR', { month: 'long', year: 'numeric' })}
{loading ? (
Chargement...
) : (
<>
{/* Grille du calendrier avec drag and drop */}
{/* En-têtes des jours */}
{days.map((day) => (
{day}
))}
{/* Jours du calendrier */}
{calendarDays.map((date, index) => {
if (!date) {
return
;
}
const trajetsDuJour = getTrajetsForDate(date);
const isToday =
date.getDate() === new Date().getDate() &&
date.getMonth() === new Date().getMonth() &&
date.getFullYear() === new Date().getFullYear();
const isSelected =
selectedDate &&
date.getDate() === selectedDate.getDate() &&
date.getMonth() === selectedDate.getMonth() &&
date.getFullYear() === selectedDate.getFullYear();
return (
{date.getDate()}
{trajetsDuJour.length > 0 && (
{trajetsDuJour.slice(0, 3).map((trajet) => (
))}
{trajetsDuJour.length > 3 && (
+{trajetsDuJour.length - 3}
)}
)}
);
})}
{/* Overlay pour l'élément en cours de drag */}
{draggedTrajet ? (
{draggedTrajet.chauffeur
? `${draggedTrajet.chauffeur.prenom.charAt(0)}${draggedTrajet.chauffeur.nom.charAt(0)}`
: '?'}
•
{formatTime(draggedTrajet.date)}
) : null}
{/* Détails des trajets du jour sélectionné */}
{selectedDate && selectedTrajets.length > 0 && (
Trajets du {formatDate(selectedDate)}
{selectedTrajets.map((trajet) => {
const getStatutColor = (statut: string) => {
switch (statut) {
case 'Validé':
return 'bg-purple-100 text-purple-700 border-purple-200';
case 'Terminé':
return 'bg-green-100 text-green-700 border-green-200';
case 'En cours':
return 'bg-blue-100 text-blue-700 border-blue-200';
case 'Annulé':
return 'bg-red-100 text-red-700 border-red-200';
default:
return 'bg-gray-100 text-gray-700 border-gray-200';
}
};
return (
);
})}
)}
{selectedDate && selectedTrajets.length === 0 && (
Aucun trajet prévu pour le {formatDate(selectedDate)}
)}
>
)}
{/* Modal de détails du trajet */}
{selectedTrajet && (
setSelectedTrajet(null)}
onUpdate={() => {
fetchTrajets();
setSelectedTrajet(null);
}}
/>
)}
);
}