Существует ли способ предварительной фильтрации событий (для конкретного имени события) для конечных пользователей без их привлечения (без флажков или раскрывающихся списков) (канал JSON) - PullRequest
0 голосов
/ 03 октября 2019

(Привет всем. Это мое первое сообщение с использованием режима управляемой публикации, поэтому, пожалуйста, потерпите меня)

Я уже некоторое время использую Fullcalendar для отображения событий из каналов JSON для нескольких календарей (Один календарь на канал JSON). Эти каналы JSON являются преобразованиями каналов .ics с помощью ical.js для работы в полном календаре. Однако теперь мне нужно разбить эти календари на списки и отфильтровать их на основе определенного текста в именах событий следующим образом:

Полный список событий.

January 1
   lunch
   gathering
   outing
   dinner
January 2
   lunch
   gathering
   outing
   dinner
January 3
   lunch
   closing

отфильтрованный список событий для веб-страницы (отфильтрованный для обеда).

January 1
   lunch
January 2
   lunch
January 3
   lunch

Можно ли выполнять фильтрацию по заголовку события с помощью Fullcalendar, если календарь основан на канале, а не на ручном списке событий?

Я использую fullcalendar 3.9.0 (я могу перейти на 3.10). Это самая последняя версия, которую я могу запустить из-за того, что для работы с версией 4 необходимо настроить другое программное обеспечение.

Я также использую скрипт mozilla ical.js для преобразования каналов ical в каналы JSON.

Я ожидаю, что на самом деле у меня могут быть две области, в которых я мог бы фильтровать:

  1. внутри ical.js или ical_events.js

  2. в моей конфигурации для полного календаря (возможно, в разделе defaultView)

Вот часть кода, которую я использую для вызова календаря:

ics_sources = [
  {
    url:'https://www.example.com/calendaring/15/',
    event_properties: {
      color:'#7a9b49'
    }
  },
]

function data_req (url, callback) {
    req = new XMLHttpRequest()
    req.addEventListener('load', callback)
    req.open('GET', url)
    req.send()
}

function add_recur_events() {
    if (sources_to_load_cnt < 1) {
        $('#calendar').fullCalendar('addEventSource', expand_recur_events)
    } else {
        setTimeout(add_recur_events, 30)
    }
}

function load_ics(ics){
    data_req(ics.url, function(){
        $('#calendar').fullCalendar('addEventSource', fc_events(this.response, ics.event_properties))
        sources_to_load_cnt -= 1
    })
}

$(document).ready(function() {
    $('#calendar').fullCalendar({
        header: {
            left: '',
            center: '',
            right: ''         
        },
        viewDisplay: function(view) {
            parent.setIframeHeight(iframeId) ;
        },
        eventClick: function(event) { 
          window.open(event.url,);
          return false;
        },
        defaultView: $(window).width() < 765 ? 'listYear':'listYear', 
        nowIndicator: false, 
        eventLimit: 4, 
        fixedWeekCount: false, 
        listDayFormat: 'MMMM Do',
        listDayAltFormat: false,
        noEventsMessage: "No Currently Scheduled Events"
    })

    sources_to_load_cnt = ics_sources.length
    for (ics of ics_sources) {
        load_ics(ics)
    }
    add_recur_events()
})

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

Фактические результаты: в настоящее время у меня нет предварительной фильтрации.

...