Фильтр Fullcalendar 4 от внешней функции - PullRequest
0 голосов
/ 07 октября 2019

Я хочу отфильтровать календарь от внешней функции с помощью полной версии календаря 4. Но я не могу получить доступ к экземпляру календаря. Кто-нибудь знает, как я могу это сделать?

Я думаю, что нужно использовать: var mycalendar = calendar.view;

В данный момент я могу фильтровать, но мне нужно снова создать календарь. Я хотел бы использовать исходный загруженный календарь и просто обновить результаты.

function CalendarModalFilter() {

  var post = $('#calendar_filter_form').serialize();
  let searchParams = new URLSearchParams(post);
  var calendarEl = document.getElementById('kt_calendar');
  var calendar = new FullCalendar.Calendar(calendarEl, {
    plugins: ['interaction', 'dayGrid', 'timeGrid', 'list'],
  });

  NotifyPage('Filtered Calendar!', 'success');

  var FilterSource = {
    url: './demo2/contents/calendar/get.php',
    method: 'POST',
    extraParams: {
      source: searchParams.get("calType")
    }
  };

  var eventSources = calendar.getEventSources();

  var len = eventSources.length;
  for (var i = 0; i < len; i++) {
    eventSources[i].remove();
  }

  calendar.addEventSource(FilterSource);
  calendar.refetchEvents();
  calendar.render();
};

Это часть инициализации календаря:

var initCalendar = function() {

  var todayDate = moment().startOf('day');
  var YM = todayDate.format('YYYY-MM');
  var YESTERDAY = todayDate.clone().subtract(1, 'day').format('YYYY-MM-DD');
  var TODAY = todayDate.format('YYYY-MM-DD');
  var TOMORROW = todayDate.clone().add(1, 'day').format('YYYY-MM-DD');

  var calendarEl = document.getElementById('kt_calendar');
  var containerEl = document.getElementById('kt_calendar_external_events');

  var Draggable = FullCalendarInteraction.Draggable;

  new Draggable(containerEl, {
    itemSelector: '.fc-draggable-handle',
    eventData: function(eventEl) {
      return $(eventEl).data('event');
    }
  });

  var calendar = new FullCalendar.Calendar(calendarEl, {
    plugins: [ 'interaction', 'dayGrid', 'timeGrid', 'list' ],
    eventSources: [fcSources.planificacion],
    //...

1 Ответ

1 голос
/ 07 октября 2019

Если вы используете vanilla fullCalendar, то в приведенном выше примере кода calendar означает экземпляр календаря (при условии, что переменная находится в области видимости).

Демонстрация: https://codepen.io/ADyson82/pen/xxxbKxj - обратите внимание, как я могу вызывать методы render() и getEvents(), используя переменную календаря, возвращаемую из new FullCalendar.Calendar.

NB calendar.view возвращает вам текущий объект вида , в частности.

...