'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' }, 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; } }); });