$(document).ready(function(){
calendar();
});
$(document).on(‘page:load’, function() {
calendar();
});
var calendar = function(){
// page is now ready, initialize the calendar... var current_resource = function(){ return window.location.href.match(/<%=bookable_name%>\/(\d+)\/bookings/)[1]; }; var today_or_later = function(){ var check = $('#calendar').fullCalendar('getDate'); var today = new Date(); if(check < today) { return false; } else { return true; }; }; $('#calendar').fullCalendar({ header: { left: 'prev,next today', center: 'title', right: 'month,agendaWeek,agendaDay' }, eventSources: [{ url: '/<%=bookable_name%>/'+current_resource()+'/bookings/', }], selectable: { month: false, agenda: true } , editable: true, eventStartEditable: true, eventDurationEditable: true, eventDrop: function(booking) { var length = (booking.end-booking.start)/(3600000); function updateEvent(booking) { $.ajax( '/<%=bookable_name%>/'+current_resource()+'/bookings/'+booking.id, { 'type': 'PATCH', data: { booking: { start_time: "" + booking.start, length: length } } } ); }; updateEvent(booking); } , eventResize: function(booking) { var length = (booking.end-booking.start)/(3600000); function updateEvent(booking) { $.ajax( '/<%=bookable_name%>/'+current_resource()+'/bookings/'+booking.id, { 'type': 'PATCH', data: { booking: { start_time: "" + booking.start, length: length } } } ); }; updateEvent(booking); } , dayClick: function(date, allDay, jsEvent, view) { // console.log(view.name); if (view.name === "month") { $('#calendar').fullCalendar('gotoDate', date); $('#calendar').fullCalendar('changeView', 'agendaDay'); } } , select: function(start, end, allDay) { if (window.location.href.match(/new/)) { if(today_or_later()) { var length = (end-start)/(3600000); $('#calendar').fullCalendar('renderEvent', { start: start, end: end, allDay: false } ); jQuery.post( '/<%=bookable_name%>/'+current_resource()+'/bookings', { booking: { start_time: start, length: length, } } ); } else { // alert("help!"); } } } });
};