V2.0.1 : VOICI LES MODIFICATIONS MAJEURS APPRTÉES DANS CETTE VERSION :
-> REFONTE DU DESIGN DES AFFICHEURS CLASSIQUES (GÉNÉRAL + QUAIS) -> IMPLÉMENTATION DU DESIGN AFL : GÉNÉRAL ET QUAIS -> CHOIX DE LA SÉLECTION DES TYPES D'AFFICHEURS (GÉNÉRAL / QUAIS) UNE FOIS LE TYPE D'AFFICHEUR SÉLECTIONNÉS
This commit is contained in:
1 parent
68f0bc2807
commit
71822823f2
9 files changed
+189
-497
No files matched your search
@@ -793,80 +793,31 @@ export default function ClassiquesDeparts(){
|
||||
tomorrow.setDate(today.getDate()+1);
|
||||
const tomorrowStr = localDateStr(tomorrow);
|
||||
|
||||
const weekdayIndex = (d) => d.getDay(); // 0 dimanche .. 6 samedi
|
||||
const weekdayNameForColumn = (d) => {
|
||||
const i = weekdayIndex(d);
|
||||
switch(i) {
|
||||
case 1: return 'circule_lundi';
|
||||
case 2: return 'circule_mardi';
|
||||
case 3: return 'circule_mercredi';
|
||||
case 4: return 'circule_jeudi';
|
||||
case 5: return 'circule_vendredi';
|
||||
case 6: return 'circule_samedi';
|
||||
case 0: return 'circule_dimanche';
|
||||
default: return null;
|
||||
}
|
||||
};
|
||||
|
||||
const isPublicHoliday = (d) => {
|
||||
const y = d.getFullYear();
|
||||
const m = d.getMonth() + 1;
|
||||
const day = d.getDate();
|
||||
const s = `${y}-${String(m).padStart(2, '0')}-${String(day).padStart(2, '0')}`;
|
||||
const holidays = [
|
||||
`${y}-01-01`, // Jour de l'an
|
||||
`${y}-05-01`, // Fête du Travail
|
||||
`${y}-05-08`, // Victoire 1945
|
||||
`${y}-07-14`, // Fête nationale
|
||||
`${y}-08-15`, // Assomption
|
||||
`${y}-11-01`, // Toussaint
|
||||
`${y}-11-11`, // Armistice 1918
|
||||
`${y}-12-25`, // Noël
|
||||
];
|
||||
// Dates variables pour 2026
|
||||
if (y === 2026) {
|
||||
holidays.push('2026-04-06'); // Lundi de Pâques
|
||||
holidays.push('2026-05-14'); // Ascension
|
||||
holidays.push('2026-05-25'); // Lundi de Pentecôte
|
||||
}
|
||||
return holidays.includes(s);
|
||||
};
|
||||
|
||||
const parseCirculationFlag = (value, defaultValue) => {
|
||||
if (value === null || typeof value === 'undefined') {
|
||||
return defaultValue;
|
||||
}
|
||||
if (typeof value === 'boolean') {
|
||||
return value;
|
||||
}
|
||||
if (typeof value === 'number') {
|
||||
return value === 1;
|
||||
}
|
||||
if (typeof value === 'string') {
|
||||
const s = value.trim().toLowerCase();
|
||||
if (['true', '1', 't', 'y', 'yes', 'oui'].includes(s)) {
|
||||
return true;
|
||||
}
|
||||
if (['false', '0', 'f', 'n', 'no', 'non'].includes(s)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return defaultValue;
|
||||
};
|
||||
|
||||
const circulatesOn = (h, d) => {
|
||||
if (isPublicHoliday(d)) {
|
||||
// On public holidays, circulation is determined SOLELY by `circule_jours_feries`.
|
||||
// If the flag is true, it runs. Otherwise, it doesn't.
|
||||
return parseCirculationFlag(h['circule_jours_feries'], false);
|
||||
const pad = (n) => String(n).padStart(2, '0');
|
||||
const targetDateStr = `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}`;
|
||||
|
||||
const customDaysRaw = h.jours_personnalises;
|
||||
if (!customDaysRaw) return false;
|
||||
|
||||
let customDays = [];
|
||||
if (Array.isArray(customDaysRaw)) {
|
||||
customDays = customDaysRaw;
|
||||
} else if (typeof customDaysRaw === 'string') {
|
||||
try {
|
||||
customDays = JSON.parse(customDaysRaw);
|
||||
} catch (e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// On a regular day, check the corresponding weekday column.
|
||||
const col = weekdayNameForColumn(d);
|
||||
if (!col) return true; // Should not happen, but permissive.
|
||||
|
||||
// For regular weekdays, the default is to run unless specified otherwise.
|
||||
return parseCirculationFlag(h[col], true);
|
||||
|
||||
if (Array.isArray(customDays)) {
|
||||
const match = customDays.find(item => item.date === targetDateStr);
|
||||
if (match) {
|
||||
return Boolean(match.circule);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
// Construire listes pour aujourd'hui et demain en tenant compte des colonnes circule_*
|
||||
|
||||
Reference in new issue
Block a user