CalendarResponse.java$('#calendarId').fullCalendarExt("command", args...)), и добавляет его в AjaxRequestTarget Wicket. Это канал команд от сервера к клиенту для управления календарём: обновление событий, переключение видимости источников событий, удаление событий, переход к датам и очистка выделения — всё управляется серверными обработчиками событий, реагирующими на действия пользователя.Каждый публичный метод возвращает CalendarResponse для цепочечного вызова. Шаблон позволяет составлять несколько команд календаря в одном обработчике обратного вызова:
response.clearSelection().gotoDate(date).refetchEvents();
Базовый механизм генерирует строки JavaScript через execute(args...), который использует String.format для создания jQuery-селектора, нацеленного на Wicket-идентификатор разметки календаря, и добавляет JavaScript в AjaxRequestTarget. Вспомогательный метод q() заключает аргументы в одинарные кавычки (или выводит null для нулевых значений).
refetchEvents() — указывает FullCalendar перезагрузить данные событий из всех источниковrefetchEvents(EventSource) — перезагружает конкретный источник событий, отключая и снова включая егоrefetchEvent(EventSource, Event) — заглушка для оптимизированного обновления одного события (в настоящее время выполняет полное обновление источника с комментарием TODO)toggleEventSource(EventSource, boolean) — включает или отключает флажок видимости источника событийremoveEvent(Event) — удаляет конкретное событие из календаряgotoDate(Date) — переводит представление календаря на определённую датуclearSelection() — очищает выделенный диапазон датМетод refetchEvent содержит комментарий TODO, признающий текущую неоптимизированную реализацию (полное обновление источника). В комментарии описана запланированная оптимизация: поиск затронутого события в клиентском буфере и обновление только этого события. Это признанное узкое место производительности для календарей с большим количеством событий.
| Коммит | Что изменилось |
|---|---|
868d6abb7 – ceb63e8a1 | Шесть ежегодных обновлений заголовков авторских прав. Набор команд и текучий API остались стабильными — словарь команд расширения FullCalendar покрывает потребности интеграции календаря, и новых команд от сервера к клиенту не потребовалось. |