backbone-filtered-collection 1.2.0 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/backbone-filtered-collection.gemspec +1 -1
- data/lib/backbone/filtered_collection/version.rb +1 -1
- data/spec/javascripts/backbone-filtered-collection-spec.js +31 -0
- data/vendor/assets/javascripts/backbone-filtered-collection.js +5 -0
- metadata +9 -8
- data/.rvmrc +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ab93a979fe8e435f5d48597d79582f2a8019eee3
|
4
|
+
data.tar.gz: fc6f40626046d710f63f3200b4d91d4c974c8900
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6d2256530258f3d78fc40027317e11fdd90a332ec9e46fa4db651a0de2bcc6f9a7262dc0be40d6f7783b5f467fee4cb1e3337ed1805c3b6aac78ccb90ee8fce5
|
7
|
+
data.tar.gz: d5e5b4e1c5e4b5918ee460b3e97d2ad4787dc4b3686be1f9f93fc5f991961871a95cdbe8290b4ae9986f406f5ba744cb09f286ccd4ad0e76d0bb4f4f8f64e76e
|
data/.ruby-gemset
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
filtered-collection
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
ruby-2.0.0-p353
|
@@ -377,6 +377,37 @@ describe("Backbone.FilteredCollection", function() {
|
|
377
377
|
expect(addSpy).toHaveBeenCalledWith(origModelZero, collection, jasmine.any(Object));
|
378
378
|
expect(removeSpy).not.toHaveBeenCalled();
|
379
379
|
});
|
380
|
+
|
381
|
+
it("property change events are fired on filtered collection", function() {
|
382
|
+
var collection = new Backbone.Collection([ {id: 1, difficulty: 1}, {id: 2, difficulty: 2}, {id: 3, difficulty: 1}, {id: 4, difficulty: 3} ]);
|
383
|
+
var filteredCollection = new Backbone.FilteredCollection(null, {collection: collection});
|
384
|
+
filteredCollection.setFilter(function(d) { return (d.get('difficulty') === 1) });
|
385
|
+
|
386
|
+
var changeCount = 0;
|
387
|
+
var newModel = new Backbone.Model({id: 5, difficulty: 1});
|
388
|
+
collection.add(newModel);
|
389
|
+
|
390
|
+
filteredCollection.on("change:blah", function() { changeCount = changeCount + 1; });
|
391
|
+
filteredCollection.on("change:blubb", function() { changeCount = changeCount + 1; });
|
392
|
+
newModel.set({"blah": "blah"});
|
393
|
+
|
394
|
+
expect(changeCount).toEqual(1);
|
395
|
+
});
|
396
|
+
|
397
|
+
it("property change events are not fired if it does not fit filter", function() {
|
398
|
+
var collection = new Backbone.Collection([ {id: 1, difficulty: 1}, {id: 2, difficulty: 2}, {id: 3, difficulty: 1}, {id: 4, difficulty: 3} ]);
|
399
|
+
var filteredCollection = new Backbone.FilteredCollection(null, {collection: collection});
|
400
|
+
filteredCollection.setFilter(function(d) { return (d.get('difficulty') === 1) });
|
401
|
+
|
402
|
+
var changeCount = 0;
|
403
|
+
var newModel = new Backbone.Model({id: 5, difficulty: 1});
|
404
|
+
collection.add(newModel);
|
405
|
+
|
406
|
+
filteredCollection.on("change:difficulty", function() { changeCount = changeCount + 1; });
|
407
|
+
newModel.set("difficulty", 2);
|
408
|
+
|
409
|
+
expect(changeCount).toEqual(0);
|
410
|
+
});
|
380
411
|
});
|
381
412
|
|
382
413
|
describe("#resetWith", function() {
|
@@ -107,6 +107,7 @@ THE SOFTWARE.
|
|
107
107
|
options || (options = {});
|
108
108
|
|
109
109
|
var ownIndexOfModel = this.indexOf(model);
|
110
|
+
var self = this;
|
110
111
|
if (this.collectionFilter(model)){
|
111
112
|
// Model passed filter
|
112
113
|
if (ownIndexOfModel < 0){
|
@@ -117,6 +118,10 @@ THE SOFTWARE.
|
|
117
118
|
// the model passes the filter and is already in the collection
|
118
119
|
// therefore we want to indicate that the model has changed
|
119
120
|
else {
|
121
|
+
_.each(_.keys(model.changed), function(key) {
|
122
|
+
self.trigger("change:" + key, model, model.changed[key], options);
|
123
|
+
});
|
124
|
+
|
120
125
|
this.trigger("change", model, this);
|
121
126
|
}
|
122
127
|
} else {
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: backbone-filtered-collection
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dmitriy Likhten
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-03-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: railties
|
@@ -48,16 +48,16 @@ dependencies:
|
|
48
48
|
name: jasmine
|
49
49
|
requirement: !ruby/object:Gem::Requirement
|
50
50
|
requirements:
|
51
|
-
- -
|
51
|
+
- - <
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version: '0'
|
53
|
+
version: '2.0'
|
54
54
|
type: :development
|
55
55
|
prerelease: false
|
56
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
57
|
requirements:
|
58
|
-
- -
|
58
|
+
- - <
|
59
59
|
- !ruby/object:Gem::Version
|
60
|
-
version: '0'
|
60
|
+
version: '2.0'
|
61
61
|
description: A filtered collection for backbone.js
|
62
62
|
email:
|
63
63
|
- dlikhten@gmail.com
|
@@ -66,7 +66,8 @@ extensions: []
|
|
66
66
|
extra_rdoc_files: []
|
67
67
|
files:
|
68
68
|
- .gitignore
|
69
|
-
- .
|
69
|
+
- .ruby-gemset
|
70
|
+
- .ruby-version
|
70
71
|
- .travis.yml
|
71
72
|
- Gemfile
|
72
73
|
- LICENSE
|
@@ -104,7 +105,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
104
105
|
version: '0'
|
105
106
|
requirements: []
|
106
107
|
rubyforge_project:
|
107
|
-
rubygems_version: 2.
|
108
|
+
rubygems_version: 2.1.11
|
108
109
|
signing_key:
|
109
110
|
specification_version: 4
|
110
111
|
summary: Allowing implementation of a chain-of-responsibility pattern in backbone's
|
data/.rvmrc
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
rvm use ruby-2.0.0-p247@filtered-collection --create
|