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.
124 lines
3.9 KiB
124 lines
3.9 KiB
var _ = require('underscore');
|
|
var vent = require('vent');
|
|
var Marionette = require('marionette');
|
|
var RenamePreviewCollection = require('./RenamePreviewCollection');
|
|
var RenamePreviewCollectionView = require('./RenamePreviewCollectionView');
|
|
var EmptyCollectionView = require('./RenamePreviewEmptyCollectionView');
|
|
var RenamePreviewFormatView = require('./RenamePreviewFormatView');
|
|
var LoadingView = require('../Shared/LoadingView');
|
|
var CommandController = require('../Commands/CommandController');
|
|
|
|
module.exports = Marionette.Layout.extend({
|
|
className : 'modal-lg',
|
|
template : 'Rename/RenamePreviewLayoutTemplate',
|
|
|
|
regions : {
|
|
renamePreviews : '#rename-previews',
|
|
formatRegion : '.x-format-region'
|
|
},
|
|
|
|
ui : {
|
|
pathInfo : '.x-path-info',
|
|
renameAll : '.x-rename-all',
|
|
checkboxIcon : '.x-rename-all-button i'
|
|
},
|
|
|
|
events : {
|
|
'click .x-organize' : '_organizeFiles',
|
|
'change .x-rename-all' : '_toggleAll'
|
|
},
|
|
|
|
initialize : function(options) {
|
|
this.model = options.series;
|
|
this.seasonNumber = options.seasonNumber;
|
|
|
|
var viewOptions = {};
|
|
viewOptions.seriesId = this.model.id;
|
|
viewOptions.seasonNumber = this.seasonNumber;
|
|
|
|
this.collection = new RenamePreviewCollection(viewOptions);
|
|
this.listenTo(this.collection, 'sync', this._showPreviews);
|
|
this.listenTo(this.collection, 'rename:select', this._itemRenameChanged);
|
|
|
|
this.collection.fetch();
|
|
},
|
|
|
|
onRender : function() {
|
|
this.renamePreviews.show(new LoadingView());
|
|
this.formatRegion.show(new RenamePreviewFormatView({ model : this.model }));
|
|
},
|
|
|
|
_showPreviews : function() {
|
|
if (this.collection.length === 0) {
|
|
this.ui.pathInfo.hide();
|
|
this.renamePreviews.show(new EmptyCollectionView());
|
|
return;
|
|
}
|
|
|
|
this.ui.pathInfo.show();
|
|
this.collection.invoke('set', { rename : true });
|
|
this.renamePreviews.show(new RenamePreviewCollectionView({ collection : this.collection }));
|
|
},
|
|
|
|
_organizeFiles : function() {
|
|
if (this.collection.length === 0) {
|
|
vent.trigger(vent.Commands.CloseModalCommand);
|
|
}
|
|
|
|
var files = _.map(this.collection.where({ rename : true }), function(model) {
|
|
return model.get('episodeFileId');
|
|
});
|
|
|
|
if (files.length === 0) {
|
|
vent.trigger(vent.Commands.CloseModalCommand);
|
|
return;
|
|
}
|
|
|
|
if (this.seasonNumber) {
|
|
CommandController.Execute('renameFiles', {
|
|
name : 'renameFiles',
|
|
seriesId : this.model.id,
|
|
seasonNumber : this.seasonNumber,
|
|
files : files
|
|
});
|
|
} else {
|
|
CommandController.Execute('renameFiles', {
|
|
name : 'renameFiles',
|
|
seriesId : this.model.id,
|
|
seasonNumber : -1,
|
|
files : files
|
|
});
|
|
}
|
|
|
|
vent.trigger(vent.Commands.CloseModalCommand);
|
|
},
|
|
|
|
_setCheckedState : function(checked) {
|
|
if (checked) {
|
|
this.ui.checkboxIcon.addClass('icon-lidarr-checked');
|
|
this.ui.checkboxIcon.removeClass('icon-lidarr-unchecked');
|
|
} else {
|
|
this.ui.checkboxIcon.addClass('icon-lidarr-unchecked');
|
|
this.ui.checkboxIcon.removeClass('icon-lidarr-checked');
|
|
}
|
|
},
|
|
|
|
_toggleAll : function() {
|
|
var checked = this.ui.renameAll.prop('checked');
|
|
this._setCheckedState(checked);
|
|
|
|
this.collection.each(function(model) {
|
|
model.trigger('rename:select', model, checked);
|
|
});
|
|
},
|
|
|
|
_itemRenameChanged : function(model, checked) {
|
|
var allChecked = this.collection.all(function(m) {
|
|
return m.get('rename');
|
|
});
|
|
|
|
if (!checked || allChecked) {
|
|
this._setCheckedState(checked);
|
|
}
|
|
}
|
|
}); |