Фильтрация данных календаря fullcalendar. Некорректно работает обновление через $.pjax.reload

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
yura1976
Сообщения: 130
Зарегистрирован: 2012.08.06, 13:24

Фильтрация данных календаря fullcalendar. Некорректно работает обновление через $.pjax.reload

Сообщение yura1976 »

Есть календарь fullcalendar (v.5). Есть форма с критериями фильтрации. Если я в этой форме выбираю какой-то критерий, то календарь пропадает. Если после этого обновить страницу, то календарь появляется. Понимаю, что проблема скорее всего в pjax, но не соображу как ее решить. Подскажите, пожалуйста, если кто знает.
В представлении:

Код: Выделить всё

 
 <?php echo $this->render('_searchcalendar', ['model' => $searchModel]); ?>
    <?php Pjax::begin(['id' => 'list_container']); ?>
    <?php Pjax::end(); ?>
    
js:

Код: Выделить всё

document.addEventListener('DOMContentLoaded', function() {
    var calendarEl = document.getElementById('list_container');
    var calendar = new FullCalendar.Calendar(calendarEl, {
      initialDate: '{$initialDate}',
      locale: 'ru',
      headerToolbar: {
        'left' : false,
        center: 'prev,title,next',
        right: 'dayGridMonth,listYear'
      },
      editable: false,
      selectable: true,
      businessHours: false,
      dayMaxEvents: true, // allow "more" link when too many events   
      events: '{$url}',
        eventClick: function(info) {
           ….
      }
    });
    calendar.render();
});
В _searchcalendar.php форма, в ней есть поля - критерии фильтрации. В частности селект с id=webinarsearch-speaker_ids

Код: Выделить всё

$('#webinarsearch-speaker_ids').on('change',function (e){
    e.preventDefault();
    var form = $('.searchform');
    var start = $('.fc-daygrid-day:first').data('date');
    var end = $('.fc-daygrid-day:last').data('date');
    if(typeof start == undefined || start == '') {
        start = new Date();
    }
     $.pjax.reload({
        container: '#list_container',
        async: false,
        timeout: false,
        data: {
            … здесь передаваемые данные
        },
        url: form.attr('action')
    });
});
Ответить