Fullcalendar неверно отображает событие

1

Я реализую fullcalendar на своей веб-странице, и я столкнулся с странной ошибкой. Событие настроено правильно, но когда календарь загружен, он отображается в неправильном месте в календаре и с неправильной продолжительностью. Когда я перетаскиваю событие или обновляю календарь, событие помещается правильно и его продолжительность тоже. Даже отметка времени в названии события правильная, только позиция неверна. Проблема также возникает, когда в календаре есть только одно событие с несколькими событиями, все правильно.

_render: function(){
    this._super('_render',arguments);
    this.getCalendar().fullCalendar({
        defaultView: 'agendaWeek',
        editable:true,
        height: 600,

    });
    this.getCalendar().fullCalendar( 'renderEvent', {
        title: "purple",
        start: "2018-02-07T11:30:00+01:00",
        end: "2018-02-07T14:15:00+01:00",
        color: "purple",
    }, true);
    // this.renderMeetings();
},

Изображение 174551 Изображение 174551

Кто-нибудь знает, как это исправить? Также обратите внимание, что серые области "нерабочих" часов утрачены

EDIT: немного сузилась проблема - это происходит даже тогда, когда я просто пытаюсь сделать статическое событие

EDIT2: упрощенные настройки календарей, все те же...

EDIT3: когда я пробовал код на пустой странице, он работал так, как ожидалось, поэтому календарь должен каким-то образом вмешиваться в мой другой код... любые идеи как?

Теги:
fullcalendar

2 ответа

1

Я не уверен, если "официальный" метод добавления новых событий в календарь осуществляется через метод renderEvent. Как указано в документации, это может привести к исчезновению событий при пейджинге.

Попробуйте добавить свои события с помощью метода addEventSource, примерно так:

renderMeetings: function(){
    this.getCalendar().fullCalendar( 'removeEvents');
    var dates = this.getCalendarDateRange();
    var userId = this.controls.get('userId') || app.user.id;
    var meetings = app.data.createRelatedCollection(app.data.createBean('Users',{id:userId}), 'meetings');
    var start = moment(dates.start.toISOString()).format("Y-MM-DD HH:mm:ss");
    var end = moment(dates.end.toISOString()).format("Y-MM-DD HH:mm:ss");
    meetings.fetch({
        filter: {
            "date_start" : {"$between" : [start,end]},
        },
        success: _.bind(function(){
            this.getCalendar().fullCalendar( 'addEventSource', 
                meetings.map(function(meeting){
                    return {
                        title:meeting.get('name'),
                        start: meeting.get('date_start'),
                        end: meeting.get('date_end'),
                        color: meeting.get('name'),
                        id: meeting.id,
                        module: meeting.module
                    }
                },this));
        },this),
        limit: -1
    });
}
  • 0
    нет, все равно :( но спасибо за помощь!
0

Я нашел обходное решение, но не исправил, поэтому не буду отмечать его как ответ...

Когда я вызываю this.getCalendar().fullCalendar( 'rerenderEvents' ) после визуализации события, событие помещается правильно.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню