Fullcalendar return 事件在 eventClick 中具有空结束值,如果事件有 rrule

Fullcalendar return event with null end value in eventClick if event have rrule

https://codepen.io/SashaPl/pen/MWboodq?editors=0010

如果我有带有 rrule 的事件,那么在 eventClick 中它不会有结束值,但会有正确的开始值。

对于此类活动,结束日期为 2021 年 2 月 4 日星期四 00:00:00

{
        title: "simple event",
        start: "2021-02-02",
        end: "2021-02-04"
},

但像这样它将为空

{
        title: "event with rrule",
        start: "2021-02-03T12:30:00",
        end: "2021-02-03T13:30:00",
        rrule: "FREQ=Weekly;WKST=SU;UNTIL=20210804T000000Z;INTERVAL=1;BYDAY=WE"
}

我修复了在从后端映射事件时将 eventLengthTimeStamp 添加到 eventLengthTimeStamp 的问题

const eventLengthTimeStamp = end.getTime() - start.getTime();

偶数时

 eventClick: (event) => {
  const popover = this._popoversMap.get(event.el);
  if (popover) {
    //this property is used because event with rrule have no end. end is null
    const diffTimeStamp = event.event.extendedProps.eventLengthTimeStamp;
    const end = new Date(event.event.start.getTime() + diffTimeStamp);
    const calendarEvent: EventApi = JSON.parse(JSON.stringify(event.event));
    calendarEvent.extendedProps.end = end;
    popover.instance.popover.open({ event: calendarEvent });
  }
},

这对我来说很好

根据问题https://github.com/fullcalendar/fullcalendar/issues/6172

您应该为事件设置 duration 属性 并在 eventClick

中使用获取 event.end 值的规则

https://codepen.io/acerix/pen/wvorZVP?editors=0010