簡體   English   中英

FullCalendar:如何在MonthView的一天中對事件進行排序和顯示?

[英]FullCalendar: How to sort & display Events on Day of MonthView?

每月視圖的時段中的所有事件均基於開始時間進行排序,即事件開始時間0-23,小時0在頂部,底部23。

但是我想在活動任務列表的頂部和頂部顯示active( event.IsActive == true )任務,非活動( event.IsActive == false )任務將按開始時間0-23顯示。

例:

  1. ActiveTask-1 12:00 AM
  2. ActiveTask-2 3:00 AM
  3. ActiveTask-3 21:45 PM
  4. InactiveTask-1 12:00 AM
  5. InactiveTask-2 7:00 AM
  6. InactiveTask-3 23:30 PM

全日歷有可能嗎?

您的請求將需要直接修補完整日歷代碼。 這是強制性的,因為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狀態,並返回差異,如果沒有差異,則保留先前的算法。 (請注意b-一個差異,因為您想要IsActive:true,然后再選擇IsActive:false)

請注意,分割/排序事件時會調用segCmp ,因此它將應用於所有視圖。

最好的祝福,

帕斯卡

實施此功能后,它將解決您的問題: http : //code.google.com/p/fullcalendar/issues/detail?id=364

如果要完全替代allDaySlot,月份,基本視圖的開始日期排序。 例如,按顏色對它們進行排序。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM