Javascript 在本周事件下方显示上周事件的完整日历

Javascript 在本周事件下方显示上周事件的完整日历,javascript,fullcalendar,Javascript,Fullcalendar,我正在开发一个应用程序来管理待命日历,使用FullCalendar来呈现它。大多数活动为期一周,从周二上午8:00开始,到下周二上午8:00结束。另一个事件,可能是另一个人在待命,将在该事件之后发生 在一次走廊可用性测试中,有人评论说月历视图很难阅读,因为前几周事件不在堆栈的顶部,而是在该周开始的事件下方呈现。当被观看时,眼睛感觉到它应该向下走1行以查看剩余的时间线,因为上周的事件就在那里,而不是向下移动到下一周 我调查了我认为存在的问题: function segCmp(a, b) {

我正在开发一个应用程序来管理待命日历,使用FullCalendar来呈现它。大多数活动为期一周,从周二上午8:00开始,到下周二上午8:00结束。另一个事件,可能是另一个人在待命,将在该事件之后发生

在一次走廊可用性测试中,有人评论说月历视图很难阅读,因为前几周事件不在堆栈的顶部,而是在该周开始的事件下方呈现。当被观看时,眼睛感觉到它应该向下走1行以查看剩余的时间线,因为上周的事件就在那里,而不是向下移动到下一周

我调查了我认为存在的问题:

function segCmp(a, b) {  
    return (b.msLength - a.msLength) * 100 + (a.event.start - b.event.start);  
}
对行的事件进行排序,但在计算中使用事件的长度。由于本周的活动持续时间较长,因此总是排在最前面。为了测试,我将开始日期改为周三,这样持续时间就更近了。这导致事件呈现出我预期的效果,最后几周的事件位于顶部,而这几周的事件位于底部

我认为,如果比较中的一个事件在那一周没有开始,那么应该只根据开始时间进行比较。我将函数修改为:

function segCmp(a, b) {
    if (a.isStart == false || b.isStart == false) {
        return (a.event.start - b.event.start);
    }
    return (b.msLength - a.msLength) * 100 + (a.event.start - b.event.start);
}
这解决了我的问题,渲染效果现在看起来很好,并且通过了走廊测试。我不知道这是否会对其他领域产生影响。我已经查看了其他视图(月、周、日),它们似乎也都呈现得很好。我只是对FullCalendar不太熟悉,不足以在此基础上提交bug或功能请求,或者这是否会被视为bug

我想知道我修改的内容是否正确,或者如果不是更好的修改方式来解决这个问题

谢谢

下面是应该显示的json结果:


[{"title":"Person 1 - OnCall (OSS On Call)","id":12,"allDay":false,"start":"2010-11-30T15:00:00.0000000Z","end":"2010-12-07T15:00:00.0000000Z","editable":false,"className":"fc-event-title-calendar","url":"/TimeManagement/Edit/12"},  
{"title":"Person 2 - OnCall (OSS On Call)","id":13,"allDay":false,"start":"2010-12-07T15:00:00.0000000Z","end":"2010-12-14T15:00:00.0000000Z","editable":false,"className":"fc-event-title-calendar","url":"/TimeManagement/Edit/13"},  
{"title":"Person 3 - OnCall (OSS On Call)","id":14,"allDay":false,"start":"2010-12-14T15:00:00.0000000Z","end":"2010-12-21T15:00:00.0000000Z","editable":false,"className":"fc-event-title-calendar","url":"/TimeManagement/Edit/14"},  
{"title":"Person 4 - OnCall (OSS On Call)","id":15,"allDay":false,"start":"2010-12-21T15:00:00.0000000Z","end":"2010-12-28T15:00:00.0000000Z","editable":false,"className":"fc-event-title-calendar","url":"/TimeManagement/Edit/15"},  
{"title":"Person 5 - OnCall (OSS On Call)","id":16,"allDay":false,"start":"2010-12-28T15:00:00.0000000Z","end":"2011-01-04T15:00:00.0000000Z","editable":false,"className":"fc-event-title-calendar","url":"/TimeManagement/Edit/16"},  
{"title":"Person 6 - OnCall (OSS On Call)","id":17,"allDay":false,"start":"2011-01-04T15:00:00.0000000Z","end":"2011-01-11T15:00:00.0000000Z","editable":false,"className":"fc-event-title-calendar","url":"/TimeManagement/Edit/17"},  
{"title":"Christmas","id":2,"allDay":true,"start":"2010-12-25T07:00:00.0000000Z","end":null,"editable":false,"className":"fc-event-title-calendar","url":"/TimeManagement/Edit/2"},  
{"title":"New Years Eve","id":3,"allDay":true,"start":"2010-12-31T07:00:00.0000000Z","end":null,"editable":false,"className":"fc-event-title-calendar","url":"/TimeManagement/Edit/3"},  
{"title":"New Years Day","id":4,"allDay":true,"start":"2011-01-01T07:00:00.0000000Z","end":null,"editable":false,"className":"fc-event-title-calendar","url":"/TimeManagement/Edit/4"}]

听起来您正试图解决此问题:

我不认为你的mod会导致任何不良行为,当你有两个事件都包装到第二行,保证它们保持相同的顺序时,mod就会中断。防弹解决方案需要进一步的工作,希望在某个时候解决这个问题