Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Refetch events when switching fullcalendar views

I'm using 3 views in my calendar: month, agendaWeek, and agendaDay. After I add an event, I call refetchEvents to display the new event. If I add an event from agendaWeek or agendaDay, the refetch will of course grab the events for the week or day. If I then switch to the month view, I only have the events for the week or the day.

I've tried adding a refetchEvents on viewDisplay. The problem with this is that it runs on the initial load which causes the duplication of all the events. Is there a way I can stop refetchEvents from being called during the calendar load?

Is there any other way to force the refetch when switching views?

like image 718
Paul W Avatar asked Nov 29 '22 18:11

Paul W


2 Answers

When creating fullcalendar there is the viewDisplay method which is fired whenever the view is changed. Logically you can use this as a viewChanged event. For example:

$('#calendar').fullCalendar({
    ... 
    viewDisplay: function(view) { alert('viewDisplay(' + view + ')'); }
});

It appears that as of version 1.6.3 the correct callback to use is viewRender

$('#calendar').fullCalendar({
    ...
    viewRender: function(view, element) { alert('new view: ' + view.name); }
});
like image 80
user730470 Avatar answered Dec 10 '22 23:12

user730470


Sounds like a good idea for an enhancment to fullcalendar library itself - the library could provide callback function for "viewChanged" or even "viewChanging" event. Such thing is really missing, because, if you need to create "AJAX deep linking", you also need to know when the view has changed.

Update: what happens if you change the "lazyFetching" option http://arshaw.com/fullcalendar/docs/event_data/lazyFetching/ of your calendar after you add the event?

like image 25
naivists Avatar answered Dec 10 '22 22:12

naivists