FullCalendar:删除月视图中事件的日期范围

有没有办法在月视图中删除事件的日期范围?

我的活动从晚上9点开始,到凌晨3点结束,在月视图中显示为2天,但我希望将它们放在一天的单元格中。 我仍然可以在同一时间在议程周和议程日视图中跨越多天。

我尝试过在eventAfterRender中对事件的定位和大小进行调整,但它会在跨度应该发生的其他日期创建漏洞,即。 FullCalendar仍然会定位其他事件,就好像跨日发生一样。 如果我要走这条路线,我将不得不为整个事物做所有的位置和大小计算。

我可以在月视图中更改事件的实际开始和结束日期时间值,但在进入其他视图时,我将不得不再次更新它们。

是否有捷径可寻? 我错过了什么吗?

谢谢


我深入到FullCalendar的内部,并找出如何使用段来计算事件的位置,大小和日期跨度。 我认为,如果我可以在计算其尺寸之前更改一些细分值,我可以在这里完成我所需要的。 我在FullCalendar中添加了一个新事件,以便能够转换这些段:

--- a/fullcalendar.js   Mon Jan 27 14:22:35 2014 -0500
+++ b/fullcalendar.js   Mon Jan 27 16:11:45 2014 -0500
@@ -5196,6 +5196,9 @@
        var html;
        var elements;

+       // call the trigger with the segments
+       trigger('segmentTransform', this, segments);
+
        // calculate the desired `left` and `width` properties on each segment object
        calculateHorizontals(segments);

当我需要它时,我使用该新事件来转换细分。 生成的代码如下所示:

// In my Full Calendar options
segmentTransform: function(segments, view) {
    if (view.name == 'month') {
        var curEvents = {};
        var segmentsToRemove = [];
        for (var i in segments) {
            var segment = segments[i];
            var eventId = segment.event.id;

            if (eventId in curEvents) {
                segmentsToRemove.push(i);
                continue;
            }
            curEvents[eventId] = true;

            if (segment.leftCol != segment.rightCol) {
                segment.rightCol = segment.leftCol;
            }
            segment.isEnd = true;
        }

        segmentsToRemove.reverse();
        for (var i in segmentsToRemove) {
            var indexToRemove = segmentsToRemove[i];
            segments.splice(indexToRemove, 1);
        }
    }
}

这是针对版本1.6.4


你需要检查时间。 如果时间延长到第二天。 将其传递到当前日期的上午11:59,然后将其传递到fullcalendar,并在标题中显示事件的实际时间。

链接地址: http://www.djcxy.com/p/14259.html

上一篇: FullCalendar: Remove day spanning for events in the month view

下一篇: FullCalendar month view events without resizing the cell size of calendar