FullCalendar:如何在MonthView日排序和显示事件?

Sai*_*ful 1 javascript jquery fullcalendar

每月视图的日期插槽中的所有事件都根据开始时间排序,即事件开始时间0-23,顶部0小时和底部23.

但是我希望event.IsActive == true在活动任务列表的顶部和活动任务列表之后显示active()任务,event.IsActive == false将按开始时间0-23排序显示inactive()任务.

例:

  1. ActiveTask-1 12:00 AM
  2. ActiveTask-2凌晨3:00
  3. ActiveTask-3 21:45 PM
  4. InactiveTask-1 12:00 AM
  5. InactiveTask-2上午7:00
  6. InactiveTask-3 23:30 PM

这可能在fullCalendar中吗?

小智 9

您的请求需要直接修补fullcalendar代码.这是强制性的,因为fullcalendar不会将此功能暴露给外界.

我确实用版本1.4.11检查了我的响应,但是查看github上的1.5分支显示它应该是相同的.

要修补的函数是segCmp(找到src/util.js源版本,或者只是在fullcalendar.js中的文件末尾附近)

原始版本是:

function segCmp(a, b) {
  return (b.msLength - a.msLength) * 100 + (a.event.start - b.event.start);
}
Run Code Online (Sandbox Code Playgroud)

修补后的版本看起来应该是这样的:

function segCmp(a, b) {
  var activeDiff = ((b.event.IsActive || false) - (a.event.IsActive || false));
  if (activeDiff != 0) return activeDiff;
  return (b.msLength - a.msLength) * 100 + (a.event.start - b.event.start);
}
Run Code Online (Sandbox Code Playgroud)

我只是检查事件是否具有不同的IsActive状态并返回diff,如果没有diff保留先前的算法.(注意b - 一个差异,因为你想要IsActive:在IsActive之前为true:false)

注意,segCmp在拆分/排序事件时调用,因此将应用于所有视图.

最好的祝福,

帕斯卡尔