parent
3cb42f06c2
commit
0fa1509ca6
@ -0,0 +1,43 @@
|
|||||||
|
var vent = require('../../vent');
|
||||||
|
var NzbDroneCell = require('../../Cells/NzbDroneCell');
|
||||||
|
var SelectMovieLayout = require('../Movie/SelectMovieLayout');
|
||||||
|
|
||||||
|
module.exports = NzbDroneCell.extend({
|
||||||
|
className : 'series-title-cell editable',
|
||||||
|
|
||||||
|
events : {
|
||||||
|
'click' : '_onClick'
|
||||||
|
},
|
||||||
|
|
||||||
|
render : function() {
|
||||||
|
this.$el.empty();
|
||||||
|
|
||||||
|
var movie = this.model.get('movie');
|
||||||
|
|
||||||
|
if (movie)
|
||||||
|
{
|
||||||
|
this.$el.html(movie.title + " (" + movie.year + ")" );
|
||||||
|
}
|
||||||
|
|
||||||
|
this.delegateEvents();
|
||||||
|
return this;
|
||||||
|
},
|
||||||
|
|
||||||
|
_onClick : function () {
|
||||||
|
var view = new SelectMovieLayout();
|
||||||
|
|
||||||
|
this.listenTo(view, 'manualimport:selected:movie', this._setMovie);
|
||||||
|
|
||||||
|
vent.trigger(vent.Commands.OpenModal2Command, view);
|
||||||
|
},
|
||||||
|
|
||||||
|
_setMovie : function (e) {
|
||||||
|
if (this.model.has('movie') && e.model.id === this.model.get('movie').id) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.model.set({
|
||||||
|
movie : e.model.toJSON()
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
@ -0,0 +1,101 @@
|
|||||||
|
var _ = require('underscore');
|
||||||
|
var vent = require('vent');
|
||||||
|
var Marionette = require('marionette');
|
||||||
|
var Backgrid = require('backgrid');
|
||||||
|
var MoviesCollection = require('../../Movies/MoviesCollection');
|
||||||
|
var SelectRow = require('./SelectMovieRow');
|
||||||
|
|
||||||
|
module.exports = Marionette.Layout.extend({
|
||||||
|
template : 'ManualImport/Movie/SelectMovieLayoutTemplate',
|
||||||
|
|
||||||
|
regions : {
|
||||||
|
movie : '.x-movie'
|
||||||
|
},
|
||||||
|
|
||||||
|
ui : {
|
||||||
|
filter : '.x-filter'
|
||||||
|
},
|
||||||
|
|
||||||
|
columns : [
|
||||||
|
{
|
||||||
|
name : 'title',
|
||||||
|
label : 'Title',
|
||||||
|
cell : 'String',
|
||||||
|
sortValue : 'sortTitle'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
|
||||||
|
initialize : function() {
|
||||||
|
this.movieCollection = MoviesCollection.clone();
|
||||||
|
this._setModelCollection();
|
||||||
|
|
||||||
|
this.listenTo(this.movieCollection, 'row:selected', this._onSelected);
|
||||||
|
this.listenTo(this, 'modal:afterShow', this._setFocus);
|
||||||
|
},
|
||||||
|
|
||||||
|
onRender : function() {
|
||||||
|
this.movieView = new Backgrid.Grid({
|
||||||
|
columns : this.columns,
|
||||||
|
collection : this.movieCollection,
|
||||||
|
className : 'table table-hover season-grid',
|
||||||
|
row : SelectRow
|
||||||
|
});
|
||||||
|
|
||||||
|
this.movie.show(this.movieView);
|
||||||
|
this._setupFilter();
|
||||||
|
},
|
||||||
|
|
||||||
|
_setupFilter : function () {
|
||||||
|
var self = this;
|
||||||
|
|
||||||
|
//TODO: This should be a mixin (same as Add Series searching)
|
||||||
|
this.ui.filter.keyup(function(e) {
|
||||||
|
if (_.contains([
|
||||||
|
9,
|
||||||
|
16,
|
||||||
|
17,
|
||||||
|
18,
|
||||||
|
19,
|
||||||
|
20,
|
||||||
|
33,
|
||||||
|
34,
|
||||||
|
35,
|
||||||
|
36,
|
||||||
|
37,
|
||||||
|
38,
|
||||||
|
39,
|
||||||
|
40,
|
||||||
|
91,
|
||||||
|
92,
|
||||||
|
93
|
||||||
|
], e.keyCode)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
self._filter(self.ui.filter.val());
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
_filter : function (term) {
|
||||||
|
this.movieCollection.setFilter(['title', term, 'contains']);
|
||||||
|
this._setModelCollection();
|
||||||
|
},
|
||||||
|
|
||||||
|
_onSelected : function (e) {
|
||||||
|
this.trigger('manualimport:selected:movie', { model: e.model });
|
||||||
|
|
||||||
|
vent.trigger(vent.Commands.CloseModal2Command);
|
||||||
|
},
|
||||||
|
|
||||||
|
_setFocus : function () {
|
||||||
|
this.ui.filter.focus();
|
||||||
|
},
|
||||||
|
|
||||||
|
_setModelCollection: function () {
|
||||||
|
var self = this;
|
||||||
|
|
||||||
|
_.each(this.movieCollection.models, function (model) {
|
||||||
|
model.collection = self.movieCollection;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
@ -0,0 +1,30 @@
|
|||||||
|
<div class="modal-content">
|
||||||
|
<div class="manual-import-modal">
|
||||||
|
<div class="modal-header">
|
||||||
|
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
Manual Import - Select Movie
|
||||||
|
</h3>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="form-group">
|
||||||
|
<input type="text" class="form-control x-filter" placeholder="Filter movies" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-12 x-movie"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button class="btn btn-default" data-dismiss="modal">Cancel</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
@ -0,0 +1,13 @@
|
|||||||
|
var Backgrid = require('backgrid');
|
||||||
|
|
||||||
|
module.exports = Backgrid.Row.extend({
|
||||||
|
className : 'select-row select-series-row',
|
||||||
|
|
||||||
|
events : {
|
||||||
|
'click' : '_onClick'
|
||||||
|
},
|
||||||
|
|
||||||
|
_onClick : function() {
|
||||||
|
this.model.collection.trigger('row:selected', { model: this.model });
|
||||||
|
}
|
||||||
|
});
|
Loading…
Reference in new issue