Я пытался найти реализованное решение вашей проблемы, но безрезультатно. Странно, что вы получаете такой результат: если вы посмотрите на исходный код плагина, он должен упорядочивать события по времени запуска:
// fullcalendar.js
// A cmp function for determining which segments should take visual priority
// DOES NOT WORK ON INVERTED BACKGROUND EVENTS because they have no eventStartMS/eventDurationMS
function compareSegs(seg1, seg2) {
return seg1.eventStartMS - seg2.eventStartMS || // earlier events go first
seg2.eventDurationMS - seg1.eventDurationMS || // tie? longer events go first
seg2.event.allDay - seg1.event.allDay || // tie? put all-day events first (booleans cast to 0/1)
(seg1.event.title || '').localeCompare(seg2.event.title); // tie? alphabetically by title
}
Во всяком случае, по поводу этого был открыт запрос о проблеме/функции.
Одно решение, которое я придумал, было бы следующим: если идентификаторы не важны на стороне клиента и могут быть изменены, вы можете упорядочить массив событий по дате и соответствующим образом изменить идентификаторы:
function compare(a, b) {
if (moment(a.start).isSame(b.start)) {
return 0;
}
if (moment(a.start).isBefore(b.start)) {
return -1;
}
return 1;
}
events.sort(compare);
for(var i = 0; i<events.length; i++) {
events[i]['id']=i;
}
Затем передайте упорядоченный массив в fullcalendar, и события должны появиться во всплывающем окне, упорядоченные по времени начала.
Скрипка
person
acontell
schedule
17.01.2015