Merge branch 'view-filtering' of https://github.com/Taloth/NzbDrone into view-filtering
commit
9515c28729
@ -0,0 +1,78 @@
|
||||
'use strict';
|
||||
|
||||
define(
|
||||
[
|
||||
'underscore',
|
||||
'backbone'],
|
||||
function (_, Backbone) {
|
||||
|
||||
return function () {
|
||||
|
||||
this.prototype.setFilter = function(filter, options) {
|
||||
options = _.extend({ reset: true }, options || {});
|
||||
|
||||
this.state.filterKey = filter[0];
|
||||
this.state.filterValue = filter[1];
|
||||
|
||||
if (options.reset) {
|
||||
if (this.mode != 'server') {
|
||||
this.fullCollection.resetFiltered();
|
||||
} else {
|
||||
return this.fetch();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
this.prototype.setFilterMode = function(mode, options) {
|
||||
this.setFilter(this.filterModes[mode], options);
|
||||
};
|
||||
|
||||
var originalMakeFullCollection = this.prototype._makeFullCollection;
|
||||
|
||||
this.prototype._makeFullCollection = function (models, options) {
|
||||
var self = this;
|
||||
|
||||
self.shadowCollection = originalMakeFullCollection.apply(this, [models, options]);
|
||||
|
||||
var filterModel = function(model) {
|
||||
if (!self.state.filterKey || !self.state.filterValue)
|
||||
return true;
|
||||
else
|
||||
return model.get(self.state.filterKey) === self.state.filterValue;
|
||||
};
|
||||
|
||||
self.shadowCollection.filtered = function() {
|
||||
return this.filter(filterModel);
|
||||
};
|
||||
|
||||
var filteredModels = self.shadowCollection.filtered();
|
||||
|
||||
var fullCollection = originalMakeFullCollection.apply(this, [filteredModels, options]);
|
||||
|
||||
|
||||
fullCollection.resetFiltered = function(options) {
|
||||
Backbone.Collection.prototype.reset.apply(this, [self.shadowCollection.filtered(), options]);
|
||||
};
|
||||
|
||||
fullCollection.reset = function (models, options) {
|
||||
self.shadowCollection.reset(models, options);
|
||||
self.fullCollection.resetFiltered();
|
||||
};
|
||||
|
||||
return fullCollection;
|
||||
};
|
||||
|
||||
_.extend(this.prototype.state, {
|
||||
filterKey : null,
|
||||
filterValue : null
|
||||
});
|
||||
|
||||
_.extend(this.prototype.queryParams, {
|
||||
filterKey : 'filterKey',
|
||||
filterValue : 'filterValue'
|
||||
});
|
||||
|
||||
return this;
|
||||
};
|
||||
}
|
||||
);
|
Loading…
Reference in new issue