Используя FullCalendar, как добавить информацию в EventObject, когда eventReceive? - PullRequest
1 голос
/ 05 ноября 2019

Я начал обнаруживать и использовать FullCalendar, но я застрял с ним.

Я хочу сделать ResourceTimeline в Месяц , сперетаскивание внешнего события (левая панель).

Тема позже будет иметь модальное значение при удалении события, чтобы выбрать, хотите ли вы, чтобы событие было с 8:00 до 12:00 или во второй половине дня с 12:00. до 6 вечера.

Итак, во-первых, я хотел бы сделать простое событиеReceive без модального соединения, чтобы посмотреть, смогу ли я обновить событие, когда оно сброшено.

Но, похоже, я не могу, что мне делать? делать неправильно ?

Из того, что я могу понять, похоже, что при отбрасывании события в представлении месяца событие в параметре, отправляемом в eventReceive, изменяется.

eventReceive(info) {
  info.event.start = moment(info.event.start).add(8, 'hours').format('YYYY-MM-DD hh:mm:ss');
  // var c = confirm('OK = morning, Cancel = aprem');
  // if (c) {
  //   console.log("morning !")
  // } else {
  //   console.log("afternoon !")
  // }
}

События являются очень простыми, потому что яхотел завершить их всякий раз, когда я помещаю их в календарь

new Draggable(listofEvents, {
  itemSelector: '.draggable',
  eventData(event) {
    return {
      title: event.innerText,
      activite: event.dataset.activite,
      allDayDefault: false,
    }
  },
})

Я даже пытался заставить allDayDefault в false, но это ничего не меняет ...

Вот кодовая ручкапроект в его текущем состоянии: https://codepen.io/nurovek/pen/zYYWGyX?editors=1000

Извините, если в моем сообщении отсутствует информация, я не привык задавать вопросы по SO. Если этого не хватает, я постараюсь быть более точным, если вы спросите меня, конечно!

1 Ответ

0 голосов
/ 06 ноября 2019

Согласно документации , общие свойства события (такие как "начало", "конец", заголовок "и т. Д.) только для чтения . Поэтому для изменения свойства послесобытие создано, вы должны запустить один из "set" методов .

Так что ваша идея будет работать, если вы используете метод setDates:

eventReceive(info) {
  info.event.setDates(moment(info.event.start).add(8, 'hours').toDate(), info.event.end, { "allDay": false } )
  console.log(info.event);
}

Демонстрация: https://codepen.io/ADyson82/pen/dyymawy?editors=1000


PS Возможно, вы заметили, что я также внес несколько других небольших изменений в ваш CodePen, в основном для исправления всех ссылок на файлы CSS и JS, поскольку он генерировал все виды консолиошибки. Эти ошибки были вызваны тем, что ссылки были неправильными или просто ссылались на что-то несуществующее, и по какой-то причине вы также использовали файлы из двух разных версий fullCalendar (4.3.0 и 4.3.1), что никогда не является хорошей идеей, еслиВы хотите обеспечить полную совместимость.

...