Gladys 4 - Service CalDAV

Je travaille sur la demande de @Checconio

Comme prévu le système d’affichage des évènements dans le calendrier sur la vue « mois » est assez obscure et je ne pense pas pouvoir répondre exactement à la question. Dans certains cas ils affichent plusieurs évènements d’un même calendrier dans d’autres 1 seul (ou 2) avec + more au clic on est renvoyé sur la page journée et la liste de tous les évènements.
En attendant dans la dernière version du composant il y a 2 alternatives possibles:

La version popup est pas mal il me semble vous avez une préférence en attendant qu’on trouve une meilleure alternative ?

J’aime bien l’idée du pop-up aussi… :slight_smile:

3 « J'aime »

Je confirme aussi la version pop up est simple et claire :slight_smile:

2 « J'aime »

Le + qui donne une pop-up me semble très bien aussi :wink:

2 « J'aime »

Pareil le système de popup semblent plus propre que l’autre

1 « J'aime »

Salut @bertrandda,

Suite à réinstallation de Gladys après mes soucis de DB, je suis passé à la nouvelle version 64 bits fournie par @VonOx. Je pensais que tout allais bien, mais ce matin je n’ai pas reçu mon message paramétré dans les scènes liées aux calendriers. Alors je ne sais pas du tout si c’est lié à la version 64 bits ou à la récupération du backup via Gladys Plus ou encore à autre chose. Voilà mon retour :

  • Le calendrier n’affichait plus rien sur la dashboard,

  • Je me suis rendu sur l’intégration CalDav et tenté une nouvelle synchronisation, mais erreur :

  • J’ai donc créé un nouveau mot de passe application (au cas ou), mais idem,

  • Je me suis rendu sur l’onglet “Synchronisation” et déjà là je m’aperçois que je n’ai plus la totalité de mes calendriers, j’avais avant 3 calendriers supplémentaire (calendriers google partagés et autres).
    image

  • Je tente de tout décocher et de resynchroniser 1 par 1.

  • Le 1er (le miens) synchronise, mais n’affiche pas tous les évènements, seulement certains et je ne comprend pas pourquoi, autant le rdv “Concours notre dame” a été créé par l’agenda de ma conjointe (partagé) cela pourrait expliquer ce point, mais pas les autres. Je me retrouve avec quelques anniversaires, mais pas d’autres. De plus si je crée un nouvel évènement puis synchronise, celui-ci s’affiche bien. Toutefois si je reclique sur le bouton “Sauvegarder” sur la page de configuration et que je resynchronise, ce dernier évènement créé n’apparait plus. Aucun log docker ni dans la console chrome et rien de spécifique dans les requêtes via l’inspection network :

Mois de Mars et Avril dans Gladys


Mois de Mars et Avril dans Google


  • Le calendrier “Jours fériés en France” fonctionne parfaitement.
Mois d'Avril dans Gladys

  • Le calendrier “iMow” fonctionne parfaitement.
Mois d'Avril dans Gladys

  • Le calendrier “Week Numbers” qui fonctionnait fût un temps fait planter. Après investigation, je me rend compte qu’il n’est même plus apparent dans l’agenda google (donc pas moyen de le supprimer) et je suppose que c’est la raison du plantage … mais y a-t-il moyen qu’il n’apparaisse plus ?? ^^ Le problème étant que si je resauvegarde la config puis resynchronise, tout les calendriers sont cochés d’office.
Erreur dans Gladys

  • Le calendrier “Phases de la Lune” apparaissant de la même manière (et récupéré via google agenda via le même onglet) que le calendrier “Jours fériés en France” lui n’apparait pas dans l’onglet “Synchronisation”.
Synchronisation dans Gladys


Mois de Mars et agendas dans Google

Sinon une fois le calendrier “Week Numbers” désactivé cela refonctionne presque bien mise à part mon agenda principal, dont seul les nouveaux évènements créés après apparaissent à part quelques anniversaires :

Mois d'avril dans Gladys avec nouvel évènement test

Mois d'avril dans Google avec nouvel évènement test

En espérant que les infos seront suffisantes pour pouvoir déterminer ce qu’il se passe. Un grand merci par avance.

Je ne pense pas que ce soit lié ni au 64 bits ni à ton backup, c’est un bug de l’intégration Caldav.

Tu pourrais relancer une synchro et nous mettre ici l’erreur qu’il y a dans les logs Gladys ?

ça aidera @bertrandda pour comprendre ce qui ne va pas.

Alors pour cette partie là :

