Я использую FullCalendar v4-alpha-3 с плагином RRule для генерации повторяющихся событий.Он работает, как и ожидалось, только с одной проблемой: как изменить повторяющееся событие для учета месяцев с меньшим числом дней, чем начальный месяц в серии?
Например, если первое ежемесячное вхождение происходит 29 января,2019;событие будет повторяться 29-го числа всех последующих месяцев, кроме февраля, поскольку у него всего 28 дней (без учета високосных годов).
Я попытался сбросить dtstart
на первый день следующего месяца.Это работает, за исключением того, что событие больше не является рекурсивным.
Вот урезанный фрагмент моей настройки:
let calendar = new Calendar(calendarEl, {
plugins: [ rrulePlugin ],
events: [
{
rrule: 'DTSTART:20190129 RRULE:FREQ=MONTHLY;UNTIL=20200130;COUNT=13;BYMONTHDAY=29'
}
],
eventRender: function(info) {
...
// reset start date to the first day of the following month
// if current month has fewer days than base month
let start = event.start;
let day = start.getDate();
let now = new Date();
let currentMonth = now.getMonth();
let currentYear = now.getFullYear();
let daysInCurrent = getDaysInMonth(currentMonth + 1, currentYear);
let nextStart = start;
if (day > daysInCurrent) {
nextStart = new Date(currentYear, currentMonth + 1, 1);
event.setStart(nextStart);
event.setEnd(null);
}
}
});
Буду признателен за любую проницательность.