EN · DE · RU · FR · ES

#2776: AbstractFullCalendar.java

projectforge-wicket/src/main/java/net/ftlines/wicket/fullcalendar/AbstractFullCalendar.java Abstrakte Wicket-Komponente (FullCalendar-Basis) · projectforge-wicket/src/main/java/net/ftlines/wicket/fullcalendar/AbstractFullCalendar.java 118 Zeilen · 65 Code · 34 Kommentare · 19 leer
Die abstrakte Basisklasse für die Wicket-FullCalendar-Komponente, verantwortlich für die Header-Beiträge (Laden von CSS/JS-Abhängigkeiten) und die JSON-Serialisierung von Joda-Time-Datentypen. Diese Klasse dient als Grundlage für FullCalendar (Datei #2787) und trennt die Rendering-Infrastruktur vom Komponentenverhalten. Sie registriert das erforderliche FullCalendar-CSS, JavaScript (minimierte oder Entwicklungsversionen) und ein benutzerdefiniertes Erweiterungsskript und stellt benutzerdefinierte Jackson-Serialisierer bereit, die DateTime in das ISO-8601-Format und LocalTime in das 12-Stunden-Format (h:mmaa) für die JSON-Einbettung konvertieren.

Architektur

Header-Beiträge

Die Methode renderHead(IHeaderResponse) liefert vier Ressourcen in dieser Reihenfolge: jQuery (über Wickets integrierte Ajax-jQuery-Referenz), FullCalendar-CSS, FullCalendar-JS (in der Bereitstellungsumgebung die minimierte Version, andernfalls die Entwicklungsversion zur Fehlersuche) und ein benutzerdefiniertes Erweiterungsskript (fullcalendar.ext.js), das Wicket-spezifische FullCalendar-Methoden hinzufügt. Die Prüfung des Bereitstellungsmodus (getApplication().usesDeploymentConfig()) folgt dem Standardmuster von Wicket für den Wechsel zwischen optimierten und debug-fähigen Ressourcen.

JSON-Serialisierungsstrategie

Zwei innere statische Klassen erweitern Jacksons StdSerializer, um Joda-Time-Typen zu verarbeiten, die Jackson nicht nativ unterstützt:

Diese Serialisierer werden bei der ProjectForge-JSON-Hilfsklasse (ToStringUtil) registriert und von der Config-Serialisierung in der renderHead-Methode von FullCalendar verwendet.

Klassenhierarchie

AbstractFullCalendar extends MarkupContainer implements IHeaderContributor. Die Erweiterung von MarkupContainer (anstelle einer spezifischeren Wicket-Komponente) bietet Flexibilität, um untergeordnete Verhaltensweisen und Panels anzuhängen und gleichzeitig zum <head>-Bereich der Seite beizutragen. Die konkrete Klasse FullCalendar fügt auf dieser Basis Callback-Verkabelung und Ereignisverwaltung hinzu.

Git-Verlauf

CommitWas geändert wurde
868d6abb7 bis ceb63e8a1Sechs jährliche Aktualisierungen der Copyright-Header. Die Header-Beiträge und die Serialisierungslogik der Komponente blieben über alle Wicket-Upgrades hinweg stabil – das Ressourcenladeprinzip der FullCalendar-JavaScript-Bibliothek und die Joda-Time-Serialisierungsanforderungen haben sich nicht geändert.