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.
Lidarr/UI/AddSeries/Existing/ImportSeriesView.js

151 lines
5.2 KiB

'use strict';
define([
'app', 'AddSeries/RootFolders/RootFolderCollection', 'Quality/QualityProfileCollection', 'Shared/NotificationCollection', 'AddSeries/Existing/UnmappedFolderModel', 'Series/SeriesModel'], function (app, rootFolders, qualityProfileCollection, notificationCollection) {
NzbDrone.AddSeries.Existing.FolderMatchResultView = Backbone.Marionette.ItemView.extend({
template: 'AddSeries/SearchResultTemplate',
events: {
'click .x-add': 'addSeries'
},
initialize: function () {
this.model.set('isExisting', true);
},
addSeries: function () {
var self = this;
var quality = this.options.qualityProfile.val();
var rootFolderId = this.options.rootFolder.id;
var folder = this.options.folder.name;
this.model.set('qualityProfileId', quality);
this.model.set('rootFolderId', rootFolderId);
this.model.set('folder', folder);
var seriesCollection = new NzbDrone.Series.SeriesCollection();
seriesCollection.add(this.model);
this.model.save(undefined, {
success: function () {
var notificationModel = new NzbDrone.Shared.NotificationModel({
tvDbId : self.model.get('tvDbId'),
title : 'Added',
message: self.model.get('title'),
level : 'success'
});
notificationCollection.push(notificationModel);
NzbDrone.vent.trigger(NzbDrone.Events.SeriesAdded, { existing: true, series: self.model });
self.trigger('seriesAdded');
self.close();
}
});
}
});
NzbDrone.AddSeries.Existing.UnmappedFolderCompositeView = Backbone.Marionette.CompositeView.extend({
template : 'AddSeries/Existing/UnmappedFolderCompositeViewTemplate',
itemViewContainer: '.x-folder-name-match-results',
itemView : NzbDrone.AddSeries.Existing.FolderMatchResultView,
events: {
'click .x-btn-search': 'search',
'keydown .x-txt-search': 'keyDown'
},
ui: {
searchButton: '.x-btn-search',
searchText : '.x-txt-search',
profileList : '.x-lst-quality-profile'
},
initialize: function () {
this.collection = new NzbDrone.Series.SeriesCollection();
this.collection.bind('reset', this.collectionReset, this);
this.on("itemview:seriesAdded", function(){
this.close();
});
},
onRender: function () {
this.collection.url = NzbDrone.Constants.ApiRoot + '/series/lookup';
this.resultView = new NzbDrone.AddSeries.SearchResultView({ collection: this.collection });
},
search: function () {
var icon = this.ui.searchButton.find('icon');
this.collection.reset();
icon.removeClass('icon-search').addClass('icon-spin icon-spinner disabled');
this.collection.fetch({
data : { term: this.ui.searchText.val() },
success: function (collection) {
icon.removeClass('icon-spin icon-spinner disabled').addClass('icon-search');
},
fail : function () {
icon.removeClass('icon-spin icon-spinner disabled').addClass('icon-search');
}
});
},
keyDown: function (e) {
//Check for enter being pressed
var code = (e.keyCode ? e.keyCode : e.which);
if(code === 13) {
this.search();
}
},
collectionReset: function () {
_.each(this.collection.models, function (model){
model.set('isExisting', true);
});
},
itemViewOptions: function () {
return {
qualityProfile: this.ui.profileList,
rootFolder : this.model.get('rootFolder'),
folder : this.model.get('folder')
};
}
});
NzbDrone.AddSeries.Existing.RootFolderCompositeView = Backbone.Marionette.CompositeView.extend({
template : "AddSeries/Existing/RootFolderCompositeViewTemplate",
itemViewContainer: ".x-existing-folder-container",
itemView : NzbDrone.AddSeries.Existing.UnmappedFolderCompositeView,
initialize: function () {
if (!this.model) {
throw "model is required.";
}
this.collection = new NzbDrone.AddSeries.Existing.UnmappedFolderCollection();
this.refreshItems();
this.listenTo(qualityProfileCollection, 'reset', this.refreshItems, this);
},
refreshItems: function () {
this.collection.importItems(this.model);
}
});
NzbDrone.AddSeries.Existing.ImportSeriesView = Backbone.Marionette.CollectionView.extend({
itemView: NzbDrone.AddSeries.Existing.RootFolderCompositeView,
initialize: function () {
this.collection = rootFolders;
}
});
});