更改FullCalendar月视图上的默认事件排序顺序
我有一个fullcalendar,可以在月视图中显示多个日历。 不同的日历是彩色编码的。 我在所有视图中按日期排列日历,但是当它们在FullCalendar显示中呈现时,它们按事件的标题排序。
无论如何要覆盖当天的默认排序吗?
嗨,
是的,您可以使用称为eventOrder的fullcalendar版本2.4.0中的新事件覆盖当天的默认排序。
默认情况下,FullCalendar决定具有较长持续时间和较早开始时间的事件被排序在其他事件之上。 但是,事件往往具有相同的确切开始时间和持续时间,对于全天事件尤其如此。 默认情况下,发生这种情况时,事件按标题按字母顺序排序。 eventOrder提供了覆盖此行为的功能 。
如果要完全覆盖allDaySlot,month,basics视图的开始日期排序。 例如按颜色对它们进行排序。
1.Initialise eventOrder彩色。 (你正在使用的html / php文件)
eventOrder: 'color,start'
2.更改compareSegs函数。 (fullcalendar.js)
// original function
compareSegs: function(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)
compareByFieldSpecs(seg1.event, seg2.event, this.view.eventOrderSpecs);
}
// custom function
compareSegs: function(seg1, seg2) {
if(this.view.name=="basicWeek"){ // ordering events by color in ListView
return seg2.event.allDay - seg1.event.allDay || // tie? put all-day events first (booleans cast to 0/1)
compareByFieldSpecs(seg1.event, seg2.event, this.view.eventOrderSpecs);
}
else{
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)
compareByFieldSpecs(seg1.event, seg2.event, this.view.eventOrderSpecs);
}
}
在这种情况下,我只想在“basicVeek”视图中按颜色对事件进行排序。 然后我删除了eventStartMS&eventDurationMS测试。
去掉:
seg1.eventStartMS - seg2.eventStartMS || // earlier events go first
seg2.eventDurationMS - seg1.eventDurationMS || // tie? longer events go first
上一篇: Change default event sort order on FullCalendar month View