2010-12-08 69 views
0

我正在開發一個應用程序來管理隨叫隨到的日曆,使用FullCalendar來呈現它。大多數活動爲期一週,從星期二上午8:00開始,到下週二上午8:00結束。另一個事件,大概是一個不同的人隨時待命,將會跟隨那個事件。FullCalendar顯示本週內事件發生的最後幾周事件

在走廊可用性測試中,有人評論說月曆視圖很難閱讀,因爲前幾周的活動不在堆棧的頂部,而是在該周開始的事件之下呈現。當被觀看時,眼睛感覺到它應該下行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不夠熟悉,無法就此提出錯誤或功能請求,或者甚至將其視爲錯誤。

我在想,如果我修改的是正確的,或者如果它不是一個更好的修改將是解決這個問題。

謝謝!

下面我有什麼要顯示的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"}]

回答

0

聽起來像你試圖解決這個問題: http://code.google.com/p/fullcalendar/issues/detail?id=510

我不認爲你的MOD會造成任何不良行爲,當你有兩個包裝到第二行的事件時,它會中斷,保證它們保持相同的順序。一個防彈解決方案需要一點點進一步的工作,希望在某個時候解決這個問題。