2022-03-30T18:58:42+0200 <info> calendar.requests.js:52 () CalDAV : Found calendar thomas.lemaistre76@gmail.com
2022-03-30T18:58:42+0200 <info> calendar.requests.js:52 () CalDAV : Found calendar iMow
2022-03-30T18:58:42+0200 <info> calendar.requests.js:52 () CalDAV : Found calendar Jours fériés en France
2022-03-30T18:58:42+0200 <info> calendar.requests.js:52 () CalDAV : Found calendar Week Numbers
2022-03-30T18:58:42+0200 <info> calendar.syncUserCalendars.js:38 (CalDAVHandler.syncUserCalendars) CalDAV : Found 4 calendars.
2022-03-30T18:58:43+0200 <error> calendar.syncUserCalendars.js:104 (Promise.map.concurrency) TypeError: Cannot read property 'childNodes' of undefined
    at /src/server/services/caldav/lib/calendar/calendar.requests.js:131:71
    at Array.map (<anonymous>)
    at CalDAVHandler.requestEventsData (/src/server/services/caldav/lib/calendar/calendar.requests.js:129:80)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:95:5)
    at async Promise.map.concurrency (/src/server/services/caldav/lib/calendar/calendar.syncUserCalendars.js:102:22)

Mais pour les autres soucis (le calendrier manquant et le calendrier principal qui n’affiche pas tout les event), je n’ai aucune erreur ni aucun logs ^^ Sorry

C’est parfait :slight_smile:

J’ai créé une issue github avec l’erreur du crash :

Ces soucis découlent du premier crash :slight_smile: Quand la synchro crash j’imagine qu’elle s’arrête et ne peut pas synchroniser le reste.

Mmmh pas sûr, car il n’y a plus de crash quand je décoche le calendrier « Week Numbers »
image

Et d’ailleurs les calendriers « iMow » et « Jours Fériés » sont bien entièrement récupérés de leur côté.

Bon dans tout les cas c’est à voir, ma machine est dispo en prise à distance au besoin @bertrandda ^^

Merci encore

1 « J'aime »

Salut @Terdious, hyper complet tes retours :pray:
Pour ton calendrier incomplet, cette PR Fix CalDAV events sync by bertrandda · Pull Request #1471 · GladysAssistant/Gladys · GitHub devrait régler ton problème.
Pour ce qui est des erreurs du calendrier “Week numbers” j’arrive en effet au même résultat que toi, en attendant tu peux désactiver la synchronisation du calendrier ici, puis remettre à zéro et resynchroniser tes calendrier dans Gladys ça devrait faire disparaitre l’erreur (mais le calendrier en question sera absent)

1 « J'aime »

Quelle rapidité @bertrandda :sweat_smile: je vois que tu avais déjà pris les devant ^^ My bad j’aurais dû aller voir les PR en cours !!
Du coup as-tu besoin de testeur là-dessus ? Je vais remettre mon env-test en route ce week-end du coup fais moi signe au besoin.

Rooo lala des fois je suis quand meme bien à l’ouest, je me souvenais tres bien de cette page et pourtant j’ai cherché (mal on est d’accord - je vieilli peut-etre ^^) mais pas retrouvé !! Cela devrait résoudre parfaitement mes 2 autres problèmes :
Le calendrier des phases de lune n’était pas coché et en effet je ne suis plus embêté avec les week numbers ^^ :heart_eyes::heart_eyes:

Un grand merci à toi !!

Edit : Bon le calendrier « Phases de Lune » ne fonctionne pas pour le moment mais on verra avec la PR, peut-être lié au même souci^^

1 « J'aime »

Oui merci, tout retour sera utile, tu peux tester avec cette image docker :

Pour ton calendrier « Phase de la lune », tu confirmes qu’il apparait dans la partie Synchronisation maintenant ? Si oui et que c’est juste les évènements qui n’apparaissent pas dans ton calendrier alors la PR devrait en effet régler ce point là aussi

Je confirme, merci @bertrandda.

Je teste ça avec docker du coup et te fais un retour.

Bon finalement, j’ai pu faire le test en 5 minutes ce midi grâce à docker ^^

Donc le problème est résolu pour le calendrier principal en effet !! Good job @bertrandda :wink:

Toutefois, sur la première synchronisation ça a planté. Seul le calendrier principal s’est mis à jour … et tout ça à cause du calendrier des “Phases de Lune” avec les logs suivant :

