diff --git a/NzbDrone.Backbone/AddSeries/addSeries.css b/NzbDrone.Backbone/AddSeries/addSeries.css index 304cabcd7..7c533e25d 100644 --- a/NzbDrone.Backbone/AddSeries/addSeries.css +++ b/NzbDrone.Backbone/AddSeries/addSeries.css @@ -71,7 +71,7 @@ font-size: 16px; } -.existing-root-folder-view, h1 { +.existing-root-folder-view h1 { padding: 10px 0 20px 0; } diff --git a/NzbDrone.Backbone/Calendar/CalendarCollection.js b/NzbDrone.Backbone/Calendar/CalendarCollection.js index b824db275..d074d328b 100644 --- a/NzbDrone.Backbone/Calendar/CalendarCollection.js +++ b/NzbDrone.Backbone/Calendar/CalendarCollection.js @@ -1,6 +1,9 @@ define(['app', 'Calendar/CalendarModel'], function () { NzbDrone.Calendar.CalendarCollection = Backbone.Collection.extend({ url: NzbDrone.Constants.ApiRoot + '/calendar', - model: NzbDrone.Calendar.CalendarModel + model: NzbDrone.Calendar.CalendarModel, + comparator: function(model) { + return model.get('start'); + } }); }); \ No newline at end of file diff --git a/NzbDrone.Backbone/Calendar/CalendarCollectionTemplate.html b/NzbDrone.Backbone/Calendar/CalendarCollectionTemplate.html index 7633f71a6..b34deeca2 100644 --- a/NzbDrone.Backbone/Calendar/CalendarCollectionTemplate.html +++ b/NzbDrone.Backbone/Calendar/CalendarCollectionTemplate.html @@ -1,3 +1,6 @@ -
+
+

Upcoming

-
\ No newline at end of file +
+
+
\ No newline at end of file diff --git a/NzbDrone.Backbone/Calendar/CalendarCollectionView.js b/NzbDrone.Backbone/Calendar/CalendarCollectionView.js index 2fe112a3c..053829baf 100644 --- a/NzbDrone.Backbone/Calendar/CalendarCollectionView.js +++ b/NzbDrone.Backbone/Calendar/CalendarCollectionView.js @@ -3,8 +3,9 @@ define(['app', 'Calendar/CalendarItemView'], function (app) { NzbDrone.Calendar.CalendarCollectionView = Backbone.Marionette.CompositeView.extend({ itemView: NzbDrone.Calendar.CalendarItemView, - itemViewContainer: '#upcomingContainer', + itemViewContainer: '#events', template: 'Calendar/CalendarCollectionTemplate', + className: 'row', ui: { calendar: '#calendar' @@ -17,7 +18,7 @@ define(['app', 'Calendar/CalendarItemView'], function (app) { onCompositeCollectionRendered: function() { $(this.ui.calendar).fullCalendar({ allDayDefault: false, - //ignoreTimezone: false, + ignoreTimezone: false, weekMode: 'variable', header: { left: 'prev,next today', diff --git a/NzbDrone.Backbone/Calendar/CalendarItemTemplate.html b/NzbDrone.Backbone/Calendar/CalendarItemTemplate.html index b53ef04e9..0a64d1e30 100644 --- a/NzbDrone.Backbone/Calendar/CalendarItemTemplate.html +++ b/NzbDrone.Backbone/Calendar/CalendarItemTemplate.html @@ -1,5 +1,6 @@ -{{seriesTitle}} -{{seasonNumber}}x{{episodeNumber}} -{{episodeTitle}} -{{airTime}} -{{status}} \ No newline at end of file +
+

{{day}}

+

{{month}}

+
+

{{seriesTitle}}

+

{{startTime}}{{seasonNumber}}x{{paddedEpisodeNumber}}
{{episodeTitle}}

diff --git a/NzbDrone.Backbone/Calendar/CalendarItemView.js b/NzbDrone.Backbone/Calendar/CalendarItemView.js index e7c2a8cf8..9fc659003 100644 --- a/NzbDrone.Backbone/Calendar/CalendarItemView.js +++ b/NzbDrone.Backbone/Calendar/CalendarItemView.js @@ -7,7 +7,8 @@ define([ ], function () { NzbDrone.Calendar.CalendarItemView = Backbone.Marionette.ItemView.extend({ template: 'Calendar/CalendarItemTemplate', - tagName: 'tr', + tagName: 'div', + className: 'event', onRender: function () { NzbDrone.ModelBinder.bind(this.model, this.el); diff --git a/NzbDrone.Backbone/Calendar/CalendarModel.js b/NzbDrone.Backbone/Calendar/CalendarModel.js index 300c04d77..4cd80b5c6 100644 --- a/NzbDrone.Backbone/Calendar/CalendarModel.js +++ b/NzbDrone.Backbone/Calendar/CalendarModel.js @@ -2,10 +2,41 @@ NzbDrone.Calendar.CalendarModel = Backbone.Model.extend({ mutators: { title: function () { - return this.get('seriesTitle') + ' - ' + this.get('seasonNumber') + 'x' + this.get('episodeNumber').pad(2); + return this.get('seriesTitle'); }, allDay: function(){ return false; + }, + day: function() { + return Date.create(this.get('start')).format('{dd}'); + }, + month: function(){ + return Date.create(this.get('start')).format('{MON}'); + }, + startTime: function(){ + var start = Date.create(this.get('start')); + + if (start.format('{mm}') === '00') + return start.format('{h}{tt}'); + + return start.format('{h}.{mm}{tt}'); + }, + paddedEpisodeNumber: function(){ + return this.get('episodeNumber'); + }, + statusLevel: function() { + var status = this.get('status'); + var currentTime = Date.create(); + var start = Date.create(this.get('start')); + var end = Date.create(this.get('end')); + + if (currentTime.isBetween(start, end)) + return 'warning'; + + if (status === 'Missing') return 'danger'; + if (status === 'Ready') return 'success'; + + return 'info'; } }, defaults: {