diff --git a/.idea/copilotDiffState.xml b/.idea/copilotDiffState.xml index f49a839..d578610 100644 --- a/.idea/copilotDiffState.xml +++ b/.idea/copilotDiffState.xml @@ -20,6 +20,33 @@ + + + + + + + + + + + + + + + + + + diff --git a/package-lock.json b/package-lock.json index 5ff4546..a37e355 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16098,23 +16098,6 @@ } } }, - "node_modules/tailwindcss/node_modules/yaml": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz", - "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==", - "license": "ISC", - "optional": true, - "peer": true, - "bin": { - "yaml": "bin.mjs" - }, - "engines": { - "node": ">= 14.6" - }, - "funding": { - "url": "https://github.com/sponsors/eemeli" - } - }, "node_modules/tapable": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", diff --git a/src/pages/afficheurs/classiques/ClassiquesDeparts.js b/src/pages/afficheurs/classiques/ClassiquesDeparts.js index cb85bb6..0b586da 100644 --- a/src/pages/afficheurs/classiques/ClassiquesDeparts.js +++ b/src/pages/afficheurs/classiques/ClassiquesDeparts.js @@ -416,7 +416,7 @@ export default function ClassiquesDeparts(){ if (maxDelay != null) return { label: `retardé +${maxDelay}min.`, detail: '', delayMinutes: maxDelay }; return { label: "à l'heure", detail: '', delayMinutes: null }; - }, [findPerturbsForHoraireAndStop, parsePerturbArretsObject, getPerturbationJours, parseDelayMinutesFromArret, normalizeName]); + }, [findPerturbsForHoraireAndStop, parsePerturbArretsObject, getPerturbationJours, parseDelayMinutesFromArret, normalizeName, debug]); // Applique les perturbations à une liste d'horaires : calcule status par arrêt et met à jour l'heure affichée const applyPerturbationsToHoraires = useCallback((list = [], perturbList = perturbations, displayStationId = null, displayStationName = null, serviceDate = null) => { @@ -471,7 +471,7 @@ export default function ClassiquesDeparts(){ horaire._displayPlatform = (stopForStation && (stopForStation.quai || stopForStation.platform || stopForStation.quay)) || horaire.platform || ''; return horaire; }); - }, [buildPerturbMap, computeStatusForHoraireAtStop, formatTimeFromHM, perturbations, gareDisplay, gareIdParam, getStops, normalizeName, debug]); + }, [buildPerturbMap, computeStatusForHoraireAtStop, formatTimeFromHM, perturbations, gareDisplay, gareIdParam, getStops, normalizeName]); useEffect(() => { const id = setInterval(() => setShowStatus(s => !s), 3000); @@ -915,7 +915,7 @@ export default function ClassiquesDeparts(){ const intervalId = setInterval(fetchData, intervalMs); return () => { mounted = false; clearInterval(intervalId); }; - }, [gareDisplay, gareIdParam, buildPerturbMap, computeStatusForHoraireAtStop, findPerturbsForHoraireAndStop, normalizeName, formatTimeFromHM, applyPerturbationsToHoraires, debug, getStops]); + }, [gareDisplay, gareIdParam, buildPerturbMap, computeStatusForHoraireAtStop, findPerturbsForHoraireAndStop, normalizeName, formatTimeFromHM, applyPerturbationsToHoraires, debug, getStops, getPerturbationJours]); // Helpers pour perturbations (memoized plus haut) diff --git a/src/pages/afficheurs/classiques/quais/ClassiquesArriveesQuais.js b/src/pages/afficheurs/classiques/quais/ClassiquesArriveesQuais.js index a1d9850..ba5e94c 100644 --- a/src/pages/afficheurs/classiques/quais/ClassiquesArriveesQuais.js +++ b/src/pages/afficheurs/classiques/quais/ClassiquesArriveesQuais.js @@ -213,7 +213,7 @@ export default function ClassiquesArriveesQuais(){ } catch (e) { return []; } }; - const parsePerturbArretsObject = (p) => { + const parsePerturbArretsObject = useCallback((p) => { const raw = p && (p.perturbations_arrets || p.arrets || p.arrets_perturbations); if (!raw) return { arrets: [], jours: null }; if (typeof raw === 'object') { @@ -230,7 +230,7 @@ export default function ClassiquesArriveesQuais(){ } catch (e) { return { arrets: [], jours: null }; } - }; + }, []); const getPerturbationJours = useCallback((p) => { if (!p) return null; @@ -371,7 +371,7 @@ export default function ClassiquesArriveesQuais(){ } if (maxDelay != null) return { label: `retardé +${maxDelay}min.`, detail: '', delayMinutes: maxDelay }; return { label: "à l'heure", detail: '', delayMinutes: null }; - }, [findPerturbsForHoraireAndStop, parseDelayMinutesFromArret, getPerturbationJours]); + }, [findPerturbsForHoraireAndStop, parseDelayMinutesFromArret, getPerturbationJours, normalizeName]); // Fetch perturbations & travaux from Supabase periodically useEffect(() => { @@ -417,7 +417,7 @@ export default function ClassiquesArriveesQuais(){ fetchPerturb(); const id = setInterval(fetchPerturb, 15000); return () => { mounted = false; clearInterval(id); }; - }, []); + }, [getPerturbationJours]); // Annotate selectedHoraire with computed status when perturbations change useEffect(() => { @@ -579,7 +579,7 @@ export default function ClassiquesArriveesQuais(){ loadNextForQuai(); return () => { mounted = false; }; - }, [gareDisplayParam, gareIdParam, quaiParam, parseTimeHM]); + }, [gareDisplayParam, gareIdParam, quaiParam, parseTimeHM, normalizeName]); // toggle flag to alternate time/status when needed (observe selectedHoraire.status when present) const [showTime, setShowTime] = useState(true); diff --git a/src/pages/afficheurs/classiques/quais/ClassiquesDepartsQuais.js b/src/pages/afficheurs/classiques/quais/ClassiquesDepartsQuais.js index 738365c..8239e47 100644 --- a/src/pages/afficheurs/classiques/quais/ClassiquesDepartsQuais.js +++ b/src/pages/afficheurs/classiques/quais/ClassiquesDepartsQuais.js @@ -196,7 +196,7 @@ export default function ClassiquesDepartsQuais(){ } catch (e) { return []; } }; - const parsePerturbArretsObject = (p) => { + const parsePerturbArretsObject = useCallback((p) => { const raw = p && (p.perturbations_arrets || p.arrets || p.arrets_perturbations); if (!raw) return { arrets: [], jours: null }; if (typeof raw === 'object') { @@ -213,7 +213,7 @@ export default function ClassiquesDepartsQuais(){ } catch (e) { return { arrets: [], jours: null }; } - }; + }, []); const getPerturbationJours = useCallback((p) => { if (!p) return null; @@ -354,7 +354,7 @@ export default function ClassiquesDepartsQuais(){ } if (maxDelay != null) return { label: `retardé +${maxDelay}min.`, detail: '', delayMinutes: maxDelay }; return { label: "à l'heure", detail: '', delayMinutes: null }; - }, [findPerturbsForHoraireAndStop, parseDelayMinutesFromArret, getPerturbationJours]); + }, [findPerturbsForHoraireAndStop, parseDelayMinutesFromArret, getPerturbationJours, normalizeName]); // Fetch perturbations & travaux from Supabase periodically useEffect(() => { @@ -400,7 +400,7 @@ export default function ClassiquesDepartsQuais(){ fetchPerturb(); const id = setInterval(fetchPerturb, 15000); return () => { mounted = false; clearInterval(id); }; - }, []); + }, [getPerturbationJours]); // Annotate selectedHoraire with computed status when perturbations change useEffect(() => { @@ -609,7 +609,7 @@ export default function ClassiquesDepartsQuais(){ loadNextForQuai(); return () => { mounted = false; }; - }, [gareDisplayParam, gareIdParam, quaiParam, parseTimeHM]); + }, [gareDisplayParam, gareIdParam, quaiParam, parseTimeHM, normalizeName]); // toggle flag to alternate time/status when needed (observe selectedHoraire.status when present) const [showTime, setShowTime] = useState(true);