Skip to content

Commit 14ee136

Browse files
committed
Fixes #18.
Stable Version 0.4.2.
1 parent d3b4922 commit 14ee136

File tree

11 files changed

+39
-74
lines changed

11 files changed

+39
-74
lines changed

CHANGELOG.md

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
##### 0.4.2 - 15 January 2014
2+
3+
###### Backwards compatible bug fixes
4+
- #18 - observers aren't created for items injected into the store from a findAll() call.

README.md

+10-1
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,21 @@
22

33
__Data store for Angular.js.__
44

5-
__Current version:__ 0.4.0
5+
__Current version:__ 0.4.2
66

77
Angular-data is in a pre-1.0.0 development stage; the API is fluctuating, not a lot of tests yet, etc.
88

99
Not for production use (yet).
1010

11+
Pending:
12+
- Roadmap
13+
- Website / documentation
14+
- 100% tested (whatever _that_ means)
15+
- See [issues](https://github.com/jmdobry/angular-data/issues?milestone=8&page=1&state=open) for what's in development
16+
17+
## Changelog
18+
[CHANGELOG.md](https://github.com/jmdobry/angular-data/blob/master/CHANGELOG.md)
19+
1120
## Resources
1221

1322
#### Community

bower.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"author": "Jason Dobry",
33
"name": "angular-data",
44
"description": "Data store for Angular.js.",
5-
"version": "0.4.1",
5+
"version": "0.4.2",
66
"homepage": "http://jmdobry.github.io/angular-data/",
77
"repository": {
88
"type": "git",

dist/angular-data.js

+11-35
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/**
22
* @author Jason Dobry <[email protected]>
33
* @file angular-data.js
4-
* @version 0.4.1 - Homepage <http://jmdobry.github.io/angular-data/>
4+
* @version 0.4.2 - Homepage <http://jmdobry.github.io/angular-data/>
55
* @copyright (c) 2014 Jason Dobry <https://github.com/jmdobry/angular-data>
66
* @license MIT <https://github.com/jmdobry/angular-data/blob/master/LICENSE>
77
*
@@ -2071,28 +2071,22 @@ function processResults(data, resourceName, queryHash) {
20712071
delete resource.pendingQueries[queryHash];
20722072
resource.completedQueries[queryHash] = new Date().getTime();
20732073

2074-
var temp = [];
2074+
// Merge the new values into the cache
20752075
for (var i = 0; i < data.length; i++) {
2076-
temp.push(data[i]);
2076+
this.inject(resourceName, data[i]);
20772077
}
2078-
// Merge the new values into the cache
2079-
resource.collection = utils.mergeArrays(resource.collection, data, resource.idAttribute || 'id');
20802078

20812079
// Update the data store's index for this resource
2082-
resource.index = utils.toLookup(resource.collection, resource.idAttribute || 'id');
2083-
2084-
// Update modified timestamp for values that were return by the server
2085-
for (var j = 0; j < temp.length; j++) {
2086-
resource.modified[temp[j][resource.idAttribute || 'id']] = utils.updateTimestamp(resource.modified[temp[j][resource.idAttribute || 'id']]);
2087-
}
2080+
resource.index = utils.toLookup(resource.collection, resource.idAttribute || services.config.idAttribute || 'id');
20882081

20892082
// Update modified timestamp of collection
20902083
resource.collectionModified = utils.updateTimestamp(resource.collectionModified);
2091-
return temp;
2084+
return data;
20922085
}
20932086

20942087
function _findAll(deferred, resourceName, params, options) {
2095-
var resource = services.store[resourceName];
2088+
var resource = services.store[resourceName],
2089+
_this = this;
20962090

20972091
var queryHash = utils.toJson(params);
20982092

@@ -2109,7 +2103,7 @@ function _findAll(deferred, resourceName, params, options) {
21092103
var url = utils.makePath(resource.baseUrl || services.config.baseUrl, resource.endpoint || resource.name);
21102104
resource.pendingQueries[queryHash] = GET(url, { params: params }).then(function (data) {
21112105
try {
2112-
deferred.resolve(processResults(data, resourceName, queryHash));
2106+
deferred.resolve(processResults.apply(_this, [data, resourceName, queryHash]));
21132107
} catch (err) {
21142108
deferred.reject(new errors.UnhandledError(err));
21152109
}
@@ -2787,16 +2781,16 @@ function DSProvider() {
27872781

27882782
module.exports = DSProvider;
27892783

2790-
},{"./async_methods":31,"./http":34,"./sync_methods":45,"errors":"hIh4e1","services":"cX8q+p","utils":"uE/lJt"}],"cX8q+p":[function(require,module,exports){
2784+
},{"./async_methods":31,"./http":34,"./sync_methods":45,"errors":"hIh4e1","services":"cX8q+p","utils":"uE/lJt"}],"services":[function(require,module,exports){
2785+
module.exports=require('cX8q+p');
2786+
},{}],"cX8q+p":[function(require,module,exports){
27912787
module.exports = {
27922788
config: {
27932789
idAttribute: 'id'
27942790
},
27952791
store: {}
27962792
};
27972793

2798-
},{}],"services":[function(require,module,exports){
2799-
module.exports=require('cX8q+p');
28002794
},{}],38:[function(require,module,exports){
28012795
var utils = require('utils'),
28022796
errors = require('errors'),
@@ -3532,12 +3526,7 @@ function _inject(resource, attrs) {
35323526
resource.changes[innerId] = utils.diffObjectFromOldObject(resource.index[innerId], resource.previous_attributes[innerId]);
35333527
resource.modified[innerId] = utils.updateTimestamp(resource.modified[innerId]);
35343528
resource.collectionModified = utils.updateTimestamp(resource.collectionModified);
3535-
3536-
services.$log.debug('old value:', JSON.stringify(resource.previous_attributes[innerId], null, 2));
3537-
services.$log.debug('changes:', resource.changes[innerId]);
3538-
services.$log.debug('new value:', JSON.stringify(resource.index[innerId], null, 2));
35393529
} catch (err) {
3540-
services.$log.error(err.stack);
35413530
throw new errors.UnhandledError(err);
35423531
}
35433532
});
@@ -4105,19 +4094,6 @@ module.exports = {
41054094
return newTimestamp;
41064095
}
41074096
},
4108-
mergeArrays: function (a, b, mergeKey) {
4109-
mergeKey = mergeKey || 'id';
4110-
for (var i = 0; i < a.length; i++) {
4111-
for (var j = 0; j < b.length; j++) {
4112-
if (a[i][mergeKey] == b[j][mergeKey]) {
4113-
angular.extend(a[i], b[j]);
4114-
b.splice(j, 1);
4115-
break;
4116-
}
4117-
}
4118-
}
4119-
return a.concat(b);
4120-
},
41214097
deepFreeze: function deepFreeze(o) {
41224098
if (typeof Object.freeze === 'function') {
41234099
var prop, propKey;

dist/angular-data.min.js

+3-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

karma.conf.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ module.exports = function (config) {
3939
},
4040

4141
// web server port
42-
port: 8080,
42+
port: 9876,
4343

4444
// cli runner port
4545
runnerPort: 9100,

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "angular-data",
33
"description": "Data store for Angular.js.",
4-
"version": "0.4.1",
4+
"version": "0.4.2",
55
"homepage": "http://github.com/jmdobry/angular-data",
66
"repository": {
77
"type": "git",

src/datastore/async_methods/findAll/index.js

+7-13
Original file line numberDiff line numberDiff line change
@@ -13,28 +13,22 @@ function processResults(data, resourceName, queryHash) {
1313
delete resource.pendingQueries[queryHash];
1414
resource.completedQueries[queryHash] = new Date().getTime();
1515

16-
var temp = [];
16+
// Merge the new values into the cache
1717
for (var i = 0; i < data.length; i++) {
18-
temp.push(data[i]);
18+
this.inject(resourceName, data[i]);
1919
}
20-
// Merge the new values into the cache
21-
resource.collection = utils.mergeArrays(resource.collection, data, resource.idAttribute || 'id');
2220

2321
// Update the data store's index for this resource
24-
resource.index = utils.toLookup(resource.collection, resource.idAttribute || 'id');
25-
26-
// Update modified timestamp for values that were return by the server
27-
for (var j = 0; j < temp.length; j++) {
28-
resource.modified[temp[j][resource.idAttribute || 'id']] = utils.updateTimestamp(resource.modified[temp[j][resource.idAttribute || 'id']]);
29-
}
22+
resource.index = utils.toLookup(resource.collection, resource.idAttribute || services.config.idAttribute || 'id');
3023

3124
// Update modified timestamp of collection
3225
resource.collectionModified = utils.updateTimestamp(resource.collectionModified);
33-
return temp;
26+
return data;
3427
}
3528

3629
function _findAll(deferred, resourceName, params, options) {
37-
var resource = services.store[resourceName];
30+
var resource = services.store[resourceName],
31+
_this = this;
3832

3933
var queryHash = utils.toJson(params);
4034

@@ -51,7 +45,7 @@ function _findAll(deferred, resourceName, params, options) {
5145
var url = utils.makePath(resource.baseUrl || services.config.baseUrl, resource.endpoint || resource.name);
5246
resource.pendingQueries[queryHash] = GET(url, { params: params }).then(function (data) {
5347
try {
54-
deferred.resolve(processResults(data, resourceName, queryHash));
48+
deferred.resolve(processResults.apply(_this, [data, resourceName, queryHash]));
5549
} catch (err) {
5650
deferred.reject(new errors.UnhandledError(err));
5751
}

src/datastore/sync_methods/inject/index.js

-5
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,7 @@ function _inject(resource, attrs) {
3535
resource.changes[innerId] = utils.diffObjectFromOldObject(resource.index[innerId], resource.previous_attributes[innerId]);
3636
resource.modified[innerId] = utils.updateTimestamp(resource.modified[innerId]);
3737
resource.collectionModified = utils.updateTimestamp(resource.collectionModified);
38-
39-
services.$log.debug('old value:', JSON.stringify(resource.previous_attributes[innerId], null, 2));
40-
services.$log.debug('changes:', resource.changes[innerId]);
41-
services.$log.debug('new value:', JSON.stringify(resource.index[innerId], null, 2));
4238
} catch (err) {
43-
services.$log.error(err.stack);
4439
throw new errors.UnhandledError(err);
4540
}
4641
});

src/utils/index.js

-13
Original file line numberDiff line numberDiff line change
@@ -22,19 +22,6 @@ module.exports = {
2222
return newTimestamp;
2323
}
2424
},
25-
mergeArrays: function (a, b, mergeKey) {
26-
mergeKey = mergeKey || 'id';
27-
for (var i = 0; i < a.length; i++) {
28-
for (var j = 0; j < b.length; j++) {
29-
if (a[i][mergeKey] == b[j][mergeKey]) {
30-
angular.extend(a[i], b[j]);
31-
b.splice(j, 1);
32-
break;
33-
}
34-
}
35-
}
36-
return a.concat(b);
37-
},
3825
deepFreeze: function deepFreeze(o) {
3926
if (typeof Object.freeze === 'function') {
4027
var prop, propKey;

test/unit/datastore/sync_methods/filter/index.test.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ describe('DS.filter(resourceName, params[, options])', function () {
6969
done();
7070
});
7171
it('should return an empty array if the query has never been made before', function (done) {
72-
$httpBackend.expectGET(new RegExp('\\' + app.baseUrl + '/posts' + '\\?query=.*')).respond(200, p1);
72+
$httpBackend.expectGET(new RegExp('\\' + app.baseUrl + '/posts' + '\\?query=.*')).respond(200, [p1]);
7373

7474
assert.deepEqual(DS.filter('post', {
7575
query: {

0 commit comments

Comments
 (0)