2013-05-26 16 views
14

TamCalendar jquery eklentisini kullanıyorum.FullCalendar AgendaDay görünümündeki olayların sırasını değiştirme

Olaylarımı gündemde tutmaya çalışıyorum Günün görünümü, başlangıç ​​saatine göre soldan sağa doğru görünür.

Esasen, olayların yığınlanmasını kaldırmak istiyorum, bu nedenle 9-11 arasındaki bir olay, bunun yerine 12-4 arasında bir etkinliğin yanında görünecektir.

Olayların sıralanmasıyla ilişkili birkaç işlev var gibi görünüyor.

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; 
} 

Herhangi bir düşünce?

+2

Bunun için bir jsfiddle oluşturabilir misiniz? Bir soru, bir gündemde Günün günlerini görmek günün dikey olarak sola ve olaylar birbirinin altına gelir. Ama olayların soldan sağa sonra bir tane olmasını istiyorsun, o zaman da zamanı yatay olarak değiştirmek zorundasın. Anlayışım doğru mu, yoksa hiç bir noktayı kaçırmıyorum? –

cevap

1

Takvimdeki zaman dilimlerinin yönü, soldan sağa değil yukarıdan aşağıya doğrudur. Bu yönelimi değiştirmenin mümkün olduğuna inanmıyorum.

+0

bu, bulduğum bir cevap türü değil. – ripa

1

fullCalendar()'a geçebileceğiniz bir seçenek vardır. Bu, gündemdeki olayların üst üste binmesini devre dışı bırakacaktırDay ve gündemWeek, slotEventOverlap: false.

İlgili konular