FullCalendar: сохранить свойства дня после следующего / предыдущего клика

0

Я использую FullCalendar в качестве интерфейса для пользователей, чтобы назначать встречи. Когда я загружаю календарь, я рисую отдельные дни, основываясь на количестве назначений, уже запланированных в этот день. Здесь код:

 function paintCalendar (dailyPercentage) {
    $.each(dailyPercentage, function(){
            if (this.percentage >= 65) {
                $cell = $('td.fc-future[data-date="' + this.date.substring(0, 10) + '"]');
                $cell.addClass('fc-high-traffic');
                $calendar.fullCalendar('refetchEvents');
            } else if (this['percentage'] >= 35) {
                $cell = $('td.fc-future[data-date="' + this.date.substring(0, 10) + '"]');
                $cell.addClass('fc-medium-traffic');
                $calendar.fullCalendar('refetchEvents');
            }

    });
}

Каждый из классов, которые я добавляю, имеет связанный с ним фоновый цвет.

Однако, когда пользователь нажимает кнопки prev, next или today, календарь полностью перезагружается, а мои добавленные классы удаляются.

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

Есть ли способ инициировать событие после обновления календаря, похожего на этот ответ?

Моя функция работает отлично, мне просто нужно событие, чтобы вызвать его выполнение.

Теги:
fullcalendar
repaint

3 ответа

0
Лучший ответ

Решение этого вопроса подходит для решения этой проблемы. Я просто добавил триггер в разных местах для обработки конкретных изменений в соответствии с моей проблемой.

fullcalendar.js

function prev() {
    renderView(-1);
    trigger('complete', null, true);
}


function next() {
    renderView(1);
    trigger('complete', null, true);
}


function today() {
    date = new Date();
    renderView();
    trigger('complete', null, true);
}

мой javascript

complete: function () {
        paintCalendar(dailyPercentage);
    }
  • 1
    Рад, что вы разобрались, посмотрите на eventAfterRender . Это может подходить к вашей ситуации и, безусловно, будет лучше, чем смена источника (что создаст проблемы, если вы когда-нибудь обновитесь и забудете о внесенных вами изменениях)
  • 0
    +1 за хорошие предложения. Я не думаю, что eventAfterRender - это то, что я ищу, поэтому я просто очень хорошо задокументирую свои изменения
Показать ещё 1 комментарий
1

Вероятно, вам нужно использовать eventRender или eventAfterRender.

Я не совсем понимаю ваш вопрос, но вы можете использовать эти обратные вызовы для добавления классов к своим событиям

Также refetchEvents, вероятно, не должны использоваться в цикле, так как это, вероятно, приведет к нескольким вызовам сервера

  • 0
    Спасибо, но я уже понял это. Моя проблема была не в событиях, а в отдельных днях. Я бы использовал эту функцию, чтобы добавить цвет фона для этой ячейки, и когда я буду перемещаться, ячейки календаря будут сброшены. Ваш последний пункт был хорош, хотя, я перенесу этот призыв к обновлению.
0

Если ваша проблема связана с событием, объект-объект перерисовывает и пропускает ранее заданный элемент, например, цвет фона и классы, взгляните на http://arshaw.com/fullcalendar/docs/event_data/Event_Object/

Ещё вопросы

Сообщество Overcoder
Наверх
Меню