backbone-filtered-collection 1.2.0 → 1.2.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|