EventSource.javaEventProvider) и его визуальным представлением в календаре. Каждый источник событий имеет свойства внешнего вида (цвета, CSS-класс), поведенческие флаги (редактируемый, по умолчанию на весь день, обработка часового пояса), модель событий в формате JSON-raw (JavaScript-колбэк, который загружает события) и метаданные, хранящиеся в обобщённом Map<String, Object> (название, UUID). UUID автоматически генерируется при инициализации календаря и служит идентификатором источника для Ajax-колбэков. Аннотации Jackson управляют сериализацией: @JsonRawValue для скрипта колбэка событий, @JsonIgnore для внутренних ссылок, таких как EventProvider и геттеры UUID/названия (которые сериализуются через карту data).Источники событий имеют две системы идентификации: внутреннюю ссылку EventProvider (Java-объект, не сериализуемый на клиент) и строку UUID, хранящуюся в карте data под ключом "fcxUuid". UUID является основным идентификатором для взаимодействия клиент-сервер — он передаётся в параметрах Ajax-колбэков и используется EventManager для поиска. Название (хранится под ключом "fcxTitle") — это читаемая человеком метка, отображаемая в флажках выбора источника событий. Класс констант Const централизует эти ключи карты.
Поле events — это IModel<String>, значением которого является тело JavaScript-функции — колбэк, который FullCalendar вызывает для загрузки событий этого источника. Оно устанавливается методом FullCalendar.setupCallbacks() с использованием шаблона из FullCalendar.events.tpl. Аннотация @JsonRawValue на геттере гарантирует, что этот JavaScript-код встраивается непосредственно в JSON-объект конфигурации без кавычек, что необходимо для интерпретации его FullCalendar как исполняемого кода.
Два булевых флага управляют интеграцией с EventSourceSelector: includeInSelector (отображается ли источник в списке флажков UI) и enableInSelector (доступен ли его флажок для взаимодействия). Это позволяет сделать источники присутствующими, но скрытыми, или видимыми, но не переключаемыми — полезно для обязательных базовых календарей, которые всегда должны отображаться.
Все сеттеры возвращают EventSource для текучей конфигурации, что согласуется с остальными классами модели FullCalendar.
| Коммит | Что изменилось |
|---|---|
868d6abb7 – ceb63e8a1 | Шесть ежегодных обновлений заголовков авторских прав. Модель источника событий остаётся стабильной — система идентификации на основе UUID, двойные свойства цвета/внешнего вида, флаги интеграции с селектором и модель событий на основе шаблонов покрывают все потребности конфигурации источника событий. |