EN · DE · RU · FR · ES

#2779 : Config.java

projectforge-wicket/src/main/java/net/ftlines/wicket/fullcalendar/Config.java Modèle de configuration Java (FullCalendar) · projectforge-wicket/src/main/java/net/ftlines/wicket/fullcalendar/Config.java 428 lignes · 267 code · 79 commentaires · 82 vides
Le modèle de configuration complet pour le composant Wicket FullCalendar — l'objet unique qui capture tous les paramètres du calendrier et est sérialisé en JSON pour l'appel d'initialisation de FullCalendar côté client. Cette classe modélise tous les aspects configurables du widget calendrier : sources d'événements, disposition de l'en-tête, libellés des boutons, scripts de rappel (pour les événements de dépôt, redimensionnement, clic, rendu, sélection, affichage), paramètres d'affichage de l'heure, chaînes de format de colonne et indicateurs d'interaction (éditable, sélectionnable, glissable, redimensionnable). Les annotations Jackson contrôlent la sérialisation JSON : @JsonRawValue empêche le double échappement du texte des rappels JavaScript, @JsonIgnore masque les modèles Wicket internes de la sérialisation, et @JsonProperty contrôle le nommage des champs.

Architecture

Gestion des scripts de rappel

Sept modèles de rappel utilisent IModel<String> — l'abstraction de modèle de Wicket pour les valeurs dynamiques. Chaque accesseur de rappel est annoté avec @JsonRawValue, ce qui indique à Jackson d'insérer directement le contenu textuel du modèle dans la sortie JSON sans le mettre entre guillemets. Ceci est crucial car les chaînes de rappel sont des corps de fonctions JavaScript (par exemple, function(event, delta, revertFunc) { ... }) et doivent apparaître comme du code brut dans l'initialisation de FullCalendar, et non comme des chaînes entre guillemets. Les méthodes setter offrent une commodité (setEventDrop(String) encapsule dans Model.of()) et une version avancée (setEventDropModel(IModel) pour les modèles dynamiques).

Intégration du modèle Wicket

L'utilisation de IModel pour les scripts de rappel permet une génération dynamique de scripts — essentielle car ces scripts contiennent des URL de rappel Ajax Wicket qui changent entre les requêtes (en raison des jetons anti-cache et du versionnage des pages). La méthode setupCallbacks() dans FullCalendar.java remplit ces modèles avec le texte de script généré, et le mécanisme de résolution de modèle de Wicket garantit des valeurs fraîches à chaque rendu.

Configuration temporelle

Utilise les types Joda-Time (LocalTime pour minTime/maxTime) qui sont sérialisés via les sérialiseurs personnalisés dans AbstractFullCalendar. L'énumération ColumnFormat correspond aux options de format d'en-tête de colonne de FullCalendar pour les vues jour, semaine et mois.

Constructeur fluide

La méthode add(EventSource) retourne this, permettant une configuration en chaîne. Plusieurs sources d'événements peuvent être ajoutées de manière fluide : new Config().add(holidaysSource).add(meetingsSource).

Historique Git

CommitCe qui a changé
868d6abb7 à ceb63e8a1Six mises à jour annuelles des en-têtes de droits d'auteur. Le modèle de configuration est resté stable — tous les paramètres FullCalendar nécessaires à l'application sont capturés dans cette classe, et aucune nouvelle option de configuration n'a été requise au-delà de la conception initiale.