feat: planning events

This commit is contained in:
Luc SORIGNET
2025-03-02 15:35:56 +01:00
parent e3879f516b
commit c9b0f0d77a
21 changed files with 371 additions and 172 deletions

View File

@ -3,18 +3,18 @@ import { format } from 'date-fns';
import React from 'react';
export default function EventModal({ isOpen, onClose, eventData, setEventData }) {
const { addEvent, updateEvent, deleteEvent, schedules } = usePlanning();
const { addEvent, handleUpdateEvent, handleDeleteEvent, schedules } = usePlanning();
// S'assurer que scheduleId est défini lors du premier rendu
// S'assurer que planning est défini lors du premier rendu
React.useEffect(() => {
if (!eventData.scheduleId && schedules.length > 0) {
if (!eventData.planning && schedules.length > 0) {
setEventData(prev => ({
...prev,
scheduleId: schedules[0].id,
planning: schedules[0].id,
color: schedules[0].color
}));
}
}, [schedules, eventData.scheduleId]);
}, [schedules, eventData.planning]);
if (!isOpen) return null;
@ -39,24 +39,24 @@ export default function EventModal({ isOpen, onClose, eventData, setEventData })
const handleSubmit = (e) => {
e.preventDefault();
if (!eventData.scheduleId) {
if (!eventData.planning) {
alert('Veuillez sélectionner un planning');
return;
}
const selectedSchedule = schedules.find(s => s.id === eventData.scheduleId);
const selectedSchedule = schedules.find(s => s.id === eventData.planning);
if (eventData.id) {
updateEvent(eventData.id, {
handleUpdateEvent(eventData.id, {
...eventData,
scheduleId: eventData.scheduleId, // S'assurer que scheduleId est bien défini
planning: eventData.planning, // S'assurer que planning est bien défini
color: eventData.color || selectedSchedule?.color
});
} else {
addEvent({
...eventData,
id: `event-${Date.now()}`,
scheduleId: eventData.scheduleId, // S'assurer que scheduleId est bien défini
planning: eventData.planning, // S'assurer que planning est bien défini
color: eventData.color || selectedSchedule?.color
});
}
@ -65,7 +65,7 @@ export default function EventModal({ isOpen, onClose, eventData, setEventData })
const handleDelete = () => {
if (eventData.id && confirm('Êtes-vous sûr de vouloir supprimer cet événement ?')) {
deleteEvent(eventData.id);
handleDeleteEvent(eventData.id);
onClose();
}
};
@ -111,12 +111,12 @@ export default function EventModal({ isOpen, onClose, eventData, setEventData })
Planning
</label>
<select
value={eventData.scheduleId || schedules[0]?.id}
value={eventData.planning || schedules[0]?.id}
onChange={(e) => {
const selectedSchedule = schedules.find(s => s.id === e.target.value);
setEventData({
...eventData,
scheduleId: e.target.value,
planning: e.target.value,
color: selectedSchedule?.color || '#10b981'
});
}}
@ -138,7 +138,7 @@ export default function EventModal({ isOpen, onClose, eventData, setEventData })
</label>
<input
type="color"
value={eventData.color || schedules.find(s => s.id === eventData.scheduleId)?.color || '#10b981'}
value={eventData.color || schedules.find(s => s.id === eventData.planning)?.color || '#10b981'}
onChange={(e) => setEventData({ ...eventData, color: e.target.value })}
className="w-full h-10 p-1 rounded border"
/>