mirror of
https://github.com/Sonarr/Sonarr
synced 2024-12-26 01:37:07 +00:00
139 lines
4.2 KiB
JavaScript
139 lines
4.2 KiB
JavaScript
'use strict';
|
|
define([
|
|
'app', 'AddSeries/RootFolders/RootFolderCollection',
|
|
'AddSeries/Existing/UnmappedFolderModel',
|
|
'AddSeries/Collection',
|
|
'AddSeries/SearchResultView',
|
|
'Series/SeriesModel'], function () {
|
|
|
|
NzbDrone.AddSeries.Existing.UnmappedFolderCompositeView = Backbone.Marionette.CompositeView.extend({
|
|
|
|
template : 'AddSeries/Existing/UnmappedFolderCompositeViewTemplate',
|
|
itemViewContainer: '.x-folder-name-match-results',
|
|
itemView : NzbDrone.AddSeries.SearchResultView,
|
|
|
|
events: {
|
|
'click .x-btn-search' : 'search',
|
|
'click .x-load-more' : '_loadMore',
|
|
'keydown .x-txt-search': 'keyDown'
|
|
},
|
|
|
|
ui: {
|
|
searchButton: '.x-btn-search',
|
|
searchText : '.x-txt-search',
|
|
searchBar : '.x-search-bar',
|
|
loadMore : '.x-load-more'
|
|
},
|
|
|
|
initialize: function () {
|
|
this.collection = new NzbDrone.AddSeries.Collection();
|
|
this.collection.bind('reset', this.collectionReset, this);
|
|
|
|
this.on("item:removed", function () {
|
|
this.close();
|
|
}, this);
|
|
},
|
|
|
|
onRender: function () {
|
|
this.ui.loadMore.show();
|
|
},
|
|
|
|
search: function () {
|
|
var icon = this.ui.searchButton.find('icon');
|
|
icon.removeClass('icon-search').addClass('icon-spin icon-spinner disabled');
|
|
|
|
var self = this;
|
|
var deferred = $.Deferred();
|
|
|
|
this.collection.reset();
|
|
|
|
this.searchCollection = new NzbDrone.AddSeries.Collection();
|
|
|
|
this.searchCollection.fetch({
|
|
data : { term: this.ui.searchText.val() },
|
|
success: function () {
|
|
icon.removeClass('icon-spin icon-spinner disabled').addClass('icon-search');
|
|
deferred.resolve();
|
|
self.collection.add(self.searchCollection.shift());
|
|
|
|
if (self.showall) {
|
|
self._showAll();
|
|
}
|
|
|
|
},
|
|
fail : function () {
|
|
icon.removeClass('icon-spin icon-spinner disabled').addClass('icon-search');
|
|
deferred.reject();
|
|
}
|
|
});
|
|
|
|
return deferred.promise();
|
|
},
|
|
|
|
|
|
keyDown: function (e) {
|
|
//Check for enter being pressed
|
|
var code = (e.keyCode ? e.keyCode :e.which);
|
|
if (code === 13) {
|
|
this.search();
|
|
}
|
|
},
|
|
|
|
_loadMore: function () {
|
|
this.showall = true;
|
|
|
|
this.ui.searchBar.fadeIn();
|
|
this.ui.loadMore.fadeOut();
|
|
|
|
this._showAll();
|
|
},
|
|
|
|
_showAll: function () {
|
|
var self = this;
|
|
this.searchCollection.each(function (searchResult) {
|
|
self.collection.add(searchResult);
|
|
});
|
|
},
|
|
|
|
itemViewOptions: function () {
|
|
return {
|
|
rootFolder : this.model.get('rootFolder'),
|
|
folder : this.model.get('folder').path,
|
|
isExisting : true
|
|
};
|
|
}
|
|
});
|
|
|
|
NzbDrone.AddSeries.Existing.ListView = Backbone.Marionette.CollectionView.extend({
|
|
|
|
itemView: NzbDrone.AddSeries.Existing.UnmappedFolderCompositeView,
|
|
|
|
initialize: function () {
|
|
this.collection = new NzbDrone.AddSeries.Existing.UnmappedFolderCollection();
|
|
this.refreshItems();
|
|
},
|
|
|
|
refreshItems: function () {
|
|
this.collection.importItems(this.model);
|
|
},
|
|
|
|
showCollection: function () {
|
|
this.showAndSearch(0);
|
|
},
|
|
|
|
showAndSearch: function (index) {
|
|
|
|
var model = this.collection.at(index);
|
|
if (model) {
|
|
var that = this;
|
|
var currentIndex = index;
|
|
this.addItemView(model, this.getItemView(), index);
|
|
$.when(this.children.findByModel(model).search())
|
|
.then(function () {
|
|
that.showAndSearch(currentIndex + 1);
|
|
});
|
|
}
|
|
}
|
|
|
|
});
|
|
});
|