1

我们正在将 jquery 插件 fullCalendar 用于工作中的项目。但是,我们希望在每天列的顶部显示具有某些属性的某些事件。问题是我不想更改 Fullcalendar.js 的源代码,如果我不需要的话,它甚至似乎正在使用缩小的 .js 来呈现事件。

我知道它存在一个触发自定义事件的触发器,eventRender: function (event, element)但我没有想法将事件呈现在顶部。对于这个例子,我们可以说事件有一个important属性。

所以我想这个伪代码会让我的例子更清楚:

eventRender: function (event, element) {
    if(event.important) {
        //render at top
    }
}
4

2 回答 2

1

我的任务要求发生了变化,现在每个事件都有一个特殊的优先级,它是一个整数。数字越高,它的重要性就越大。

老的:

// 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 中。

于 2013-03-07T10:56:17.847 回答
1

FullCalendar 从 v.2.4.0 开始添加了此功能。它被称为“ eventOrder ”,是日历选项的设置。您可以将事件属性的名称作为参数传递,它会根据该属性按字母顺序对事件进行排序。

// start calendar
var $calendar = $("#calendar").fullCalendar({
    // Start of calendar settings
    header: {
        left: 'title',
        right: 'today,month,agendaDay,agendaWeek prev,next'
    },

    // setting to display sorted based on this property
    eventOrder: "priority",

    events: data
}

例如,数据是:

data = [
    {
        title: "event1",
        start: "2017-01-25"
        priority: "a"
    },
    {
        title: "event2",
        start: "2017-01-26"
        priority: "b"
    },
    {
        title: "event3",
        start: "2017-01-27"
        priority: "c"
    }
]
于 2017-02-25T09:46:44.760 回答