Я использую приложение fullcalendar, где при нажатии на событие открывается модальное окно с информацией о событии. В этом модале также можно изменить данные события, например, event.start, event.end и event.allDay.
Когда флажок allDay установлен, событие автоматически обновляется, чтобы представить новое состояние, однако, когда событие ранее было событием не-allDay. Данные события содержат два дополнительных свойства: oldStart и oldEnd. Эти два свойства я хочу использовать, когда для event.allDay задано значение false; Затем для event.start должно быть установлено значение oldStart, а для event.end - oldEnd.
Проблема заключается в том, что при использовании этого метода при обновлении времени начала и окончания события после установки для свойства event.allDay значения false, когда обновление обновляется, оно исчезает из представления календаря и обновляется в серверной части для представления время начала 00:00 и время окончания события start + defaultEventDuration (в моем случае это 02:00:00).
Мой код выглядит так:
function changeAllDay(id) { // Function to change allDay property of event that was clicked on
// Find corresponding event
var event = findEvent(id);
event.allDay = !event.allDay; // Change allDay value
// Set start and end time to midnight if event is allDay
if (event.allDay) {
event.oldStart = event.start;
event.oldEnd = event.end;
event.start.set('hours', 00);
event.start.set('minutes', 00);
event.end.set('hours', 00);
event.end.set('minutes', 00);
} else {
event.start = event.oldStart;
event.end = event.oldEnd;
};
updateEvent(event);
}
Функция updateEvent () выполняет API-вызов для обновления события в серверной части, а в случае успеха событие обновляется с помощью
$('#calendar').fullCalendar('updateEvent', event);
Кто-нибудь может сказать мне, что мне здесь не хватает?