From 5e9d7704492dc98651f2a9fb1f3d70e894cf398b Mon Sep 17 00:00:00 2001 From: mathis Date: Sun, 30 Aug 2026 23:23:56 +0200 Subject: [PATCH] feat(classiques): support extended lines (1-3), bottom clock/info ticker (time=true), and dynamic SNCF Open Data logo resolution --- src/pages/SelectAfficheur.js | 86 +++++- .../classiques/ClassiquesArrivees.css | 152 ++++++++++- .../classiques/ClassiquesArrivees.js | 246 ++++++++++++++---- .../classiques/ClassiquesDeparts.css | 152 ++++++++++- .../classiques/ClassiquesDeparts.js | 246 ++++++++++++++---- src/utils/trainLogoHelper.js | 214 +++++++++++++++ 6 files changed, 981 insertions(+), 115 deletions(-) create mode 100644 src/utils/trainLogoHelper.js diff --git a/src/pages/SelectAfficheur.js b/src/pages/SelectAfficheur.js index b3abe24..80db783 100644 --- a/src/pages/SelectAfficheur.js +++ b/src/pages/SelectAfficheur.js @@ -25,6 +25,10 @@ export default function SelectAfficheur({ onBack, navigate }) { corresp: false }); + // Options spécifiques pour les afficheurs Classiques + const [extendedLines, setExtendedLines] = useState(0); // 0, 1, 2, 3 + const [showTime, setShowTime] = useState(false); + const toggleAflPage = (key) => { setAflPages(prev => ({ ...prev, [key]: !prev[key] })); }; @@ -82,6 +86,13 @@ export default function SelectAfficheur({ onBack, navigate }) { if (activeKeys.length > 0) { url += `&pages=${activeKeys.join(',')}`; } + } else if (typeParam === 'classiques') { + if (extendedLines > 0) { + url += `&extended=${extendedLines}`; + } + if (showTime) { + url += `&time=true`; + } } navigate(url); @@ -96,7 +107,18 @@ export default function SelectAfficheur({ onBack, navigate }) { } if (typeof navigate === 'function') { const kebab = gareParam ? String(gareParam).trim() : ''; - navigate(`${prefix}/afficheurs/${modeParam}/${typeParam}/quais?gare=${encodeURIComponent(kebab)}&quai=${encodeURIComponent(quai)}`); + let url = `${prefix}/afficheurs/${modeParam}/${typeParam}/quais?gare=${encodeURIComponent(kebab)}&quai=${encodeURIComponent(quai)}`; + + if (typeParam === 'classiques') { + if (extendedLines > 0) { + url += `&extended=${extendedLines}`; + } + if (showTime) { + url += `&time=true`; + } + } + + navigate(url); } }; @@ -232,6 +254,68 @@ export default function SelectAfficheur({ onBack, navigate }) { )} + + {typeParam === 'classiques' && ( +
+
+ + Options d'affichage Classiques : + +
+ + {/* Choix du nombre de lignes étendues */} +
+ +
+ {[0, 1, 2, 3].map((num) => ( + + ))} +
+
+ {extendedLines > 0 + ? `Les ${extendedLines} premier${extendedLines > 1 ? 's' : ''} train${extendedLines > 1 ? 's' : ''} s'afficheront sur 2 lignes réduites avec le défilement de toutes les gares.` + : 'Affichage classique compact sans défilement de gares.'} +
+
+ + {/* Option Afficher l'heure */} +
+ +
+ Réserve la 10e ligne pour l'horloge numérique [ HH MM SS ] et un bandeau d'information défilant (horaires sur 9 lignes max). +
+
+
+ )}