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.
Prowlarr/src/UI/Cells/EpisodeMonitoredCell.js

42 lines
1.7 KiB

var _ = require('underscore');
var ToggleCell = require('./ToggleCell');
var SeriesCollection = require('../Series/SeriesCollection');
var Messenger = require('../Shared/Messenger');
module.exports = ToggleCell.extend({
className : 'toggle-cell episode-monitored',
_originalOnClick : ToggleCell.prototype._onClick,
_onClick : function(e){
var series = SeriesCollection.get(this.model.get('seriesId'));
if(!series.get('monitored')) {
Messenger.show({
message : 'Unable to change monitored state when series is not monitored',
type : 'error'
});
return;
}
if(e.shiftKey && this.model.episodeCollection.lastToggled) {
this._selectRange();
return;
}
this._originalOnClick.apply(this, arguments);
this.model.episodeCollection.lastToggled = this.model;
},
_selectRange : function(){
var episodeCollection = this.model.episodeCollection;
var lastToggled = episodeCollection.lastToggled;
var currentIndex = episodeCollection.indexOf(this.model);
var lastIndex = episodeCollection.indexOf(lastToggled);
var low = Math.min(currentIndex, lastIndex);
var high = Math.max(currentIndex, lastIndex);
var range = _.range(low + 1, high);
_.each(range, function(index){
var model = episodeCollection.at(index);
model.set('monitored', lastToggled.get('monitored'));
model.save();
});
this.model.set('monitored', lastToggled.get('monitored'));
this.model.save();
this.model.episodeCollection.lastToggled = undefined;
}
});