Я использую 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';
},