Fullcalendar грешно изобразява събитие

Внедрявам 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();
},

Как изглежда, когато календарът е зареден Как изглежда, когато плъзна малко събитието (или презаредя събитията в календара) - това е правилното време и продължителност на събитието

Някой знае ли как да поправя това? Също така забележете, че сивите зони на „неработните“ часове са неуместни

РЕДАКТИРАНЕ: Малко стесних проблема - възниква дори когато просто се опитвам да изобразя статично събитие

РЕДАКТИРАНЕ 2: опростена настройка на календари, все същата...

EDIT3: когато опитах кода на празна страница, той работи както се очакваше, така че календарът трябва по някакъв начин да пречи на другия ми код... някакви идеи как?


person Charlestone    schedule 09.02.2018    source източник


Отговори (2)


Не съм сигурен дали "официалният" метод за добавяне на нови събития към календара е чрез метода 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
    });
}
person Ádám Lambert    schedule 09.02.2018

Намерих заобиколно решение, но не и решение, така че няма да го маркирам като отговор...

Когато извикам this.getCalendar().fullCalendar( 'rerenderEvents' ) след изобразяване на събитието, събитието е поставено правилно.

person Charlestone    schedule 09.02.2018