我正在使用FullCalendar和iCalendar2FullCalendar从各种iCloud帐户中输入.ICS文件。这样可以很好地呈现我们共享日历中的所有事件。
我正在做一个小型显示器,并且正在使用“ agendaDay”视图。我喜欢全天活动都排在最前面,并且可以在下面看到任何安排冲突。
但是,我有一些活动会持续数天,例如从星期五的1700hrs到星期日的1900hrs,我的女儿将和我在一起。在议程议程视图上,这将在每个小时的整个星期六中显示为实线,我想知道是否可以将某个持续时间内的事件呈现为全天活动?
我玩过eventRender回调,但是虽然可以更改事件属性,但事件仍然呈现,就像从未进行过更改一样。
这是我的代码,在此修订版中,我应用了一个固定的日期,希望它可以作为一个全天活动绘制,但是没有运气!:
$('#calendar').fullCalendar({
header: {
left: 'prev,next today',
center: '',
right: 'month,agendaWeek,agendaDay'
},
defaultView: 'month',
editable: false,
aspectRatio: 0.77,
eventRender: function(event, element, view) {
var dur = event.end - event.start; //event duration
var days = dur / 86400000;
if(days > 1 || event.end == null){ // needs altering to show as all day event.
console.log('long event - all day?' + event.allDay);
event.allDay = true;
console.log(event.title + ' - all day?' + event.allDay);
console.log(event.title + ' - starts:' + EpochToDate(event.start));
console.log(event.title + ' - ends:' + EpochToDate(event.end));
event.start = '2018-07-23T10:00:00';
event.end = '2018-07-24T10:00:00';
console.log (event);
}
}
});
})
答案 0 :(得分:1)
感谢@ADyson,这是我最后使用的内容。
$('#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);
},
});