Affichage en NaN des dates dans l'onglet "Tâches en arrière plan"

Bonjour,
J’ai ça dans les logs depuis un bout de temps.

2022-12-18T11:47:00+0100 <info> scene.checkCalendarTriggers.js:24 (SceneManager.checkCalendarTriggers) Checking calendar triggers at Sun, 18 Dec 2022 10:47:00 GMT
2022-12-18T11:48:00+0100 <info> scene.checkCalendarTriggers.js:24 (SceneManager.checkCalendarTriggers) Checking calendar triggers at Sun, 18 Dec 2022 10:48:00 GMT
2022-12-18T11:49:00+0100 <info> scene.checkCalendarTriggers.js:24 (SceneManager.checkCalendarTriggers) Checking calendar triggers at Sun, 18 Dec 2022 10:49:00 GMT
2022-12-18T11:50:00+0100 <info> scene.checkCalendarTriggers.js:24 (SceneManager.checkCalendarTriggers) Checking calendar triggers at Sun, 18 Dec 2022 10:50:00 GMT
2022-12-18T11:51:00+0100 <info> scene.checkCalendarTriggers.js:24 (SceneManager.checkCalendarTriggers) Checking calendar triggers at Sun, 18 Dec 2022 10:51:00 GMT

Quelqu’un sait d’où ça peut venir ?
Je n’ai aucune scène qui tourne avec un calendrier et aucun calendrier de paramétré.

Autre chose :


Je ne comprends pas pourquoi il n’y a jamais la « date » d’exécution

De plus, il n’y a qu’un « g » à agrégation

C’est un log normal, c’est juste Gladys qui vérifie si justement tu n’as pas des scènes avec un calendrier.

Il n’y a rien à faire :slight_smile:

ça c’est dingue, ce bug on l’a vu plusieurs fois chez certain utilisateurs mais impossible de le reproduire.

Est-ce que tu pourrais regarder les logs de ton navigateur, onglet « Network », et me montrer le résultat du call API GET /api/v1/job?take=15&skip=0 ? :slight_smile:

Effectivement, apparemment les 2 orthographes existent (d’où le fait que les correcteurs ne le corrige pas), mais la forme avec 2 g n’est plus utilisée apparemment ^^

J’ai appris un truc !

Je vais corriger ça

Même souci chez moi

1 « J'aime »

Je pense que c’est ça :

[{"id":"2e1faf4f-83c4-4ea8-a2e4-807bf84617fa","type":"monthly-device-state-aggregate","status":"success","progress":99,"data":{},"created_at":"2022-12-19 15:02:25.401 +00:00","updated_at":"2022-12-19 15:02:30.859 +00:00"},{"id":"d3398f75-218c-4adf-8154-25ba019bfcb7","type":"daily-device-state-aggregate","status":"success","progress":99,"data":{},"created_at":"2022-12-19 15:02:19.655 +00:00","updated_at":"2022-12-19 15:02:25.392 +00:00"},{"id":"d70fbd61-f4f7-43e8-abe2-16d4fdd522c3","type":"hourly-device-state-aggregate","status":"success","progress":99,"data":{},"created_at":"2022-12-19 15:02:12.794 +00:00","updated_at":"2022-12-19 15:02:19.645 +00:00"},{"id":"ae56e6a0-b9ba-40eb-906f-67ae4c862106","type":"monthly-device-state-aggregate","status":"success","progress":99,"data":{},"created_at":"2022-12-19 14:02:26.049 +00:00","updated_at":"2022-12-19 14:02:32.108 +00:00"},{"id":"4197d1c2-e3d7-4205-96e1-e914316f15b3","type":"daily-device-state-aggregate","status":"success","progress":99,"data":{},"created_at":"2022-12-19 14:02:20.121 +00:00","updated_at":"2022-12-19 14:02:26.040 +00:00"},{"id":"b3d84ceb-2b95-43af-ac7e-f82d823a5767","type":"hourly-device-state-aggregate","status":"success","progress":99,"data":{},"created_at":"2022-12-19 14:02:12.793 +00:00","updated_at":"2022-12-19 14:02:20.112 +00:00"},{"id":"632fca35-d94d-4986-a70c-82413d29b874","type":"monthly-device-state-aggregate","status":"success","progress":99,"data":{},"created_at":"2022-12-19 13:02:24.973 +00:00","updated_at":"2022-12-19 13:02:30.384 +00:00"},{"id":"1dc49208-ab7e-4435-9b10-42e1c8a64b01","type":"daily-device-state-aggregate","status":"success","progress":99,"data":{},"created_at":"2022-12-19 13:02:19.720 +00:00","updated_at":"2022-12-19 13:02:24.964 +00:00"},{"id":"ae611a59-a255-4382-b21a-3cf9474b28b9","type":"hourly-device-state-aggregate","status":"success","progress":99,"data":{},"created_at":"2022-12-19 13:02:12.792 +00:00","updated_at":"2022-12-19 13:02:19.711 +00:00"},{"id":"b165e458-5c34-4ac6-bcd7-9c15c53177b8","type":"monthly-device-state-aggregate","status":"success","progress":99,"data":{},"created_at":"2022-12-19 12:02:22.755 +00:00","updated_at":"2022-12-19 12:02:28.409 +00:00"},{"id":"8b198299-0298-4d8c-8f32-db7009e4b0b4","type":"daily-device-state-aggregate","status":"success","progress":99,"data":{},"created_at":"2022-12-19 12:02:17.848 +00:00","updated_at":"2022-12-19 12:02:22.747 +00:00"},{"id":"218b89e7-a17e-4b69-95fa-a9a51d46628e","type":"hourly-device-state-aggregate","status":"success","progress":99,"data":{},"created_at":"2022-12-19 12:02:12.791 +00:00","updated_at":"2022-12-19 12:02:17.833 +00:00"},{"id":"368e2e9b-2891-4c92-8dfc-9758cef7aff6","type":"monthly-device-state-aggregate","status":"success","progress":99,"data":{},"created_at":"2022-12-19 11:02:23.096 +00:00","updated_at":"2022-12-19 11:02:28.552 +00:00"},{"id":"7d7cd4f4-1bc0-4820-85f0-679df43ed539","type":"daily-device-state-aggregate","status":"success","progress":99,"data":{},"created_at":"2022-12-19 11:02:18.213 +00:00","updated_at":"2022-12-19 11:02:23.087 +00:00"},{"id":"519a7c51-752b-4bb1-8acc-ad506e50ed14","type":"hourly-device-state-aggregate","status":"success","progress":99,"data":{},"created_at":"2022-12-19 11:02:12.789 +00:00","updated_at":"2022-12-19 11:02:18.204 +00:00"}]

