EN · DE · RU · FR · ES

#2776: AbstractFullCalendar.java

projectforge-wicket/src/main/java/net/ftlines/wicket/fullcalendar/AbstractFullCalendar.java Абстрактный компонент Wicket (база FullCalendar) · projectforge-wicket/src/main/java/net/ftlines/wicket/fullcalendar/AbstractFullCalendar.java 118 строк · 65 кода · 34 комментария · 19 пустых
Абстрактный базовый класс для компонента Wicket FullCalendar, отвечающий за подключение заголовка (загрузка зависимостей CSS/JS) и JSON-сериализацию типов дат Joda-Time. Этот класс служит основой для FullCalendar (файл #2787), разделяя инфраструктуру рендеринга и поведение компонента. Он регистрирует необходимые CSS FullCalendar, JavaScript (минифицированные или разработочные версии) и пользовательский скрипт расширения, а также предоставляет пользовательские сериализаторы Jackson, которые преобразуют DateTime в формат ISO-8601 и LocalTime в 12-часовой формат (h:mmaa) для встраивания в JSON.

Архитектура

Подключение заголовка

Метод renderHead(IHeaderResponse) подключает четыре ресурса по порядку: jQuery (через встроенную ссылку Wicket на Ajax jQuery), CSS FullCalendar, JS FullCalendar (используя минифицированную версию в режиме развёртывания, иначе разработочную версию для упрощения отладки) и пользовательский скрипт расширения (fullcalendar.ext.js), который добавляет специфичные для Wicket методы FullCalendar. Проверка режима развёртывания (getApplication().usesDeploymentConfig()) следует стандартному шаблону Wicket для переключения между оптимизированными и отладочными активами.

Стратегия JSON-сериализации

Два внутренних статических класса расширяют StdSerializer от Jackson для обработки типов Joda-Time, которые Jackson изначально не поддерживает:

Эти сериализаторы регистрируются в утилите JSON ProjectForge (ToStringUtil) и используются при сериализации Config в методе renderHead класса FullCalendar.

Иерархия классов

AbstractFullCalendar extends MarkupContainer implements IHeaderContributor. Расширение MarkupContainer (а не более специфичного компонента Wicket) даёт гибкость для присоединения дочерних поведений и панелей, одновременно внося вклад в раздел <head> страницы. Конкретный класс FullCalendar добавляет поверх этой базы связывание обратных вызовов и управление событиями.

История Git

КоммитЧто изменилось
868d6abb7ceb63e8a1Шесть ежегодных обновлений заголовков авторских прав. Подключение заголовка компонента и логика сериализации оставались стабильными на протяжении всех обновлений Wicket — шаблон загрузки ресурсов библиотеки FullCalendar JavaScript и требования к сериализации Joda-Time не изменились.