mirror of https://github.com/Radarr/Radarr
114 lines
3.6 KiB
JavaScript
114 lines
3.6 KiB
JavaScript
|
||
'use strict';
|
||
define(
|
||
[
|
||
'marionette',
|
||
'backgrid',
|
||
'Cells/ToggleCell',
|
||
'Cells/EpisodeTitleCell',
|
||
'Cells/AirDateCell',
|
||
'Cells/EpisodeStatusCell',
|
||
'Commands/CommandController',
|
||
'Shared/Messenger'
|
||
], function ( Marionette, Backgrid, ToggleCell, EpisodeTitleCell, AirDateCell, EpisodeStatusCell, CommandController, Messenger) {
|
||
return Marionette.Layout.extend({
|
||
template: 'Series/Details/SeasonLayoutTemplate',
|
||
|
||
ui: {
|
||
seasonSearch: '.x-season-search'
|
||
},
|
||
|
||
events: {
|
||
'click .x-season-search': '_seasonSearch'
|
||
},
|
||
|
||
regions: {
|
||
episodeGrid: '#x-episode-grid'
|
||
},
|
||
|
||
columns:
|
||
[
|
||
{
|
||
name : 'ignored',
|
||
label : '',
|
||
cell : ToggleCell,
|
||
trueClass : 'icon-bookmark-empty',
|
||
falseClass: 'icon-bookmark'
|
||
},
|
||
{
|
||
name : 'episodeNumber',
|
||
label: '#',
|
||
cell : Backgrid.IntegerCell.extend({
|
||
className: 'episode-number-cell'
|
||
})
|
||
},
|
||
{
|
||
name : 'this',
|
||
label: 'Title',
|
||
cell : EpisodeTitleCell
|
||
},
|
||
{
|
||
name : 'airDate',
|
||
label: 'Air Date',
|
||
cell : AirDateCell
|
||
} ,
|
||
{
|
||
name : 'status',
|
||
label: 'Status',
|
||
cell : EpisodeStatusCell
|
||
}
|
||
],
|
||
|
||
initialize: function (options) {
|
||
|
||
if (!options.episodeCollection) {
|
||
throw 'episodeCollection is needed';
|
||
}
|
||
|
||
this.episodeCollection = options.episodeCollection.bySeason(this.model.get('seasonNumber'));
|
||
},
|
||
|
||
onShow: function () {
|
||
this.episodeGrid.show(new Backgrid.Grid({
|
||
columns : this.columns,
|
||
collection: this.episodeCollection,
|
||
className : 'table table-hover season-grid'
|
||
}));
|
||
},
|
||
|
||
_seasonSearch: function () {
|
||
var command = 'seasonSearch';
|
||
|
||
this.idle = false;
|
||
|
||
this.ui.seasonSearch.addClass('icon-spinner icon-spin');
|
||
|
||
var properties = {
|
||
seriesId : this.model.get('seriesId'),
|
||
seasonNumber: this.model.get('seasonNumber')
|
||
};
|
||
|
||
var self = this;
|
||
var commandPromise = CommandController.Execute(command, properties);
|
||
|
||
commandPromise.fail(function (options) {
|
||
if (options.readyState === 0 || options.status === 0) {
|
||
return;
|
||
}
|
||
|
||
Messenger.show({
|
||
message: 'Season search failed',
|
||
type : 'error'
|
||
});
|
||
});
|
||
|
||
commandPromise.always(function () {
|
||
if (!self.isClosed) {
|
||
self.ui.seasonSearch.removeClass('icon-spinner icon-spin');
|
||
self.idle = true;
|
||
}
|
||
});
|
||
}
|
||
});
|
||
});
|