jfreak53
jfreak53

Reputation: 2349

fullCalendar only display events on agendaView

I'm trying to get the fullCalendar JS application to display events only when on the agendaView view, not on the month view.

This is my current code. The problem is the events function is only called once, on the initial page load. According to documentation (and another site I have with fullCalendar) this function should call every time I change view, or date range. It does not.

$('#calendar').fullCalendar({
    events: function ( start, end, timezone, callback ) {
        var view = $('#calendar').fullCalendar('getView');
        console.log(view.name);
        if(view.name == 'agendaDay') {
            $.ajax({
                type: 'POST',
                url: 'index.php?events=true',
                data: {
                    start: start,
                    end: end
                },
                async: true,
                success: function ( data ) {
                         callback(data);
                }
            });
        }
    },
    dayClick: function ( date, jsEvent, view ) {
        if(view.name == 'month' && jsEvent.currentTarget.className.indexOf('date-disabled') <= -1) {
            $('#calendar').fullCalendar('changeView', 'agendaDay');
            $('#calendar').fullCalendar('gotoDate', date);
        } else if(view.name == 'agendaDay') {
            var check = moment(date).format('YYYY-MM-DD');
            var today = moment(new Date()).format('YYYY-MM-DD');
            if(check > today) {
                alert(date);
            }
        }
    },
    header: {
        left:   'title',
        center: '',
        right:  'today month,agendaDay prev,next'
    },
    dayRender: function ( date, cell ) {
        var check = moment(date).format('YYYY-MM-DD');
        var today = moment(new Date()).format('YYYY-MM-DD');
        if(check <= today) cell[0].className += ' date-disabled';
    }
});

I know this for fact as the console.log only logs once, the word month. So it's only called when I refresh the page, first load it. Not when changing views which it should.

Upvotes: 0

Views: 749

Answers (1)

jfreak53
jfreak53

Reputation: 2349

I was missing the lazyFetching option. This must be a new option in v2 as I was not expecting it.

http://arshaw.com/fullcalendar/docs/event_data/lazyFetching/

My code was correct. I simply needed to tell fullCalendar to get the events at EVERY change of the view and anything else that happened event wise.

lazyFetching: false,

This now works with my code.

Upvotes: 1

Related Questions