mirror of
https://github.com/Lidarr/Lidarr
synced 2025-12-16 05:15:13 +01:00
* First Pass At AlbumPass Page, Also Fixes Monitoring First Pass At AlbumPass Page, Also Fixes Monitoring * Catchy New Name, Fix Crash when visit Wanted Page Catchy New Name, Fix Crash when visit Wanted Page * Rename API to match Rename API to match * Get Bulk Monitoring Working on Album Studio Page Get Bulk Monitoring Working on Album Studio Page * Fix Wanted Query Fix Wanted Query * Codacy Codacy * Fix Cutoff Link To AlbumStudio Fix Cutoff Link To AlbumStudio * Add Header, Move Artist Monitor, Change Artist Column Heading Add Header, Move Artist Monitor, Change Artist Column Heading
116 lines
No EOL
3.2 KiB
JavaScript
116 lines
No EOL
3.2 KiB
JavaScript
var _ = require('underscore');
|
|
var $ = require('jquery');
|
|
var Marionette = require('marionette');
|
|
var vent = require('vent');
|
|
var RootFolders = require('../AddArtist/RootFolders/RootFolderCollection');
|
|
|
|
module.exports = Marionette.ItemView.extend({
|
|
template : 'AlbumStudio/AlbumStudioFooterViewTemplate',
|
|
|
|
ui : {
|
|
artistMonitored : '.x-artist-monitored',
|
|
monitor : '.x-monitor',
|
|
selectedCount : '.x-selected-count',
|
|
container : '.artist-editor-footer',
|
|
actions : '.x-action',
|
|
indicator : '.x-indicator',
|
|
indicatorIcon : '.x-indicator-icon'
|
|
},
|
|
|
|
events : {
|
|
'click .x-update' : '_update'
|
|
},
|
|
|
|
initialize : function(options) {
|
|
this.artistCollection = options.collection;
|
|
|
|
RootFolders.fetch().done(function() {
|
|
RootFolders.synced = true;
|
|
});
|
|
|
|
this.editorGrid = options.editorGrid;
|
|
this.listenTo(this.artistCollection, 'backgrid:selected', this._updateInfo);
|
|
},
|
|
|
|
onRender : function() {
|
|
this._updateInfo();
|
|
},
|
|
|
|
_update : function() {
|
|
var self = this;
|
|
var selected = this.editorGrid.getSelectedModels();
|
|
var artistMonitored = this.ui.artistMonitored.val();
|
|
var monitoringOptions;
|
|
|
|
_.each(selected, function(model) {
|
|
if (artistMonitored === 'true') {
|
|
model.set('monitored', true);
|
|
} else if (artistMonitored === 'false') {
|
|
model.set('monitored', false);
|
|
}
|
|
|
|
monitoringOptions = self._getMonitoringOptions(model);
|
|
model.set('addOptions', monitoringOptions);
|
|
});
|
|
|
|
var promise = $.ajax({
|
|
url : window.NzbDrone.ApiRoot + '/albumstudio',
|
|
type : 'POST',
|
|
data : JSON.stringify({
|
|
artist : _.map(selected, function (model) {
|
|
return model.toJSON();
|
|
}),
|
|
monitoringOptions : monitoringOptions
|
|
})
|
|
});
|
|
|
|
this.ui.indicator.show();
|
|
|
|
promise.always(function () {
|
|
self.ui.indicator.hide();
|
|
});
|
|
|
|
promise.done(function () {
|
|
self.artistCollection.trigger('albumstudio:saved');
|
|
});
|
|
},
|
|
|
|
_updateInfo : function() {
|
|
var selected = this.editorGrid.getSelectedModels();
|
|
var selectedCount = selected.length;
|
|
|
|
this.ui.selectedCount.html('{0} artists selected'.format(selectedCount));
|
|
|
|
if (selectedCount === 0) {
|
|
this.ui.actions.attr('disabled', 'disabled');
|
|
} else {
|
|
this.ui.actions.removeAttr('disabled');
|
|
}
|
|
},
|
|
|
|
_getMonitoringOptions : function(model) {
|
|
var monitor = this.ui.monitor.val();
|
|
|
|
if (monitor === 'noChange') {
|
|
return null;
|
|
}
|
|
|
|
model.setAlbumPass(0);
|
|
|
|
var options = {
|
|
ignoreTracksWithFiles : false,
|
|
ignoreTracksWithoutFiles : false,
|
|
monitored : true
|
|
};
|
|
|
|
if (monitor === 'all') {
|
|
return options;
|
|
}
|
|
|
|
else if (monitor === 'none') {
|
|
options.monitored = false;
|
|
}
|
|
|
|
return options;
|
|
}
|
|
}); |