Полный календарь повторяющихся событий

1

Я использую fullcalendar и хочу повторить событие раз в месяц (в понедельник) с августа по ноябрь. Я смог повторить событие, но событие повторяется четыре раза в месяц в каждое понедельник недели -while Мне нужно, чтобы он повторялся один раз в первый понедельник после даты начала. Ниже датируются диапазоны дат вместе с параметром DOW (дни недели).

 var repeatingEvents = [{
title:"My repeating event",
id: 1,
start: '10:00', 
end: '14:00', 
dow: [ 1, 4 ], 
ranges: [{ //repeating events are only displayed if they are within at least one of the following ranges.
    start: moment().startOf('week'), //next two weeks
    end: moment().endOf('week').add(7,'d'),
},{
    start: moment('2015-02-01','YYYY-MM-DD'), //all of february
    end: moment('2015-02-01','YYYY-MM-DD').endOf('month'),
},/*...other ranges*/],
},/*...other repeating events*/];

Есть ли способ, который я могу повторить один раз в месяц, запустив дату начала формы до даты окончания? Любая помощь будет оценена

Теги:
fullcalendar
recurring-events

2 ответа

2
Лучший ответ

Если вы не можете создавать свои события на стороне сервера, как предлагал @ADyson, вы можете сделать это в Javascript. Это находит первый понедельник месяца, между указанными датами начала и окончания.

var id=0, event, events = [],
    start=moment('2017-08-01'),
    end=moment('2017-10-31');

while (start.isBefore(end)) {
    id++;
    if (start.day() === 'Monday') {
        day = start.format('YYYY-MM-DD');
    } else {
        day = start.add(1, 'weeks').startOf('isoWeek').format('YYYY-MM-DD');
    }
    event = {
        title:"My repeating event",
        id: id,
        start: day + ' 10:00:00', 
        end: day + ' 14:00:00', 
    }
    events.push(event);
    start.add(1, 'month').startOf('month');
}

И затем используйте свой сконструированный массив событий в вашем календаре:

$('#calendar').fullCalendar({
    events: events,
    // ...
0

К сожалению, нет встроенной поддержки такого рода вещей. Если вы хотите использовать массив "диапазонов", как вы показали, это полностью настраиваемое свойство, поэтому для их обработки нужен какой-то пользовательский код. Кажется, вы использовали ту же структуру, что и в этом ответе: повторяющиеся события в FullCalendar. В этом случае вам также нужен специальный код в обратном вызове "eventRender", который показан в этом ответе, чтобы определения диапазона были применены.

Другим решением является просто изменить код на стороне сервера, чтобы он создавал отдельный объект события в JSON для каждого требуемого повторения события, которое требуется в диапазоне дат, который запрашивал fullCalendar.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню