繁体   English   中英

在FullCalendar AgendaDay视图中更改事件顺序

[英]Changing Order of events in FullCalendar AgendaDay view

我正在使用fullCalendar jquery插件。

我正在尝试使我的事件在议程日期视图从左到右按开始时间排序显示。

基本上,我想删除事件的堆叠,因此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;
}

有什么想法吗?

日历中时段的方向是从上到下而不是从左到右。 我不相信有可能改变这种方向。

有一个选项可以传递给fullCalendar() ,它将禁用agendaDay中的事件重叠,而AgendaWeek查看它的slotEventOverlap: false

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM