禁用fullcalendar中某些事件源的冲突

时间:2012-08-03 16:47:08

标签: fullcalendar

您好我想要一个事件源,允许覆盖(碰撞)其他事件源而不需要调整大小。

但其他事件源仍应使用正常的碰撞检测和调整大小?

有人有同样的问题吗?

1 个答案:

答案 0 :(得分:0)

好的,我找到了解决方案:

首先将fullcalendar中的函数segCollide(seg1,seg2)更改为:

function segsCollide(seg1, seg2) {
    if(seg1.allowCollision || seg2.allowCollision)
    {
        return false
    }
    else
    {
        return seg1.end > seg2.start && seg1.start < seg2.end;
    }
}

并且sliceSegs()为:

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];
        allowCollision = event.source.allowCollision;
        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,
              allowCollision: allowCollision,
              isStart: isStart,
              isEnd: isEnd,
              msLength: segEnd - segStart
            });
        }
    } 
    return segs.sort(segCmp);
}