EN · DE · RU · FR · ES

#2780: Event.java

projectforge-wicket/src/main/java/net/ftlines/wicket/fullcalendar/Event.java Java-модель (событие FullCalendar) · projectforge-wicket/src/main/java/net/ftlines/wicket/fullcalendar/Event.java 186 строк · 108 кода · 33 комментария · 45 пустых
Канонический класс модели, представляющий одно событие календаря в интеграции Wicket FullCalendar. Напрямую отображается на поля объекта события JavaScript FullCalendar: уникальный идентификатор, заголовок, флаг «весь день», даты начала/окончания (как Joda-Time DateTime), необязательная URL-ссылка, имя CSS-класса, флаг редактируемости, четыре цветовых свойства (текст, фон, граница и общий цвет), а также непрозрачное поле payload для присоединения произвольных сериализуемых доменных данных. Каждый сеттер возвращает this для «текучего» построения. Этот объект сериализуется в JSON с помощью Jackson и отправляется клиенту как часть ответа источника событий.

Архитектура

Идентификация события

Поле id служит уникальным идентификатором и используется FullCalendar для отслеживания событий (персистентность перетаскивания, удаление событий). События без ID рассматриваются клиентом как эфемерные. ID обычно соответствует первичному ключу базы данных (например, ID строки события календаря в БД).

Цветовые свойства

Четыре цветовых поля обеспечивают детальный визуальный контроль: color (текст и граница), backgroundColor, borderColor и textColor. Если задан только color, FullCalendar использует его для всех визуальных аспектов. Отдельные свойства позволяют переопределять конкретные аспекты, наследуя остальные. Это строки CSS-цветов (hex, rgb или именованные цвета).

Шаблон Payload

Поле payload (тип Serializable) — точка расширения для присоединения специфичных для приложения данных к событиям календаря. Например, событие календаря ProjectForge может содержать ссылку на сущность базы данных (запись табеля, запрос на отпуск, веху проекта), которую представляет событие. Payload проходит полный цикл: сервер → JSON → клиент → обратный вызов → сервер, позволяя серверным обработчикам извлекать доменный объект, связанный с нажатым или перетащенным событием.

Использование Joda-Time

Время начала и окончания использует DateTime от Joda-Time (не java.util.Date), что обеспечивает осведомлённость о часовом поясе, которой не хватает java.util.Date. Пользовательские сериализаторы в AbstractFullCalendar преобразуют их в строки ISO-8601, которые нативно понимает JavaScript-клиент FullCalendar.

История Git

КоммитЧто изменилось
868d6abb7ceb63e8a1Шесть ежегодных обновлений заголовков авторских прав. Модель событий оставалась стабильной, что отражает зрелость спецификации объекта события FullCalendar — все стандартные свойства покрыты, а точка расширения payload обрабатывает пользовательские данные.