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);