Как настроить отображение всех событий календаря Google в фоновом режиме? - PullRequest
0 голосов
/ 01 апреля 2019

Я использую FullCalendar 4, и я импортирую события из своего календаря Google. Я хочу, чтобы они отображались в календаре как фоновые события полного дня, чтобы просто показать, что я занят, а не показывать, что это за событие и как долго оно продолжается. Импорт событий и их отображение обычно работают нормально.

Я пытался использовать EventRender для изменения свойства рендеринга следующим образом

eventRender: function(info) {
    info.event.setProp( rendering, 'background' );
}

Это, кажется, разрушает событие и ничего не показывает, когда я пытаюсь получить доступ к событию после обновления для записи даты начала, я получаю следующее.

Failure parsing JSON {message: "Failure parsing JSON", xhr: XMLHttpRequest}

Выполнение этого до вызова setProp правильно выводит дату.

Я заметил в документах, что при использовании EventRender 'Функция также может возвращать новый элемент, который будет использоваться вместо этого для рендеринга. Для фоновых событий на весь день вы должны обязательно вернуть <td>. '

Я не могу найти примеры того, как это сделать, в новых документах или примерах?

Я также пытался создать для каждого цикла в EventsRender и DatesRender, чтобы откатить все события и создать новое фоновое событие для каждого существующего события, а затем уничтожить существующее. Это не похоже на работу, хотя. По завершении в EventsRender я получаю постоянный цикл, так как функция info.event.remove();, кажется, никогда не работает. В DatesRender я получаю новое фоновое событие, но только при втором рендеринге месяца, и оно не удаляет существующее. См. Ниже мой код DatesRender.

datesRender: function(info) {
            //now recreate events so they are all background events
            var events = calendar.getEvents();
            console.log("Dates Render!");
            $.each(events, function( index, event ) {
                //get event date
                var date = event.start;
                console.log(date);
                //remove original event
                event.remove();
                //add new as a background event
                calendar.addEvent({
                    title: 'dynamic event',
                    start: date,
                    allDay: true,
                    rendering: 'background',
                    backgroundColor: '#B2B2B2'
                });
            });

        },

Я, очевидно, делаю что-то неясное. Кто-нибудь может указать мне правильное направление?

ОБНОВЛЕНО

Как и предполагалось, вы можете использовать метод eventDataTransfer , чтобы сделать это действительно просто!

eventDataTransform: function(eventData) {
            eventData.rendering = 'background';
        },

1 Ответ

1 голос
/ 01 апреля 2019

Как и предполагалось, вы можете использовать метод eventDataTransfer , чтобы сделать это действительно просто!

eventDataTransform: function(eventData) {
            eventData.rendering = 'background';
        },
...