FullCalendar显示更多链接不按时间顺序

时间:2015-01-17 15:53:53

标签: jquery fullcalendar

在FullCalendar中,使用

eventLimit: 2

将月视图中显示的事件数限制为每天两个。 A'显示更多'然后添加链接,打开一个显示所有事件的小弹出窗口。在月视图中,事件按时间顺序显示,但在显示更多弹出窗口中,它们由事件ID排序。如何在弹出窗口中按时间顺序排序?

http://jsfiddle.net/obsoyuL0/

1 个答案:

答案 0 :(得分:0)

我一直试图为您的问题找到一个已实施的解决方案,但无济于事。你得到那个结果很奇怪:如果你看一下插件的源代码,它应该按照开始时间对事件进行排序:

// 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
}

无论如何,有关于this的问题/功能请求已打开。

我提出的一个解决方案如下:如果id在客户端并不重要且可以修改,您可以按日期排序事件数组并相应地修改ID:

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,并且事件应该按照弹出窗口中的开始时间排序。

Fiddle