Skip to content

Commit

Permalink
Fixes #18.
Browse files Browse the repository at this point in the history
Stable Version 0.4.2.
  • Loading branch information
jmdobry committed Jan 16, 2014
1 parent d3b4922 commit 14ee136
Show file tree
Hide file tree
Showing 11 changed files with 39 additions and 74 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
##### 0.4.2 - 15 January 2014

###### Backwards compatible bug fixes
- #18 - observers aren't created for items injected into the store from a findAll() call.
11 changes: 10 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,21 @@

__Data store for Angular.js.__

__Current version:__ 0.4.0
__Current version:__ 0.4.2

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

Not for production use (yet).

Pending:
- Roadmap
- Website / documentation
- 100% tested (whatever _that_ means)
- See [issues](https://github.com/jmdobry/angular-data/issues?milestone=8&page=1&state=open) for what's in development

## Changelog
[CHANGELOG.md](https://github.com/jmdobry/angular-data/blob/master/CHANGELOG.md)

## Resources

#### Community
Expand Down
2 changes: 1 addition & 1 deletion bower.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"author": "Jason Dobry",
"name": "angular-data",
"description": "Data store for Angular.js.",
"version": "0.4.1",
"version": "0.4.2",
"homepage": "http://jmdobry.github.io/angular-data/",
"repository": {
"type": "git",
Expand Down
46 changes: 11 additions & 35 deletions dist/angular-data.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/**
* @author Jason Dobry <jason.dobry@gmail.com>
* @file angular-data.js
* @version 0.4.1 - Homepage <http://jmdobry.github.io/angular-data/>
* @version 0.4.2 - Homepage <http://jmdobry.github.io/angular-data/>
* @copyright (c) 2014 Jason Dobry <https://github.com/jmdobry/angular-data>
* @license MIT <https://github.com/jmdobry/angular-data/blob/master/LICENSE>
*
Expand Down Expand Up @@ -2071,28 +2071,22 @@ function processResults(data, resourceName, queryHash) {
delete resource.pendingQueries[queryHash];
resource.completedQueries[queryHash] = new Date().getTime();

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

// Update the data store's index for this resource
resource.index = utils.toLookup(resource.collection, resource.idAttribute || 'id');

// Update modified timestamp for values that were return by the server
for (var j = 0; j < temp.length; j++) {
resource.modified[temp[j][resource.idAttribute || 'id']] = utils.updateTimestamp(resource.modified[temp[j][resource.idAttribute || 'id']]);
}
resource.index = utils.toLookup(resource.collection, resource.idAttribute || services.config.idAttribute || 'id');

// Update modified timestamp of collection
resource.collectionModified = utils.updateTimestamp(resource.collectionModified);
return temp;
return data;
}

function _findAll(deferred, resourceName, params, options) {
var resource = services.store[resourceName];
var resource = services.store[resourceName],
_this = this;

var queryHash = utils.toJson(params);

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

module.exports = DSProvider;

},{"./async_methods":31,"./http":34,"./sync_methods":45,"errors":"hIh4e1","services":"cX8q+p","utils":"uE/lJt"}],"cX8q+p":[function(require,module,exports){
},{"./async_methods":31,"./http":34,"./sync_methods":45,"errors":"hIh4e1","services":"cX8q+p","utils":"uE/lJt"}],"services":[function(require,module,exports){
module.exports=require('cX8q+p');
},{}],"cX8q+p":[function(require,module,exports){
module.exports = {
config: {
idAttribute: 'id'
},
store: {}
};

},{}],"services":[function(require,module,exports){
module.exports=require('cX8q+p');
},{}],38:[function(require,module,exports){
var utils = require('utils'),
errors = require('errors'),
Expand Down Expand Up @@ -3532,12 +3526,7 @@ function _inject(resource, attrs) {
resource.changes[innerId] = utils.diffObjectFromOldObject(resource.index[innerId], resource.previous_attributes[innerId]);
resource.modified[innerId] = utils.updateTimestamp(resource.modified[innerId]);
resource.collectionModified = utils.updateTimestamp(resource.collectionModified);

services.$log.debug('old value:', JSON.stringify(resource.previous_attributes[innerId], null, 2));
services.$log.debug('changes:', resource.changes[innerId]);
services.$log.debug('new value:', JSON.stringify(resource.index[innerId], null, 2));
} catch (err) {
services.$log.error(err.stack);
throw new errors.UnhandledError(err);
}
});
Expand Down Expand Up @@ -4105,19 +4094,6 @@ module.exports = {
return newTimestamp;
}
},
mergeArrays: function (a, b, mergeKey) {
mergeKey = mergeKey || 'id';
for (var i = 0; i < a.length; i++) {
for (var j = 0; j < b.length; j++) {
if (a[i][mergeKey] == b[j][mergeKey]) {
angular.extend(a[i], b[j]);
b.splice(j, 1);
break;
}
}
}
return a.concat(b);
},
deepFreeze: function deepFreeze(o) {
if (typeof Object.freeze === 'function') {
var prop, propKey;
Expand Down
6 changes: 3 additions & 3 deletions dist/angular-data.min.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion karma.conf.js
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ module.exports = function (config) {
},

// web server port
port: 8080,
port: 9876,

// cli runner port
runnerPort: 9100,
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "angular-data",
"description": "Data store for Angular.js.",
"version": "0.4.1",
"version": "0.4.2",
"homepage": "http://github.com/jmdobry/angular-data",
"repository": {
"type": "git",
Expand Down
20 changes: 7 additions & 13 deletions src/datastore/async_methods/findAll/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,28 +13,22 @@ function processResults(data, resourceName, queryHash) {
delete resource.pendingQueries[queryHash];
resource.completedQueries[queryHash] = new Date().getTime();

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

// Update the data store's index for this resource
resource.index = utils.toLookup(resource.collection, resource.idAttribute || 'id');

// Update modified timestamp for values that were return by the server
for (var j = 0; j < temp.length; j++) {
resource.modified[temp[j][resource.idAttribute || 'id']] = utils.updateTimestamp(resource.modified[temp[j][resource.idAttribute || 'id']]);
}
resource.index = utils.toLookup(resource.collection, resource.idAttribute || services.config.idAttribute || 'id');

// Update modified timestamp of collection
resource.collectionModified = utils.updateTimestamp(resource.collectionModified);
return temp;
return data;
}

function _findAll(deferred, resourceName, params, options) {
var resource = services.store[resourceName];
var resource = services.store[resourceName],
_this = this;

var queryHash = utils.toJson(params);

Expand All @@ -51,7 +45,7 @@ function _findAll(deferred, resourceName, params, options) {
var url = utils.makePath(resource.baseUrl || services.config.baseUrl, resource.endpoint || resource.name);
resource.pendingQueries[queryHash] = GET(url, { params: params }).then(function (data) {
try {
deferred.resolve(processResults(data, resourceName, queryHash));
deferred.resolve(processResults.apply(_this, [data, resourceName, queryHash]));
} catch (err) {
deferred.reject(new errors.UnhandledError(err));
}
Expand Down
5 changes: 0 additions & 5 deletions src/datastore/sync_methods/inject/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -35,12 +35,7 @@ function _inject(resource, attrs) {
resource.changes[innerId] = utils.diffObjectFromOldObject(resource.index[innerId], resource.previous_attributes[innerId]);
resource.modified[innerId] = utils.updateTimestamp(resource.modified[innerId]);
resource.collectionModified = utils.updateTimestamp(resource.collectionModified);

services.$log.debug('old value:', JSON.stringify(resource.previous_attributes[innerId], null, 2));
services.$log.debug('changes:', resource.changes[innerId]);
services.$log.debug('new value:', JSON.stringify(resource.index[innerId], null, 2));
} catch (err) {
services.$log.error(err.stack);
throw new errors.UnhandledError(err);
}
});
Expand Down
13 changes: 0 additions & 13 deletions src/utils/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,19 +22,6 @@ module.exports = {
return newTimestamp;
}
},
mergeArrays: function (a, b, mergeKey) {
mergeKey = mergeKey || 'id';
for (var i = 0; i < a.length; i++) {
for (var j = 0; j < b.length; j++) {
if (a[i][mergeKey] == b[j][mergeKey]) {
angular.extend(a[i], b[j]);
b.splice(j, 1);
break;
}
}
}
return a.concat(b);
},
deepFreeze: function deepFreeze(o) {
if (typeof Object.freeze === 'function') {
var prop, propKey;
Expand Down
2 changes: 1 addition & 1 deletion test/unit/datastore/sync_methods/filter/index.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ describe('DS.filter(resourceName, params[, options])', function () {
done();
});
it('should return an empty array if the query has never been made before', function (done) {
$httpBackend.expectGET(new RegExp('\\' + app.baseUrl + '/posts' + '\\?query=.*')).respond(200, p1);
$httpBackend.expectGET(new RegExp('\\' + app.baseUrl + '/posts' + '\\?query=.*')).respond(200, [p1]);

assert.deepEqual(DS.filter('post', {
query: {
Expand Down

0 comments on commit 14ee136

Please sign in to comment.