'use strict'; define(['app', 'Calendar/CalendarItemView'], function (app) { NzbDrone.Calendar.CalendarCollectionView = Backbone.Marionette.CompositeView.extend({ itemView: NzbDrone.Calendar.CalendarItemView, itemViewContainer: '#events', template: 'Calendar/CalendarCollectionTemplate', className: 'row', ui: { calendar: '#calendar' }, initialize: function (context, action, query, collection) { this.collection = collection; this.calendar = new NzbDrone.Calendar.CalendarCollection(); }, onCompositeCollectionRendered: function() { $(this.ui.calendar).fullCalendar({ allDayDefault: false, ignoreTimezone: false, weekMode: 'variable', timeFormat: 'h(:mm)tt', header: { left: 'prev,next today', center: 'title', right: 'month,basicWeek' }, buttonText: { prev: '', next: '' }, events: this.getEvents, eventRender: function (event, element) { $(element).addClass(event.statusLevel); $(element).children('.fc-event-inner').addClass(event.statusLevel); element.popover({ title: '{seriesTitle} - {season}x{episode} - {episodeTitle}'.assign({ seriesTitle: event.seriesTitle, season: event.seasonNumber, episode: event.episodeNumber.pad(2), episodeTitle: event.episodeTitle }), content: event.overview, placement: 'bottom', trigger: 'manual' }); }, eventMouseover: function(event, jsEvent, view){ $(this).popover('show'); }, eventMouseout: function(event, jsEvent, view){ $(this).popover('hide'); } }); NzbDrone.Calendar.CalendarCollectionView.Instance = this; $(this.ui.calendar).fullCalendar('addEventSource', this.calendar.toJSON()); }, getEvents: function(start, end, callback){ var bbView = NzbDrone.Calendar.CalendarCollectionView.Instance; var startDate = Date.create(start).format(Date.ISO8601_DATETIME); var endDate = Date.create(end).format(Date.ISO8601_DATETIME); bbView.calendar.fetch({ data:{ start: startDate, end: endDate }, success:function (calendarCollection) { callback(calendarCollection.toJSON()); } }); } }); });