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