有没有办法在月视图中删除事件的日期跨度?
我的活动从晚上9点开始,到凌晨3点结束,在月视图中显示超过2天,但我希望将它们放在一天的单元格中。我仍然可以在AgendaWeek和agendaDay视图中同时使用它们多天。
我已经尝试过在eventAfterRender中调整事件的位置和大小,但它会为跨度应该发生的其他日子创建漏洞,即。 FullCalendar仍会定位其他事件,就好像发生了一天。如果我要去那条路,我将不得不做所有事情的整个位置和大小计算。
我可以在月视图中更改事件的实际开始和结束日期时间值,但在进入其他视图时我将不得不再次更新它们。
有一种简单的方法吗?我错过了什么吗?
由于
答案 0 :(得分:1)
我挖掘了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版本的
答案 1 :(得分:0)
你需要准时检查。如果时间延长到第二天。将它传递到当天上午11:59,然后将其传递给fullcalendar,并在标题中显示事件的实际时间。