Вопрос или проблема
Мне нужно видеть диапазон времени события в месячном представлении. Сейчас я вижу только время начала. Я прочитал документацию и не нашел способ изменить этот формат. eventTimeFormat
не работает, потому что дата окончания равна null
.
Ответ или решение
Для того чтобы отобразить диапазон времени события в месячном представлении FullCalendar, нужно немного модифицировать формат отображения событий. Поскольку в месячном представлении обычно отображается только время начала события, если вы хотите показать и время окончания, вам необходимо внести некоторые изменения в настройки вашего календаря.
Вот пошаговая инструкция для решения вашей задачи:
-
Проверьте структуру данных событий: Убедитесь, что для каждого события у вас есть как
start
, так иend
дата. Еслиend
у вас отсутствует (например равноnull
), то вам нужно будет добавить это значение в вашем источнике данных событий. -
Настройка формата времени: Используйте свойство
eventTimeFormat
, чтобы настроить формат отображаемого времени. Однако, в месячном представлении, это не сработает напрямую, еслиend
у васnull
. Вы можете использоватьeventRender
или новый методeventDidMount
(для версии 5 и выше), чтобы задать пользовательскую логику отображения событий. -
Пример кода:
Допустим, у вас есть массив событий, который вы передаете в ваш календарь:
const events = [ { title: 'Событие 1', start: '2023-10-01T10:00:00', end: '2023-10-01T12:00:00' }, { title: 'Событие 2', start: '2023-10-02T10:00:00', end: null // Пример события без времени окончания } ];
Инициализируйте ваш календарь:
document.addEventListener('DOMContentLoaded', function() { var calendarEl = document.getElementById('calendar'); var calendar = new FullCalendar.Calendar(calendarEl, { initialView: 'dayGridMonth', events: events, eventDidMount: function(info) { let timeText = info.event.start.toLocaleTimeString([], {hour: '2-digit', minute:'2-digit'}); if (info.event.end) { timeText += ' - ' + info.event.end.toLocaleTimeString([], {hour: '2-digit', minute:'2-digit'}); } info.el.querySelector('.fc-event-time').innerText = timeText; } }); calendar.render(); });
-
CSS стили (опционально): Возможно, вам потребуется добавить некоторые CSS-стили, чтобы отобразить время красиво, в зависимости от вашего дизайна.
С помощью этих шагов вы сможете отображать диапазон времени событий в месячном представлении вашего календаря. Убедитесь, что все события имеют свои end
даты, и используйте метод eventDidMount
для получения желаемого результата.