mirror of
https://git.v0id.ovh/n3wt-innov/n3wt-school.git
synced 2026-01-29 07:53:23 +00:00
96 lines
2.8 KiB
JavaScript
96 lines
2.8 KiB
JavaScript
import { createContext, useContext, useState } from 'react';
|
|
import { mockEvents, mockSchedules } from '@/data/mockData';
|
|
|
|
/**
|
|
* Contexte de planification pour gérer l'état global du planning
|
|
* Fournit des fonctionnalités pour :
|
|
* - Gestion des événements (ajout, modification, suppression)
|
|
* - Gestion des emplois du temps (ajout, modification, suppression)
|
|
* - Gestion de la visibilité des emplois du temps
|
|
* - Contrôle de la vue du calendrier (date courante, type de vue)
|
|
* - Stockage de l'état des événements et des emplois du temps
|
|
*/
|
|
const PlanningContext = createContext();
|
|
|
|
export function PlanningProvider({ children }) {
|
|
// const [events, setEvents] = useState([]);
|
|
// const [schedules, setSchedules] = useState([]);
|
|
// const [selectedSchedule, setSelectedSchedule] = useState(null);
|
|
const [events, setEvents] = useState(mockEvents);
|
|
const [schedules, setSchedules] = useState(mockSchedules);
|
|
const [selectedSchedule, setSelectedSchedule] = useState(mockSchedules[0].id);
|
|
const [currentDate, setCurrentDate] = useState(new Date());
|
|
const [viewType, setViewType] = useState('week'); // Changer 'month' en 'week'
|
|
const [hiddenSchedules, setHiddenSchedules] = useState([]);
|
|
|
|
const addEvent = (newEvent) => {
|
|
setEvents((prevEvents) => [...prevEvents, newEvent]);
|
|
};
|
|
|
|
const updateEvent = (id, updatedEvent) => {
|
|
setEvents((prevEvents) =>
|
|
prevEvents.map((event) => (event.id === id ? updatedEvent : event))
|
|
);
|
|
};
|
|
|
|
const deleteEvent = (id) => {
|
|
setEvents((prevEvents) => prevEvents.filter((event) => event.id !== id));
|
|
};
|
|
|
|
const addSchedule = (newSchedule) => {
|
|
setSchedules((prevSchedules) => [...prevSchedules, newSchedule]);
|
|
};
|
|
|
|
const updateSchedule = (id, updatedSchedule) => {
|
|
setSchedules((prevSchedules) =>
|
|
prevSchedules.map((schedule) =>
|
|
schedule.id === id ? updatedSchedule : schedule
|
|
)
|
|
);
|
|
};
|
|
|
|
const deleteSchedule = (id) => {
|
|
setSchedules((prevSchedules) =>
|
|
prevSchedules.filter((schedule) => schedule.id !== id)
|
|
);
|
|
};
|
|
|
|
const toggleScheduleVisibility = (scheduleId) => {
|
|
setHiddenSchedules((prev) => {
|
|
const isHidden = prev.includes(scheduleId);
|
|
const newHiddenSchedules = isHidden
|
|
? prev.filter((id) => id !== scheduleId)
|
|
: [...prev, scheduleId];
|
|
return newHiddenSchedules;
|
|
});
|
|
};
|
|
|
|
const value = {
|
|
events,
|
|
setEvents,
|
|
schedules,
|
|
setSchedules,
|
|
selectedSchedule,
|
|
setSelectedSchedule,
|
|
addEvent,
|
|
updateEvent,
|
|
deleteEvent,
|
|
addSchedule,
|
|
updateSchedule,
|
|
deleteSchedule,
|
|
currentDate,
|
|
setCurrentDate,
|
|
viewType,
|
|
setViewType,
|
|
hiddenSchedules,
|
|
toggleScheduleVisibility
|
|
};
|
|
|
|
return (
|
|
<PlanningContext.Provider value={value}>
|
|
{children}
|
|
</PlanningContext.Provider>
|
|
);
|
|
}
|
|
|
|
export const usePlanning = () => useContext(PlanningContext); |