2016-12-05 2 views
0

Я использую FullCalendar.js для отображения задач, введенных пользователями. Для этого я создал всплывающее окно, чтобы получить основные сведения о событиях и подробные сведения о повторении. Событие может повторяться ежедневно, еженедельно, 28 дней, 31 день, 30 дневных циклов. Я смог отображать события для ежедневных и еженедельных случаев, но я не могу подумать о том, как отображать события с 28/30/31 днями между ними.Добавить события в 28-дневный цикл в FullCalendar.js

Мой код для календаря выглядит следующим образом:

$('#calendar').fullCalendar({ 
    //height: 420, 
    header: { 
     left: 'prev,next today', 
     center: 'title', 
     right: 'month,agendaWeek,agendaDay' 
    }, 
    defaultDate: moment(), 
    defaultView: 'month', 
    eventRender: function (event, element, view) { 
     console.log(event.start.format()); 
     if (event.ranges == undefined) 
      return true; 
     else { 
      return (event.ranges.filter(function (range) { 
       if (range.end == undefined)//Check if only start is given 
        return (event.end.isAfter(range.start)) 
       else 
        return (event.start.isBefore(range.end) &&//If both start and end date is given 
          event.end.isAfter(range.start)); 
      }).length) > 0; 
     } 
    }, 
    events: function (start, end, timezone, callback) { 
     var events = getEvents(start, end); //This should be a JSON request 
     callback(events); 
    }, 
    eventClick: function (calEvent, jsEvent, view) { 
     alert('Event: ' + calEvent.title); 
     //$('#btnOpenPopUp').click(); 
    } 
}); 

и для JSON событий следующим образом:

 { 
    title: "My repeating event", 
    id: 1, 
    start: '10:00', // a start time (10am in this example) 
    end: '14:00', // an end time (6pm in this example) 
    dow: [1, 2, 3, 4, 5], // Repeat monday and thursday 
    ranges: [{ 
     start: moment().startOf('month').subtract(1, 'month'), 
     end: moment().startOf('month').subtract(1, 'month').add(7, 'd'), 
    }, { 
     start: moment('2016-12-15', 'YYYY-MM-DD'), //all of february 
     //end: moment('2016-11-01', 'YYYY-MM-DD').endOf('month'), 
    } 

мне нужна помощь, чтобы сделать задачи, которые происходят через каждые 28 дней. Какие-либо предложения?

ответ

2

Возможно, вы можете использовать проект later.js (http://bunkat.github.io/later/index.html), чтобы рассчитать возникновение задач. Этот пример кода произведет все вхождения между 2 датами каждые 28 дней:

<html> 
<head> 
<script src="moment.js" type="text/javascript"></script> 
<script src="moment-recur-min.js" type="text/javascript"></script> 
<script type="text/javascript"> 

var recurrence = moment().recur("2016-12-06", "2017-12-06").every(28).days(); 
var allDates = recurrence.all("L"); 
console.log(allDates); 
</script> 
</head> 
<body> 

test 
</body> 
</html> 

С наилучшими пожеланиями
Кшиштоф

Смежные вопросы