每月视图日间位置的所有事件都根据开始时间排序,即事件开始时间0-23,顶部0小时和底部23小时。
但是我希望在活动任务列表顶部显示活动(event.IsActive == true
)任务,将显示非活动(event.IsActive == false
)任务,按开始时间0-23排序。
示例:
这可以在fullCalendar中使用吗?
答案 0 :(得分: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);
}
修补后的版本应如下所示:
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);
}
我只是检查事件是否具有不同的IsActive状态并返回diff,如果没有diff,则保留先前的算法。 (注意b - 一个差异,因为你想要IsActive:在IsActive之前是真的:false)
请注意,在拆分/排序事件时会调用segCmp
,因此将适用于所有视图。
最诚挚的问候,
帕斯卡
答案 1 :(得分:3)
实现此功能后,它可以解决您的问题: http://code.google.com/p/fullcalendar/issues/detail?id=364
答案 2 :(得分:-1)
如果要完全覆盖allDaySlot,month,basics视图的开始日期排序。 例如,按颜色对它们进行排序。
1.初始化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