Как изменить ресурс (ы) событий

#fullcalendar #fullcalendar-4

#полный календарь #полный календарь-4

Вопрос:

Обработка ресурса изменилась в FullCalender 4.0.

В FullCalendar 3.x я изменил ресурс события, используя:

 event.resourceId = newResourceId;
  

В FullCalendar 4.0 я не могу найти правильный способ…
Мой текущий код:

 var calendar_event = calendar.getEventById(data.event.id)
if (calendar_event) {
  calendar_event.setProp('title', data.event.title)
  calendar_event.setProp('resourceIds', [data.event.resourceId])
}
  

setProp кажется, это неправильный метод, поскольку впоследствии событие не отражает изменения в таблице, только заголовок был изменен на новый.

Параметр для getResources() , например setResources() , не существует.

Официальная документация по https://fullcalendar.io/docs/resource-data включает только выборку ресурса, а не программную установку нового для существующего события.

Руководство по миграции https://fullcalendar.io/docs/upgrading-from-v3 упоминаются только методы setProp , setExtendedProp setStart , setEnd setDates setAllDay moveStart , moveEnd moveDates updateEvent ,,, , для замены,,,,,,,,,,,,,,,,,,,,,,, — ресурсы отсутствуют.

Мой текущий обходной путь — удалить и добавить событие снова:

 calendar.getEventById(data.event.id).remove()
calendar.addEvent(data.event)
  

Как переместить событие на другой ресурс без повторной загрузки и инициализации всего события?

Комментарии:

1. Вы нашли решение для этого? Вы правы в том, что setProp не работает, при просмотре исходного кода setProp проверяет константу с именем NON_DATE_PROPS, и идентификаторов ресурсов в ней нет. Я еще не перенес, но с этой проблемой я столкнусь. Настройки: github.com/fullcalendar/fullcalendar/blob/master/src/core/api / … NON_DATE_PROPS: github.com/fullcalendar/fullcalendar/blob/master/src/core /…

2. @AllyMurray Пока нет. В настоящее время я использую обходной путь, упомянутый выше. Я только что зарегистрировал проблему в fullcalendar-scheduler ( github.com/fullcalendar/fullcalendar-scheduler/issues/514 ).

3. Теперь это возможно с помощью Event::setResources в версии 4.0.2

Ответ №1:

В версии 4.0.2 было добавлено редактирование ресурсов события.

В документации описывается использование следующим образом:

По идентификатору:

 var event = calendar.getEventById('1');
event.setResources([ 'a' ]); // set a single resource
event.setResources([ 'a', 'b' ]); // set multiple
  

По ресурсу:

 var resourceA = calendar.getResourceById('a');
var resourceB = calendar.getResourceById('b');

var event = calendar.getEventById('1');
event.setResources([ resourceA, resourceB ]);