fix: application des recommandations linter es pour générer un build de prod

This commit is contained in:
Luc SORIGNET
2025-02-15 13:02:16 +01:00
parent 9716373fa2
commit d1aa8b54fb
23 changed files with 131 additions and 91 deletions

View File

@ -7,7 +7,8 @@ import SelectChoice from '@/components/SelectChoice';
import TeacherItem from '@/components/Structure/Configuration/TeacherItem';
import MultiSelect from '@/components/MultiSelect';
import LevelLabel from '@/components/CustomLabels/LevelLabel';
import { DndProvider, HTML5Backend, useDrop } from 'react-dnd';
import { DndProvider, useDrop } from 'react-dnd';
import { HTML5Backend } from 'react-dnd-html5-backend';
import { ESTABLISHMENT_ID } from '@/utils/Url';
const ItemTypes = {
@ -17,16 +18,13 @@ const ItemTypes = {
const TeachersDropZone = ({ classe, handleTeachersChange, teachers, isEditing }) => {
const [localTeachers, setLocalTeachers] = useState(classe.teachers_details || []);
useEffect(() => {
}, [teachers]);
useEffect(() => {
setLocalTeachers(classe.teachers_details || []);
}, [classe.teachers_details]);
useEffect(() => {
handleTeachersChange(localTeachers.map(teacher => teacher.id));
}, [localTeachers]);
}, [handleTeachersChange, localTeachers]);
const [{ isOver, canDrop }, drop] = useDrop({
accept: ItemTypes.TEACHER,
@ -105,20 +103,20 @@ const ClassesSection = ({ classes, setClasses, teachers, handleCreate, handleEdi
{ id: 3, name: 'MS', age: 4 },
{ id: 4, name: 'GS', age: 5 },
];
const niveauxSecondCycle = [
{ id: 5, name: 'CP', age: 6 },
{ id: 6, name: 'CE1', age: 7 },
{ id: 7, name: 'CE2', age: 8 },
];
const niveauxTroisiemeCycle = [
{ id: 8, name: 'CM1', age: 9 },
{ id: 9, name: 'CM2', age: 10 },
];
const allNiveaux = [...niveauxPremierCycle, ...niveauxSecondCycle, ...niveauxTroisiemeCycle];
const getNiveauxLabels = (levels) => {
return levels.map(niveauId => {
const niveau = allNiveaux.find(n => n.id === niveauId);
@ -131,10 +129,10 @@ const ClassesSection = ({ classes, setClasses, teachers, handleCreate, handleEdi
const currentDate = new Date();
const currentYear = currentDate.getFullYear();
const currentMonth = currentDate.getMonth() + 1; // Les mois sont indexés à partir de 0
// Si nous sommes avant septembre, l'année scolaire en cours a commencé l'année précédente
const startYear = currentMonth >= 9 ? currentYear : currentYear - 1;
const choices = [];
for (let i = 0; i < 3; i++) {
const year = startYear + i;
@ -232,7 +230,7 @@ const ClassesSection = ({ classes, setClasses, teachers, handleCreate, handleEdi
const handleMultiSelectChange = (selectedOptions) => {
const levels = selectedOptions.map(option => option.id);
if (editingClass) {
setFormData((prevData) => ({
...prevData,
@ -348,7 +346,7 @@ const ClassesSection = ({ classes, setClasses, teachers, handleCreate, handleEdi
const levelLabels = Array.isArray(classe.levels) ? getNiveauxLabels(classe.levels) : [];
return (
<div className="flex flex-wrap justify-center items-center space-x-2">
{levelLabels.length > 0
{levelLabels.length > 0
? levelLabels.map((label, index) => (
<LevelLabel key={index} label={label} index={index} />
))

View File

@ -27,7 +27,7 @@ const SpecialitiesDropZone = ({ teacher, handleSpecialitiesChange, specialities,
useEffect(() => {
handleSpecialitiesChange(localSpecialities.map(speciality => speciality.id));
}, [localSpecialities]);
}, [localSpecialities,handleSpecialitiesChange]);
const [{ isOver, canDrop }, drop] = useDrop({
accept: ItemTypes.SPECIALITY,

View File

@ -21,7 +21,7 @@ const PlanningClassView = ({ schedule, onDrop, selectedLevel, handleUpdatePlanni
if (schedule?.emploiDuTemps) {
setCurrentPeriod(determineInitialPeriod(schedule.emploiDuTemps));
}
}, [schedule]);
}, [schedule, determineInitialPeriod]);
if (!schedule || !schedule.emploiDuTemps) {
return (
@ -62,7 +62,7 @@ const PlanningClassView = ({ schedule, onDrop, selectedLevel, handleUpdatePlanni
const [eventHour, eventMinute] = event.heure.split(':').map(Number);
const eventStartTime = eventHour + eventMinute / 60;
const eventEndTime = eventStartTime + parseFloat(event.duree);
// Filtrer en fonction du selectedLevel
return schedule.niveau === level && startTime >= eventStartTime && startTime < eventEndTime;
}) || [];
@ -78,10 +78,10 @@ const PlanningClassView = ({ schedule, onDrop, selectedLevel, handleUpdatePlanni
const renderTimeSlots = () => {
const timeSlots = [];
for (let hour = parseInt(formData.time_range[0], 10); hour <= parseInt(formData.time_range[1], 10); hour++) {
const hourString = hour.toString().padStart(2, '0');
timeSlots.push(
<React.Fragment key={`${hourString}:00-${Math.random()}`}>
<div className="h-20 p-1 text-right text-sm text-gray-500 bg-gray-100 font-medium">
@ -160,7 +160,7 @@ const PlanningClassView = ({ schedule, onDrop, selectedLevel, handleUpdatePlanni
</div>
))}
</div>
{/* Contenu du planning */}
<div className="flex-1 overflow-y-auto relative" style={{ maxHeight: 'calc(100vh - 300px)' }}>
<div className="grid bg-white relative" style={{ gridTemplateColumns: `2.5rem repeat(${currentWeekDays.length}, 1fr)` }}>

View File

@ -22,7 +22,7 @@ const ScheduleManagement = ({ handleUpdatePlanning, classes }) => {
const [schedule, setSchedule] = useState(null);
const { getNiveauxTabs } = useClasses();
const niveauxLabels = Array.isArray(selectedClass?.levels) ? getNiveauxTabs(selectedClass.levels) : [];
const niveauxLabels = useMemo(() => Array.isArray(selectedClass?.levels) ? getNiveauxTabs(selectedClass.levels) : [], [selectedClass, getNiveauxTabs]);
const [isModalOpen, setIsModalOpen] = useState(false);
const handleOpenModal = () => setIsModalOpen(true);
@ -38,7 +38,7 @@ const ScheduleManagement = ({ handleUpdatePlanning, classes }) => {
const currentPlanning = selectedClass.plannings_read?.find(planning => planning.niveau === niveau);
setSchedule(currentPlanning ? currentPlanning.planning : {});
}
}, [selectedClass, niveauxLabels]);
}, [selectedClass, niveauxLabels, selectedLevel]);
useEffect(() => {
if (selectedClass && selectedLevel) {

View File

@ -6,14 +6,14 @@ import PaymentModeSelector from '@/components/PaymentModeSelector';
import { BE_SCHOOL_FEES_URL, BE_SCHOOL_DISCOUNTS_URL, BE_SCHOOL_PAYMENT_PLANS_URL, BE_SCHOOL_PAYMENT_MODES_URL } from '@/utils/Url';
import { set } from 'lodash';
const FeesManagement = ({ registrationDiscounts,
setRegistrationDiscounts,
tuitionDiscounts,
setTuitionDiscounts,
registrationFees,
setRegistrationFees,
tuitionFees,
setTuitionFees,
const FeesManagement = ({ registrationDiscounts,
setRegistrationDiscounts,
tuitionDiscounts,
setTuitionDiscounts,
registrationFees,
setRegistrationFees,
tuitionFees,
setTuitionFees,
registrationPaymentPlans,
setRegistrationPaymentPlans,
tuitionPaymentPlans,
@ -22,20 +22,20 @@ const FeesManagement = ({ registrationDiscounts,
setRegistrationPaymentModes,
tuitionPaymentModes,
setTuitionPaymentModes,
handleCreate,
handleEdit,
handleCreate,
handleEdit,
handleDelete }) => {
const handleDiscountDelete = (id, type) => {
if (type === 0) {
setRegistrationFees(prevFees =>
setRegistrationFees(prevFees =>
prevFees.map(fee => ({
...fee,
discounts: fee.discounts.filter(discountId => discountId !== id)
}))
);
} else {
setTuitionFees(prevFees =>
setTuitionFees(prevFees =>
prevFees.map(fee => ({
...fee,
discounts: fee.discounts.filter(discountId => discountId !== id)
@ -47,7 +47,7 @@ const FeesManagement = ({ registrationDiscounts,
return (
<div className="w-full mx-auto p-2 mt-6 space-y-6">
<div className="bg-white p-2 rounded-lg shadow-md">
<h2 className="text-2xl font-semibold mb-4">Frais d'inscription</h2>
<h2 className="text-2xl font-semibold mb-4">Frais d&apos;inscription</h2>
<div className="grid grid-cols-1 md:grid-cols-2 gap-6">
<div className="col-span-1 p-6 rounded-lg shadow-inner mt-4">
<FeesSection