EN · DE · RU · FR · ES

#2784 : EventSource.java

projectforge-wicket/src/main/java/net/ftlines/wicket/fullcalendar/EventSource.java Modèle Java (Configuration de source d'événements FullCalendar) · projectforge-wicket/src/main/java/net/ftlines/wicket/fullcalendar/EventSource.java 244 lignes · 138 code · 66 commentaires · 40 vides
Le modèle de configuration et d'identité pour une source d'événements FullCalendar — le pont entre un fournisseur de données (EventProvider) et sa représentation visuelle dans le calendrier. Chaque source d'événements possède des propriétés d'apparence (couleurs, classe CSS), des indicateurs comportementaux (éditable, par défaut toute la journée, gestion du fuseau horaire), un modèle d'événements JSON brut (le callback JavaScript qui récupère les événements) et des métadonnées stockées dans une Map<String, Object> générique (titre, UUID). L'UUID est généré automatiquement lors de l'initialisation du calendrier et sert d'identifiant de la source pour les callbacks Ajax. Les annotations Jackson contrôlent la sérialisation : @JsonRawValue pour le script de callback des événements, @JsonIgnore pour les références internes comme EventProvider et les accesseurs UUID/titre (qui sont sérialisés via la map data à la place).

Architecture

Système d'identité double

Les sources d'événements disposent de deux systèmes d'identifiant : une référence EventProvider utilisée en interne (objet Java, non sérialisé vers le client), et une chaîne UUID stockée dans la map data sous la clé "fcxUuid". L'UUID est l'identifiant principal pour la communication client-serveur — il est envoyé dans les paramètres des callbacks Ajax et utilisé par EventManager pour la recherche. Le titre (stocké sous "fcxTitle") est une étiquette lisible affichée dans les cases à cocher du sélecteur de source d'événements. La classe de constantes Const centralise ces clés de map.

Modèle d'événements en JavaScript

Le champ events est un IModel<String> dont la valeur est un corps de fonction JavaScript — le callback que FullCalendar invoque pour récupérer les événements de cette source. Il est défini par FullCalendar.setupCallbacks() en utilisant le modèle de FullCalendar.events.tpl. L'annotation @JsonRawValue sur l'accesseur garantit que ce code JavaScript est intégré directement dans l'objet de configuration JSON sans guillemets, ce qui est nécessaire pour que FullCalendar l'interprète comme du code exécutable.

Intégration du sélecteur

Deux indicateurs booléens contrôlent l'intégration avec EventSourceSelector : includeInSelector (si la source apparaît dans la liste des cases à cocher de l'interface utilisateur) et enableInSelector (si sa case à cocher est interactive). Cela permet aux sources d'être présentes mais cachées, ou visibles mais non basculables — utile pour les calendriers de base obligatoires qui doivent toujours être affichés.

API fluide

Tous les mutateurs retournent EventSource pour une configuration fluide, cohérente avec le reste des classes du modèle FullCalendar.

Historique Git

CommitCe qui a changé
868d6abb7 à ceb63e8a1Six mises à jour annuelles des en-têtes de droits d'auteur. Le modèle de source d'événements est stable — le système d'identité basé sur UUID, les propriétés doubles de couleur/apparence, les indicateurs d'intégration du sélecteur et le modèle d'événements basé sur des modèles couvrent tous les besoins de configuration de source d'événements.