Merci pour vos logs :pray:

Je vous tiens au courant quand je travaille dessus.

1 « J'aime »

Merci pour l’extrait, je viens de tester chez moi et je n’arrive pas à reproduire! :confused:

Je suis allé voir le code, et je ne vois vraiment pas ce qui pourrait causer ce bug…

Quelques questions:

  • Vous êtes bien en Gladys dernière version, et pas une version forkée ? (Gladys Assistant >= v4.13.2 )
  • Sur un navigateur supporté (Firefox, Chrome, Safari) ?
  • Gladys local ou Gladys Plus ?
  • Est-ce que vous avez testé en navigation privée (juste pour vérifier si c’est pas un bug de cache d’une ancienne version du front) ?
  • Le bug apparait 100% du temps, ou de manière aléatoire ?

On va trouver !

Oui (mise à jour ce matin)

Firefox et Safari KO
Chrome/Brave OK

Gladys local (depuis plusieurs appareils à la maison mobile/mac/iPad)

Oui, même comportement

Difficile à dire. Je dirais 100% du temps sur le même navigateur/appareil.
J’ai pensé à un problème de langue de navigateur, mais j’ai testé sans succès.

Je ferai un peu de debug dans le JS côté Front en mode dev et je complèterai.
Ne t’embête pas, c’est un bug mineur pour moi.

ça c’est intéressant!

Ok tiens moi au courant.

C’est quand même un peu dégeu, il faut qu’on trouve ça fait pas sérieux ^^

Je confirme aussi pour moi que sous chrome c’est OK et firefox KO

J’arrive à reproduire aussi, j’ai compris le bug :grin: le parsing de ce format de date fonctionne sous Chrome mais pas Safari ou Firefox

Il faut passer à un format plus classique lisible par tous les navigateurs, ça peut être fait côté front ^^

@cicoub13 si jamais tu veux faire une petite PR, sinon je le ferais :smile:

Alors j’ai jeté un coup d’oeil et j’ai besoin d’un avis avant correction.
D’après la documentation de dayjs, la librairie accepte uniquement le parsing de date au format ISO3601 2018-04-13 19:18:17.040+02:00

Mais les dates des jobs sont enregistrées avec ce format YYYY-MM-DD HH:mm:ss.SSS Z (comme 2023-01-20 20:39:46.089 +00:00) avec un espace.

Je n’ai aucune idée pourquoi Chrome et Safari fonctionnent et pas Firefox :man_shrugging:

Il y a plusieurs solutions :

  • Modifier la manière dont on stocke en base de données les dates pour se conformer au format ISO3601. Lourd et pas sûr des impacts ailleurs
  • Transformer la donnée lors de la récupération des objets jobs dans settings-background-jobs/index.js
  • Modifier le composant RelativeTime pour indiquer le format Custom lors du parsing

let relativeTime = dayjs(datetime, 'YYYY-MM-DD HH:mm:ss.SSS Z');

C’est cette dernière proposition que je pousse dans une PR ici
Ça fonctionne pour la page Jobs, mais :warning: le composant est aussi utilisé pour les devices de type Sensor.

Le parser de date de Chrome est plus souple :slight_smile: dayjs n’est qu’un wrapper autour de new Date(), si tu compare sur chaque navigateur, Chrome accepte des formats que les autres n’acceptent pas.

Je serais plutôt pour cette option !

Le composant RelativeTime est utilisé a pas mal d’endroits, et je pense pas que ce soit souhaitable que le comportement par défaut de ce composant soit qu’il n’accepte que des dates au format string et non standard.

Actuellement, l’avantage de ce composant est qu’il prend aussi des Date JS en paramètres

2 « J'aime »
1 « J'aime »

Merci pour la PR @cicoub13 :pray:

Je suis bon pour la conversion, par contre attention ta PR ne gère pas tous les cas, notamment les ajouts/update de job en websockets :slight_smile:

OK je revois ça, je suis rouillé :blush: