我的任务要求发生了变化,现在每个事件都有一个特殊的优先级,它是一个整数。数字越高,它的重要性就越大。
老的:
// Old function, this won't sort based on importance first!
function segCmp(a, b) {
return (b.msLength - a.msLength) * 100 + (a.event.start - b.event.start);
}
新的:
function segCmp(a, b) {
var priorityDiff = ((a.event.priority || 0) < (b.event.priority || 0)) ? 1 : ((b.event.priority || 0) < (a.event.priority || 0)) ? -1 : 0;
if(priorityDiff != 0) return priorityDiff;
return (b.msLength - a.msLength) * 100 + (a.event.start - b.event.start);
}
对于想要使用它的您,您的事件 JSON 也看起来像这样:
{
allDay: false,
color: "#7BD148",
id: "1",
key: "1",
start: "2013-01-28 13:07:00",
title: "test event",
url: "http://google.se",
priority: 10
},
{
allDay: false,
color: "#7BD148",
id: "2",
key: "2",
start: "2013-01-28 12:07:00",
title: "test event 2",
url: "http://google.se",
priority: 5
},
正如您可能看到的,第二个事件安排得更早,但添加了代码后,它将按优先级对这两个事件进行排序。因此,第一个事件将首先发生,第二个事件紧随其后。
这就是我解决它的方法,优先级是一个整数,我试图按它排序,除非它们相同或不存在(空/未定义)。它按最高整数排序。
该函数在 fullCalendar.js 中。