我正在使用fullcalendar版本3.6.2和一些事件。
%angular
我的插件:demo
我希望像在Allday活动中一样,在AgendaWeek / agendaDay中的全天活动中展示长活动。
有什么办法吗?
非常感谢!
答案 0 :(得分:0)
遇到类似的问题,请尝试以下操作:
这里的eventDataTransform
键很关键,它使您可以在数据呈现到日历之前对其进行操作。
在我的示例中,由于在日历上创建事件的其他人经常创建多日事件,然后占据agendaDay
视图中的大部分屏幕,因此我选择将这些事件重新分类为全天事件,以重新定位它们到视图顶部。
我选择将> = 5小时的所有活动重新分类为全天活动。
同样重要的是要抓住eventData.end == null
!
对于需要将结束日期重新定义为第二天午夜的事件,将需要进一步确定多日事件。例如,当多日活动在最后一天的1500小时结束时,此功能也将作为全天活动移至顶部,这很有用。没有这项修正,最后一天将被截止。这里有更多信息:FullCalendar - Event spanning all day are one day too short
$('#calendar').fullCalendar({
header: {
left: 'prev,next today',
center: '',
right: 'month,agendaWeek,agendaDay'
},
defaultView: 'month',
editable: false,
aspectRatio: 0.77,
eventDataTransform: function (eventData) {
var dur = eventData.end - eventData.start; //total event duration
if(dur >= 18000000 || eventData.end == null){ // 5 hours
eventData.allDay = true;
//eventData.end needs ammending to 00:00:00 of the next morning
if (dur > 86400000) {
var m = moment(eventData.end);
var roundDown = m.startOf('day');
var day2 = moment(roundDown).add(1, 'days')
eventData.end = day2.toString();
}
}
return(eventData);
},
});