Anton Shestakov <av6@dwimlabs.net>, Sat, 01 Jul 2017 00:34:05 +0800
docs: update copyright years
static/js/backbone.shard.js
Permissions: -rw-r--r--
* (c) 2013, 2016 Anton Shestakov. * This extension to Backbone may be freely distributed * https://opensource.org/licenses/MIT Backbone.Shard = function(options) { this._collection = options.collection; this._filter = options.filter; this.models = this._collection.filter(this._filter); .on('all', function(event, model) { if (this._filter(model) && _(this.models).contains(model)) { this.trigger.apply(this, arguments); if (this._filter(model) && !_(this.models).contains(model)) { this.trigger('add', model); if (!this._filter(model) && _(this.models).contains(model)) { this.models = _.without(this.models, model); this.trigger('remove', model); } else if (/^change:/.test(event) && this._filter(model) && _(this.models).contains(model)) { this.trigger.apply(this, arguments); .on('add', function(model) { if (this._filter(model) && !_(this.models).contains(model)) { this.trigger('add', model); .on('remove', function(model) { if (this._filter(model) && _(this.models).contains(model)) { this.models = _.without(this.models, model); this.trigger('remove', model); .on('reset', function() { this.models = this._collection.filter(this._filter); this.initialize.apply(this, arguments); _.extend(Backbone.Shard.prototype, Backbone.Events, { initialize: function() {}, return _.map(this.models, function(model) { return model.get(attr); }); // Underscore methods that we want to implement on the Shard. 'all', 'any', 'chain', 'collect', 'contains', 'detect', 'difference', 'drop', 'each', 'every', 'filter', 'find', 'findIndex', 'findLastIndex', 'first', 'foldl', 'foldr', 'forEach', 'head', 'include', 'includes', 'indexOf', 'initial', 'inject', 'invoke', 'isEmpty', 'last', 'lastIndexOf', 'map', 'max', 'min', 'reduce', 'reduceRight', 'reject', 'rest', 'sample', 'select', 'shuffle', 'size', 'some', 'tail', 'take', 'toArray', 'without' // Mix in each Underscore method as a proxy to `Shard#models`. _.each(methods, function(method) { Backbone.Shard.prototype[method] = function() { var args = Array.prototype.slice.call(arguments); args.unshift(this.models); return _[method].apply(_, args); // Underscore methods that take a property name as an argument. var attributeMethods = ['countBy', 'groupBy', 'indexBy', 'sortBy']; // Use attributes instead of properties. _.each(attributeMethods, function(method) { Backbone.Shard.prototype[method] = function(value, context) { var iterator = _.isFunction(value) ? value : function(model) { return _[method](this.models, iterator, context);