Fullcalendar:在allDay活动中显示多天活动?

时间:2017-11-27 09:45:12

标签: javascript events fullcalendar

我正在使用fullcalendar版本3.6.2和一些事件。

%angular

我的插件:demo

我希望像在Allday活动中一样,在AgendaWeek / agendaDay中的全天活动中展示长活动。

有什么办法吗?

非常感谢!

1 个答案:

答案 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);  
        },

    });