Fix for your issues are in https://github.com/parhelium/testFullCalendar.
First, reference to instance of Calendar is needed
calendar = $('#calendar').fullCalendar({...}).data().fullCalendar;
Function using Requests.find() can be wrapped with Deps.autorun to rerun it every time Requests collection is updated:
Template.packLayout.rendered = function(){
calendar = $('#calendar').fullCalendar({
dayClick:function( date, allDay, jsEvent, view ) {
Requests.insert({title:'Request',start:date,end:date,color:'red',className:'todo'});
Session.set('lastMod',new Date());
},
eventClick:function(reqEvent,jsEvent,view){
Session.set('editingReqEvent',reqEvent.id);
Session.set('showEditEvent',true);
},
eventDrop:function(reqEvent){
Requests.update(reqEvent.id, {$set: {start:reqEvent.start,end:reqEvent.end}});
Session.set('lastMod',new Date());
},
events: function(start, end, callback) {
var events = [];
reqEvents = Requests.find({},{reactive:false});
reqEvents.forEach(function(evt){
event = {id:evt._id,title:evt.title,start:evt.start,end:evt.end,color:evt.color};
events.push(event);
})
callback(events);
},
editable:true,
weekMode: 'liquid',
}).data().fullCalendar;
Deps.autorun(function(){
allReqsCursor = Requests.find().fetch();
console.log("Autorun -> ", allReqsCursor.length)
if(calendar)
calendar.refetchEvents();
})
};