Есть ли способ реализовать фильтр событий в Fullcalendar v4 с помощью пользовательских кнопок? - PullRequest
0 голосов
/ 12 мая 2019

Я мигрирую из Bootstrap DateTimePicker в Fullcalendar v4, и моя проблема заключается в фильтрации событий.

С DateTimePicker у меня было гораздо больше свободы для манипулирования событиями, отображаемыми в календаре (также кажется, что Fullcalendar v3 имел больше свободы, чем v4).

Я не могу найти метод, который бы просто помещал события из массива на экран. Пока что так выглядит мой код

            var calendar = new FullCalendar.Calendar(element, {
                plugins: [ 'dayGrid', 'timeGrid', 'list', 'interaction', 'bootstrap' ],
                themeSystem: 'bootstrap',
                events : function(info, successCallback, failureCallback) {
                    console.log('events');
                    self.eventsLoadingRequest(true);
                    calendarService.getEvents(moment(info.start), moment(info.end)).then(
                        function(result) {
                            ko.utils.arrayPushAll(self.events, self.parseByType(result));
                            self.eventsLoadingRequest(false);
                            successCallback(ko.utils.arrayMap(self.events(), function(item) { return item.serialize() }));
                        },
                        function(error) {   
                        }
                    );
                },
                customButtons: {
                    filterEvents: {
                        text: 'Events',
                        click: function() {
                            self.eventsFilter(true, false);
                        }
                    },
                    filterAll: {
                        text: 'All',
                        click: function() {
                            self.eventsFilter(true, true);
                        }
                    },
                    filterGoals: {
                        text: 'Goals',
                        click: function() {
                            self.eventsFilter(false, true);
                        }
                    }
                },
                header: {
                    left: 'title',
                    right: 'prev,today,next dayGridMonth,timeGridWeek,timeGridDay,listWeek, filterEvents,filterAll,filterGoals'
                },
                navLinks: true,
                editable: true,
                eventLimit: true
            });

И функция eventsFilter объединяет два массива в один. Можно ли вручную позвонить events : function(info, successCallback, failureCallback)?

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

...