2022-03-31T13:02:41+0200 <info> index.js:55 (CalDAVHandler.config) CalDAV : Principal URL found: https://www.google.com/calendar/dav/xxxxxxxxxxxxxxxxxx@gmail.com/user
2022-03-31T13:02:41+0200 <info> index.js:76 (CalDAVHandler.config) CalDAV : Home URL found: https://www.google.com/calendar/dav/xxxxxxxxxxxxxxxxxx%40gmail.com/
2022-03-31T13:02:41+0200 <info> calendar.cleanUp.js:12 (CalDAVHandler.cleanUp) Start cleaning CalDAV data for user: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx
2022-03-31T13:02:41+0200 <info> calendar.cleanUp.js:14 (CalDAVHandler.cleanUp) 0 calendars to clean
2022-03-31T13:02:47+0200 <info> calendar.requests.js:52 () CalDAV : Found calendar thomas.lemaistre76@gmail.com
2022-03-31T13:02:47+0200 <info> calendar.requests.js:52 () CalDAV : Found calendar iMow
2022-03-31T13:02:47+0200 <info> calendar.requests.js:52 () CalDAV : Found calendar Jours fériés en France
2022-03-31T13:02:47+0200 <info> calendar.requests.js:52 () CalDAV : Found calendar Phases of the Moon
2022-03-31T13:02:47+0200 <info> calendar.syncUserCalendars.js:38 (CalDAVHandler.syncUserCalendars) CalDAV : Found 4 calendars.
2022-03-31T13:03:00+0200 <info> scene.checkCalendarTriggers.js:24 (SceneManager.checkCalendarTriggers) Checking calendar triggers at Thu, 31 Mar 2022 11:03:00 GMT
2022-03-31T13:03:05+0200 <info> calendar.syncUserCalendars.js:132 (Promise.map.concurrency) CalDAV : 696 events updated for calendar xxxxxxxx@gmail.com.
2022-03-31T13:03:06+0200 <error> calendar.syncUserCalendars.js:104 (Promise.map.concurrency) TypeError: Cannot read property 'childNodes' of undefined
    at /src/server/services/caldav/lib/calendar/calendar.requests.js:136:71
    at Array.map (<anonymous>)
    at CalDAVHandler.requestEventsData (/src/server/services/caldav/lib/calendar/calendar.requests.js:134:80)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:95:5)
    at async Promise.map.concurrency (/src/server/services/caldav/lib/calendar/calendar.syncUserCalendars.js:102:22)
2022-03-31T13:04:00+0200 <info> scene.checkCalendarTriggers.js:24 (SceneManager.checkCalendarTriggers) Checking calendar triggers at Thu, 31 Mar 2022 11:04:00 GMT
2022-03-31T13:04:13+0200 <info> calendar.disableCalendar.js:17 (CalDAVHandler.disableCalendar) Calendar phases-of-the-moon disabled & emptied
2022-03-31T13:04:16+0200 <info> calendar.requests.js:52 () CalDAV : Found calendar thomas.lemaistre76@gmail.com
2022-03-31T13:04:16+0200 <info> calendar.requests.js:52 () CalDAV : Found calendar iMow
2022-03-31T13:04:16+0200 <info> calendar.requests.js:52 () CalDAV : Found calendar Jours fériés en France
2022-03-31T13:04:16+0200 <info> calendar.requests.js:52 () CalDAV : Found calendar Phases of the Moon
2022-03-31T13:04:16+0200 <info> calendar.syncUserCalendars.js:38 (CalDAVHandler.syncUserCalendars) CalDAV : Found 4 calendars.

Dans la 2ème partie, j’ai désactivé le calendrier “Phases de Lune” puis retenter une synchronisation mais rien de plus n’apparaissait dans la vue Calendrier. Comme les 2 autres calendriers (“Jours Fériés” et “iMow”) apparaissent dans la vue après le calendrier “Phases de Lune”, je suppose qu’il fait dans l’ordre et que si ça plante sur un calendrier, il s’arrête du coup.

J’ai donc désactivé les 2 calendriers supplémentaires (“Jours Fériés” et “iMow”), sauvegardé, puis les ai réactiver. Après une nouvelle ça fonctionne pour ces 2 là. Je suppose donc que c’est le même problème pour le calendrier “Phases de Lune” que celui des “Week Numbers” (peut-être à tord ^^)
image

Hésite pas si besoin d’essais complémentaires. Je veux bien le mettre en environnement de dev si tu veux pour voir dans les logs qu’elle est la variable ou le json renvoyé pour ces calendrier car la mention Cannot read property 'childNodes' of undefined semble supposer qu’il n’y a pas la même structure ?

Comment as tu créé ce calendrier “Phases de Lune” dans Google Agenda ? C’est un import ?

De la même façon que celui des “Jours Fériés en France” via le menu “Autres agendas +” / “Parcourir les agendas susceptibles de vous intéresser” / “Jours fériés locaux” pour le premier et “Autres” pour le second :
image

@bertrandda Pour cette erreur, tu l’as fixeras dans la même PR donc je la merge pas en attendant ?

Le problème vient d’être fixé avec le dernier commit, c’était un problème d’interprétation de caractères avec les calendriers proposés par Google.

L’image docker est en cours de build

Edit : l’image bertrandda/gladys:caldav est à jour

2 « J'aime »

Génial ça !