|
|
|
@ -4,113 +4,149 @@ var Backgrid = require('backgrid');
|
|
|
|
|
var SeasonCollection = require('../Series/SeasonCollection');
|
|
|
|
|
|
|
|
|
|
module.exports = Marionette.Layout.extend({
|
|
|
|
|
template : 'SeasonPass/SeriesLayoutTemplate',
|
|
|
|
|
ui : {
|
|
|
|
|
template : 'SeasonPass/SeriesLayoutTemplate',
|
|
|
|
|
|
|
|
|
|
ui : {
|
|
|
|
|
seasonSelect : '.x-season-select',
|
|
|
|
|
expander : '.x-expander',
|
|
|
|
|
seasonGrid : '.x-season-grid',
|
|
|
|
|
seriesMonitored : '.x-series-monitored'
|
|
|
|
|
},
|
|
|
|
|
events : {
|
|
|
|
|
"change .x-season-select" : '_seasonSelected',
|
|
|
|
|
"click .x-expander" : '_expand',
|
|
|
|
|
"click .x-latest" : '_latest',
|
|
|
|
|
"click .x-all" : '_all',
|
|
|
|
|
"click .x-monitored" : '_toggleSeasonMonitored',
|
|
|
|
|
"click .x-series-monitored" : '_toggleSeriesMonitored'
|
|
|
|
|
|
|
|
|
|
events : {
|
|
|
|
|
'change .x-season-select' : '_seasonSelected',
|
|
|
|
|
'click .x-expander' : '_expand',
|
|
|
|
|
'click .x-latest' : '_latest',
|
|
|
|
|
'click .x-all' : '_all',
|
|
|
|
|
'click .x-monitored' : '_toggleSeasonMonitored',
|
|
|
|
|
'click .x-series-monitored' : '_toggleSeriesMonitored'
|
|
|
|
|
},
|
|
|
|
|
regions : {seasonGrid : '.x-season-grid'},
|
|
|
|
|
initialize : function(){
|
|
|
|
|
|
|
|
|
|
regions : {
|
|
|
|
|
seasonGrid : '.x-season-grid'
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
initialize : function() {
|
|
|
|
|
this.listenTo(this.model, 'sync', this._setSeriesMonitoredState);
|
|
|
|
|
this.seasonCollection = new SeasonCollection(this.model.get('seasons'));
|
|
|
|
|
this.expanded = false;
|
|
|
|
|
},
|
|
|
|
|
onRender : function(){
|
|
|
|
|
if(!this.expanded) {
|
|
|
|
|
|
|
|
|
|
onRender : function() {
|
|
|
|
|
if (!this.expanded) {
|
|
|
|
|
this.ui.seasonGrid.hide();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
this._setExpanderIcon();
|
|
|
|
|
this._setSeriesMonitoredState();
|
|
|
|
|
},
|
|
|
|
|
_seasonSelected : function(){
|
|
|
|
|
|
|
|
|
|
_seasonSelected : function() {
|
|
|
|
|
var seasonNumber = parseInt(this.ui.seasonSelect.val(), 10);
|
|
|
|
|
if(seasonNumber === -1 || isNaN(seasonNumber)) {
|
|
|
|
|
|
|
|
|
|
if (seasonNumber === -1 || isNaN(seasonNumber)) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
this._setSeasonMonitored(seasonNumber);
|
|
|
|
|
},
|
|
|
|
|
_expand : function(){
|
|
|
|
|
if(this.expanded) {
|
|
|
|
|
|
|
|
|
|
_expand : function() {
|
|
|
|
|
if (this.expanded) {
|
|
|
|
|
this.ui.seasonGrid.slideUp();
|
|
|
|
|
this.expanded = false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
else {
|
|
|
|
|
this.ui.seasonGrid.slideDown();
|
|
|
|
|
this.expanded = true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
this._setExpanderIcon();
|
|
|
|
|
},
|
|
|
|
|
_setExpanderIcon : function(){
|
|
|
|
|
if(this.expanded) {
|
|
|
|
|
|
|
|
|
|
_setExpanderIcon : function() {
|
|
|
|
|
if (this.expanded) {
|
|
|
|
|
this.ui.expander.removeClass('icon-chevron-right');
|
|
|
|
|
this.ui.expander.addClass('icon-chevron-down');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
else {
|
|
|
|
|
this.ui.expander.removeClass('icon-chevron-down');
|
|
|
|
|
this.ui.expander.addClass('icon-chevron-right');
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
_latest : function(){
|
|
|
|
|
var season = _.max(this.model.get('seasons'), function(s){
|
|
|
|
|
|
|
|
|
|
_latest : function() {
|
|
|
|
|
var season = _.max(this.model.get('seasons'), function(s) {
|
|
|
|
|
return s.seasonNumber;
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
this._setSeasonMonitored(season.seasonNumber);
|
|
|
|
|
},
|
|
|
|
|
_all : function(){
|
|
|
|
|
var minSeasonNotZero = _.min(_.reject(this.model.get('seasons'), {seasonNumber : 0}), 'seasonNumber');
|
|
|
|
|
|
|
|
|
|
_all : function() {
|
|
|
|
|
var minSeasonNotZero = _.min(_.reject(this.model.get('seasons'), { seasonNumber : 0 }), 'seasonNumber');
|
|
|
|
|
|
|
|
|
|
this._setSeasonMonitored(minSeasonNotZero.seasonNumber);
|
|
|
|
|
},
|
|
|
|
|
_setSeasonMonitored : function(seasonNumber){
|
|
|
|
|
|
|
|
|
|
_setSeasonMonitored : function(seasonNumber) {
|
|
|
|
|
var self = this;
|
|
|
|
|
|
|
|
|
|
this.model.setSeasonPass(seasonNumber);
|
|
|
|
|
|
|
|
|
|
var promise = this.model.save();
|
|
|
|
|
promise.done(function(data){
|
|
|
|
|
|
|
|
|
|
promise.done(function(data) {
|
|
|
|
|
self.seasonCollection = new SeasonCollection(data);
|
|
|
|
|
self.render();
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
_toggleSeasonMonitored : function(e){
|
|
|
|
|
|
|
|
|
|
_toggleSeasonMonitored : function(e) {
|
|
|
|
|
var seasonNumber = 0;
|
|
|
|
|
var element;
|
|
|
|
|
if(e.target.localName === 'i') {
|
|
|
|
|
|
|
|
|
|
if (e.target.localName === 'i') {
|
|
|
|
|
seasonNumber = parseInt(this.$(e.target).parent('td').attr('data-season-number'), 10);
|
|
|
|
|
element = this.$(e.target);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
else {
|
|
|
|
|
seasonNumber = parseInt(this.$(e.target).attr('data-season-number'), 10);
|
|
|
|
|
element = this.$(e.target).children('i');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
this.model.setSeasonMonitored(seasonNumber);
|
|
|
|
|
|
|
|
|
|
var savePromise = this.model.save().always(this.render.bind(this));
|
|
|
|
|
element.spinForPromise(savePromise);
|
|
|
|
|
},
|
|
|
|
|
_afterToggleSeasonMonitored : function(){
|
|
|
|
|
|
|
|
|
|
_afterToggleSeasonMonitored : function() {
|
|
|
|
|
this.render();
|
|
|
|
|
},
|
|
|
|
|
_setSeriesMonitoredState : function(){
|
|
|
|
|
|
|
|
|
|
_setSeriesMonitoredState : function() {
|
|
|
|
|
var monitored = this.model.get('monitored');
|
|
|
|
|
|
|
|
|
|
this.ui.seriesMonitored.removeAttr('data-idle-icon');
|
|
|
|
|
if(monitored) {
|
|
|
|
|
|
|
|
|
|
if (monitored) {
|
|
|
|
|
this.ui.seriesMonitored.addClass('icon-nd-monitored');
|
|
|
|
|
this.ui.seriesMonitored.removeClass('icon-nd-unmonitored');
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
} else {
|
|
|
|
|
this.ui.seriesMonitored.addClass('icon-nd-unmonitored');
|
|
|
|
|
this.ui.seriesMonitored.removeClass('icon-nd-monitored');
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
_toggleSeriesMonitored : function(){
|
|
|
|
|
var savePromise = this.model.save('monitored', !this.model.get('monitored'), {wait : true});
|
|
|
|
|
|
|
|
|
|
_toggleSeriesMonitored : function() {
|
|
|
|
|
var savePromise = this.model.save('monitored', !this.model.get('monitored'), {
|
|
|
|
|
wait : true
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
this.ui.seriesMonitored.spinForPromise(savePromise);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|