You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
2.4 KiB
82 lines
2.4 KiB
var _ = require('underscore');
|
|
var vent = require('vent');
|
|
var Marionette = require('marionette');
|
|
var Backgrid = require('backgrid');
|
|
var EpisodeCollection = require('../../Series/EpisodeCollection');
|
|
var LoadingView = require('../../Shared/LoadingView');
|
|
var SelectAllCell = require('../../Cells/SelectAllCell');
|
|
var EpisodeNumberCell = require('../../Series/Details/EpisodeNumberCell');
|
|
var RelativeDateCell = require('../../Cells/RelativeDateCell');
|
|
var SelectEpisodeRow = require('./SelectEpisodeRow');
|
|
|
|
module.exports = Marionette.Layout.extend({
|
|
template : 'ManualImport/Episode/SelectEpisodeLayoutTemplate',
|
|
|
|
regions : {
|
|
episodes : '.x-episodes'
|
|
},
|
|
|
|
events : {
|
|
'click .x-select' : '_selectEpisodes'
|
|
},
|
|
|
|
columns : [
|
|
{
|
|
name : '',
|
|
cell : SelectAllCell,
|
|
headerCell : 'select-all',
|
|
sortable : false
|
|
},
|
|
{
|
|
name : 'episodeNumber',
|
|
label : '#',
|
|
cell : EpisodeNumberCell
|
|
},
|
|
{
|
|
name : 'title',
|
|
label : 'Title',
|
|
hideSeriesLink : true,
|
|
cell : 'string',
|
|
sortable : false
|
|
},
|
|
{
|
|
name : 'airDateUtc',
|
|
label : 'Air Date',
|
|
cell : RelativeDateCell
|
|
}
|
|
],
|
|
|
|
initialize : function(options) {
|
|
this.series = options.series;
|
|
this.seasonNumber = options.seasonNumber;
|
|
},
|
|
|
|
onRender : function() {
|
|
this.episodes.show(new LoadingView());
|
|
|
|
this.episodeCollection = new EpisodeCollection({ seriesId : this.series.id });
|
|
this.episodeCollection.fetch();
|
|
|
|
this.listenToOnce(this.episodeCollection, 'sync', function () {
|
|
|
|
this.episodeView = new Backgrid.Grid({
|
|
columns : this.columns,
|
|
collection : this.episodeCollection.bySeason(this.seasonNumber),
|
|
className : 'table table-hover season-grid',
|
|
row : SelectEpisodeRow
|
|
});
|
|
|
|
this.episodes.show(this.episodeView);
|
|
});
|
|
},
|
|
|
|
_selectEpisodes : function () {
|
|
var episodes = _.map(this.episodeView.getSelectedModels(), function (episode) {
|
|
return episode.toJSON();
|
|
});
|
|
|
|
this.trigger('manualimport:selected:episodes', { episodes: episodes });
|
|
vent.trigger(vent.Commands.CloseModal2Command);
|
|
}
|
|
});
|