Bonjour,
Sous node.js je cherche à créer un calendrier et il s'agit ici de la gestion des fêtes fixes. Celles-ci sont définies dans des fichiers .json, mais ces fêtes (ou leur importance) peuvent changer selon les continents ou pays. Il y a donc un calendrier de référence, puis ensuite celui d'un continent (ici l'Europe) qui doit remplacer les infos précédentes, puis le calendrier d'un pays (ici la France), qui lui aussi doit remplacer les infos.
Exemple :
.json du calendrier général :
.json du calendrier européen :
.json du calendrier Français : pas de donnée sur cette fête.
On voit que le grade et le rank changent entre les deux .json pour le jour de Cyrille et Méthode : il passe de "mémoire obligatoire" (grade 3) à "fête" pour l'Europe (grade 2). Comme il n'y a pas de données pour le calendrier français on doit en rester au grade 2.
Donc, en considération de cela j'appelle plusieurs .json avec le module fs de node.js et j'inclue chacun dans une variable. Or je m'y prends mal car seul le dernier .json est effectif, les deux premiers sont écrasés dans la variable 'data' :
Comment appeler mes .json pour que les infos soient remplacées ? Par exemple ici je voudrais que le 'data.grade' dans cette circonstance soit à '2'.
PS : je me suis trompé, il fallait que je mette ce sujet dans la catégorie "côté serveur".
PS2 : finalement non : la solution montrera qu'il s'agit avant tout d'une problématique js.
Modifié par Olivier C (28 Oct 2020 - 07:00)
Sous node.js je cherche à créer un calendrier et il s'agit ici de la gestion des fêtes fixes. Celles-ci sont définies dans des fichiers .json, mais ces fêtes (ou leur importance) peuvent changer selon les continents ou pays. Il y a donc un calendrier de référence, puis ensuite celui d'un continent (ici l'Europe) qui doit remplacer les infos précédentes, puis le calendrier d'un pays (ici la France), qui lui aussi doit remplacer les infos.
Exemple :
.json du calendrier général :
{
"1402": {
"name": "Saint Cyrille, moine et Saint Méthode, évêque",
"color": "white",
"grade": "3",
"rank": "10"
}
}
.json du calendrier européen :
{
"1402": {
"name": "Saint Cyrille, moine et Saint Méthode, évêque",
"color": "white",
"grade": "2",
"rank": "8"
}
}
.json du calendrier Français : pas de donnée sur cette fête.
On voit que le grade et le rank changent entre les deux .json pour le jour de Cyrille et Méthode : il passe de "mémoire obligatoire" (grade 3) à "fête" pour l'Europe (grade 2). Comme il n'y a pas de données pour le calendrier français on doit en rester au grade 2.
Donc, en considération de cela j'appelle plusieurs .json avec le module fs de node.js et j'inclue chacun dans une variable. Or je m'y prends mal car seul le dernier .json est effectif, les deux premiers sont écrasés dans la variable 'data' :
const fs = require('fs'),
general = './data/json/generalRomanCalendar.json',
european = './data/json/europeanRomanCalendar.json',
french = './data/json/frenchRomanCalendar.json',
{ DateTime } = require('luxon')
const liturgicalCalendar = date => {
const data1 = JSON.parse(fs.readFileSync(general, 'utf8')),
data2 = JSON.parse(fs.readFileSync(european, 'utf8')),
data3 = JSON.parse(fs.readFileSync(french, 'utf8')),
dt = DateTime.local(),
currentYear = dt.toFormat('yyyy'),
currentDayMonth = dt.toFormat('ddMM'),
ge = easter.gregorianEaster(currentYear),
easterDate = DateTime.local(ge.year, ge.month, ge.day)
// Gestion des fêtes votives
if (typeof date === 'undefined') date = currentDayMonth
let data = data1[date] // le problème est ici
data = data2[date] // le problème est ici
data = data3[date] // le problème est ici
console.log(data.grade) // pas de donné au lieu de '3'
console.log(data.rank) // pas de donné au lieu de '8'
// -> le reste du code...
}
Comment appeler mes .json pour que les infos soient remplacées ? Par exemple ici je voudrais que le 'data.grade' dans cette circonstance soit à '2'.
PS : je me suis trompé, il fallait que je mette ce sujet dans la catégorie "côté serveur".
PS2 : finalement non : la solution montrera qu'il s'agit avant tout d'une problématique js.
Modifié par Olivier C (28 Oct 2020 - 07:00)