Instanciation des SuperEvents
Le système des
SuperEvents a été imaginé cet été afin
de répondre aux besoins des évènements récurrents :
- Le système qui est en train d'émerger est probablement utilisé par les autres logiciels, il consisterait à considérer un évènement récurrent comme un sorte de "super-évènement" fonctionnant selon ce principe :
- A la création, seul le SuperEvent existerait, un seul objet serait créé.
- A l'affichage dans le futur, le SuperEvent serait visible selon ses paramètres de répétition, comme une sorte d'héritage temporel ou d'ombre.
- Lorsqu'une occurrence serait passée, même si non modifiée, elle serait créée comme objet séparé, le SuperEvent agissant ici comme une classe créant des instances.
- La modification de la "série" modifierait le SuperEvent.
- La modification d'une occurrence future déclencherait une instanciation de cette occurrence, un objet dédié serait créé pour cet évènement.
- Il faudrait lier les instances futures au SuperEvent afin d'empêcher qu'elles ne se soient en conflit avec le SuperEvent. De même, il faudrait pouvoir supprimer toutes les instances futures si le SuperEvent est effacé ou modifié (dans une certaine mesure). Ce point est encore très flou.
Cette instanciation a été implémentée ces derniers jours. Elle est réalisée en deux étapes :
1 - La première est appelée l'instanciation temporaire. Elle a lieu dans la structure intermédiaire servant à filtrer et trier les données des différents dossiers et dates. A ce stade, les évènements récurrents ne sont donc instanciés qu'afin d'être affichés dans la liste. Leur titre est modifié pour inclure les heures de début et de fin, le tri se faisant dessus :
1Interim.png
Lors d'une demande d'édition, la question fatidique est posée :
2Edition.png
- Si la réponse est "Oui", c'est le
SuperEvent qui est édité.
- Si la réponse est "Non", c'est l'instance temporaire créée dans la structure intermédiaire qui est éditée. Son titre d'affichage est remplacé par celui du
SuperEvent, et l'édition empêche l'accès aux paramètres de répétition.
2 - Ce n'est qu'à la sortie du panneau d'édition par le bouton "Accepter" que l'instanciation définitive se fait. L'instance temporaire de la structure intermédiaire est copié dans l'arbre des données utilisateur, avec un lien vers le
SuperEvent:
3Link.png
(Hmmmm, la propriété EndDate héritée du SuperEvent est aussi à enlever...)
Si cette étape était importante, il reste encore du travail sur le sujet des
SuperEvents instanciés, dont un filtre spécial dans la structure intermédiaire afin de ne pas afficher (instancier temporairement) les
SuperEvents les jours où ils ont déjà été instanciés.
Il est toujours prévu que la suppression d'un
SuperEvent entraînera celle de ses instances. Mais les occurrences passées (et non modifiées) ne seront à priori pas instanciées comme il était prévu. Ce changement de plan contrarie le passage automatique en statut "Fait" des évènements du passé, il faudra donc y réfléchir encore...