2013-05-26 60 views
14

我正在使用fullCalendar jquery插件。在FullCalendar中更改事件順序AgendaDay視圖

我試圖讓我的活動在議程中按日期顯示從左到右按開始時間排序。

本質上,我想刪除事件的堆棧,所以9-11的事件會顯示在12-4而不是上面的事件旁邊。

它看起來像有一些與事件排序相關的函數。

function segCmp(a, b) { 
    var tryCmp = (b.msLength - a.msLength) * 100 + (a.event.start - b.event.start); 
    if (tryCmp == 0) 
     return (a.event.rowId - b.event.rowId); 
    return tryCmp; 
} 

function segsCollide(seg1, seg2) { 
    return seg1.end > seg2.start && seg1.start < seg2.end; 
} 

// event rendering utilities 
function sliceSegs(events, visEventEnds, start, end) { 
    var segs = [], 
     i, len=events.length, event, 
     eventStart, eventEnd, 
     segStart, segEnd, 
     isStart, isEnd; 
    for (i=0; i<len; i++) { 
     event = events[i]; 
     eventStart = event.start; 
     eventEnd = visEventEnds[i]; 
     if (eventEnd > start && eventStart < end) { 
      if (eventStart < start) { 
       segStart = cloneDate(start); 
       isStart = false; 
      }else{ 
       segStart = eventStart; 
       isStart = true; 
      } 
      if (eventEnd > end) { 
       segEnd = cloneDate(end); 
       isEnd = false; 
      }else{ 
       segEnd = eventEnd; 
       isEnd = true; 
      } 
      segs.push({ 
       event: event, 
       start: segStart, 
       end: segEnd, 
       isStart: isStart, 
       isEnd: isEnd, 
       msLength: segEnd - segStart 
      }); 
     } 
    } 
    return segs.sort(segCmp); 
} 


// event rendering calculation utilities 
function stackSegs(segs) { 
var levels = [], 
i, len = segs.length, seg, 
j, collide, k; 
    for (i=0; i<len; i++) { 
     seg = segs[i]; 
     j = 0; // the level index where seg should belong 
     while (true) { 
      collide = false; 
      if (levels[j]) { 
       for (k=0; k<levels[j].length; k++) { 
        if (segsCollide(levels[j][k], seg)) { 
         collide = true; 
         break; 
        } 
       } 
      } 
      if (collide) { 
       j++; 
      }else{ 
       break; 
      } 
     } 
     if (levels[j]) { 
      levels[j].push(seg); 
     }else{ 
      levels[j] = [seg]; 
     } 
    } 
    return levels; 
} 

有什麼想法?

+2

你可以爲此創建一個jsfiddle。有一個問題,在日程安排中,當天的時間是垂直向左的,事件是相互關聯的。但是你希望事件在從左到右之後成爲一個,那麼你還必須將時間改爲水平。我的理解是正確的還是我錯過了任何觀點? –

回答

1

日曆中時隙的方向從上到下不是從左到右。我不相信有可能改變這個方向。

+0

這不是我找到的答案。 – ripa

1

有一個選項可以傳遞給fullCalendar(),它將禁用AgendaDay和agendaWeek查看它的slotEventOverlap: false事件的重疊。

相關問題