EN · DE · RU · FR · ES

#2776 : AbstractFullCalendar.java

projectforge-wicket/src/main/java/net/ftlines/wicket/fullcalendar/AbstractFullCalendar.java Composant Wicket abstrait (Base FullCalendar) · projectforge-wicket/src/main/java/net/ftlines/wicket/fullcalendar/AbstractFullCalendar.java 118 lignes · 65 code · 34 commentaires · 19 vides
La classe de base abstraite pour le composant Wicket FullCalendar, responsable de la contribution à l'en-tête (chargement des dépendances CSS/JS) et de la sérialisation JSON des types de date Joda-Time. Cette classe sert de fondation pour FullCalendar (fichier #2787), séparant l'infrastructure de rendu du comportement du composant. Elle enregistre les CSS FullCalendar requis, le JavaScript (versions minifiée ou de développement) et un script d'extension personnalisé, et fournit des sérialiseurs Jackson personnalisés qui convertissent DateTime au format ISO-8601 et LocalTime au format 12 heures (h:mmaa) pour l'intégration JSON.

Architecture

Contribution à l'en-tête

La méthode renderHead(IHeaderResponse) contribue quatre ressources dans l'ordre : jQuery (via la référence Ajax jQuery intégrée de Wicket), le CSS FullCalendar, le JS FullCalendar (en utilisant la version minifiée en mode déploiement, la version de développement sinon pour faciliter le débogage), et un script d'extension personnalisé (fullcalendar.ext.js) qui ajoute des méthodes FullCalendar spécifiques à Wicket. La vérification du mode de déploiement (getApplication().usesDeploymentConfig()) suit le modèle standard de Wicket pour basculer entre les ressources optimisées et celles facilitant le débogage.

Stratégie de sérialisation JSON

Deux classes statiques internes étendent StdSerializer de Jackson pour gérer les types Joda-Time que Jackson ne supporte pas nativement :

Ces sérialiseurs sont enregistrés avec la classe utilitaire JSON de ProjectForge (ToStringUtil) et utilisés par la sérialisation Config dans la méthode renderHead de FullCalendar.

Hiérarchie des classes

AbstractFullCalendar extends MarkupContainer implements IHeaderContributor. Étendre MarkupContainer (plutôt qu'un composant Wicket plus spécifique) offre la flexibilité d'attacher des comportements enfants et des panneaux tout en contribuant à la section <head> de la page. La classe concrète FullCalendar ajoute le câblage des callbacks et la gestion des événements par-dessus cette base.

Historique Git

CommitCe qui a changé
868d6abb7 à ceb63e8a1Six mises à jour annuelles des en-têtes de copyright. La contribution à l'en-tête du composant et la logique de sérialisation sont restées stables à travers toutes les mises à niveau de Wicket — le modèle de chargement des ressources de la bibliothèque JavaScript FullCalendar et les exigences de sérialisation Joda-Time n'ont pas changé.