Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
169 changes: 137 additions & 32 deletions dist/dataloader.min.js
Original file line number Diff line number Diff line change
Expand Up @@ -57,10 +57,10 @@ return /******/ (function(modules) { // webpackBootstrap
'use strict';

var Datasource = __webpack_require__(1);
var DependentDatasource = __webpack_require__(43);
var FilteredDatasource = __webpack_require__(44);
var Collection = __webpack_require__(45);
var ObjectTest = __webpack_require__(46);
var DependentDatasource = __webpack_require__(44);
var FilteredDatasource = __webpack_require__(45);
var Collection = __webpack_require__(46);
var ObjectTest = __webpack_require__(47);
var DSManager = __webpack_require__(29);
var uuid = __webpack_require__(33);
// Exports components
Expand Down Expand Up @@ -3480,21 +3480,21 @@ return /******/ (function(modules) { // webpackBootstrap
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }

var Reflux = __webpack_require__(3);
var DataActionGenerator = __webpack_require__(34);
var nsync = __webpack_require__(35);
var client = __webpack_require__(36);
var DataActionGenerator = __webpack_require__(35);
var nsync = __webpack_require__(36);
var client = __webpack_require__(37);

var storeTemplates = {
// Shared/persistent stores are Loki
shared: __webpack_require__(30),

// Unique/ephemeral stores are Immutable
unique: __webpack_require__(39)
unique: __webpack_require__(40)
};

var urlBuilders = {
'default': __webpack_require__(41),
dependent: __webpack_require__(42)
'default': __webpack_require__(42),
dependent: __webpack_require__(43)
};

/**
Expand Down Expand Up @@ -3753,6 +3753,7 @@ return /******/ (function(modules) { // webpackBootstrap
var loki = __webpack_require__(31);
var _ = __webpack_require__(27);
var uuid = __webpack_require__(33);
var StaleCache = __webpack_require__(34);
/**
* @class LowkeySource
* @description Manages Loki datasource
Expand Down Expand Up @@ -3821,12 +3822,38 @@ return /******/ (function(modules) { // webpackBootstrap
name: name,
collection: collection,
dynamicViews: {},
staleCache: new StaleCache(options),

/**
* Initializes store
*/
init: function init() {},

undoChanges: function undoChanges() {
var _this = this;

var n = arguments[0] === undefined ? 1 : arguments[0];

var staleData = this.staleCache.getCollection(n);
var memoized = {};
staleData.forEach(function (obj) {
var formatted = _.clone(obj);

if (formatted.$type === "add") {
delete formatted.$type;
_this.destroy(formatted[idAttr], false);
} else {
delete formatted.$type;
_this.setObject(formatted);
}
});
this.flushStale();
},

flushStale: function flushStale() {
this.staleCache.flush();
},

/**
* Adds an object to the store
* @param {object} object Object to add
Expand All @@ -3850,6 +3877,8 @@ return /******/ (function(modules) { // webpackBootstrap
object[idAttr] = "temp" + uuid.v4();
}
this.collection.insert(object);

this.staleCache.push("add", object);
this.trigger("add", object, trigger);
}
},
Expand All @@ -3860,16 +3889,17 @@ return /******/ (function(modules) { // webpackBootstrap
* @return {event} Triggers event
*/
setCollection: function setCollection(collection) {
var _this = this;
var _this2 = this;

_.map(collection, function (object) {
var stale = _this.getDatabaseEntity(object);
var stale = _this2.getDatabaseEntity(object);
if (stale) {
_this.collection.update(_.extend(stale, object));
_this2.collection.update(_.extend(stale, object));
} else {
_this.collection.insert(object);
_this2.collection.insert(object);
}
});
this.staleCache.flush();
this.trigger("setCollection", this.getCollection());
},

Expand All @@ -3880,10 +3910,16 @@ return /******/ (function(modules) { // webpackBootstrap
setObject: function setObject(object) {
var stale = this.getDatabaseEntity(object);
if (stale) {
this.update(object, false);
if (!object.$loki) {
object.$loki = stale.$loki;
object.meta = stale.meta;
}
this.collection.update(object);
this.trigger("update", object, false);
} else {
this.add(object, false);
}
this.staleCache.flush();
},

/**
Expand All @@ -3894,7 +3930,12 @@ return /******/ (function(modules) { // webpackBootstrap
destroy: function destroy(id) {
var trigger = arguments[1] === undefined ? true : arguments[1];

this.collection.remove(this.get(id));
var object = this.get(id);

// @TODO: StaleCache should just listen for triggers
this.staleCache.push("destroy", object);

this.collection.remove(object);
this.trigger("destroy", id, trigger);
},

Expand All @@ -3921,6 +3962,8 @@ return /******/ (function(modules) { // webpackBootstrap
if (!stale) {
console.warn("ProcoreReact: Trying to update an inexisting element.");
} else {
/// @TODO: StaleCache should just listen for triggers
this.staleCache.push("update", stale);
var updated = _.extend({}, stale, updates);
this.collection.update(updated);
this.trigger("update", updated, trigger);
Expand Down Expand Up @@ -7969,6 +8012,65 @@ return /******/ (function(modules) { // webpackBootstrap

'use strict';

var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();

function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }

var _ = __webpack_require__(27);

var StaleCache = (function () {
function StaleCache(options) {
_classCallCheck(this, StaleCache);

this.collection = [];
this.idAttr = options.idAttr;
}

_createClass(StaleCache, [{
key: 'getCollection',
value: function getCollection(n) {
var memoized = {};
var idAttr = this.idAttr;

// this.collection.reverse().forEach(obj=> {
// if (!memoized[obj[idAttr]]) { memoized[obj[idAttr]] = 1; }
// else if (memoized[obj[idAttr]] === n) {
// this.setObject(obj)
// }
// else { memoized[obj[idAttr]] += 1 }
// });

return this.collection.reverse();
}
}, {
key: 'push',
value: function push($type, object) {
var formatted = _.extend({}, { $type: $type }, object);
this.collection.push(formatted);
}
}, {
key: 'pop',
value: function pop(object) {
this.collection = this.collection.without(object);
}
}, {
key: 'flush',
value: function flush() {
this.collection = [];
}
}]);

return StaleCache;
})();

module.exports = StaleCache;

/***/ },
/* 35 */
/***/ function(module, exports, __webpack_require__) {

'use strict';

var Reflux = __webpack_require__(3);
var cached = {};

Expand All @@ -7982,7 +8084,7 @@ return /******/ (function(modules) { // webpackBootstrap
return cached[resourceName];
}

var actions = Reflux.createActions(['add', 'update', 'destroy', 'filter', 'sort', 'search', 'registerView', 'resetView', 'reload', 'populate', 'destroyAll', 'setObject', 'setCollection']);
var actions = Reflux.createActions(['add', 'update', 'destroy', 'filter', 'sort', 'search', 'registerView', 'resetView', 'reload', 'populate', 'destroyAll', 'setObject', 'setCollection', 'undoChanges']);

if (resourceName) {
cached[resourceName] = actions;
Expand All @@ -7994,7 +8096,7 @@ return /******/ (function(modules) { // webpackBootstrap
module.exports = DataActionGenerator;

/***/ },
/* 35 */
/* 36 */
/***/ function(module, exports, __webpack_require__) {

'use strict';
Expand Down Expand Up @@ -8095,6 +8197,7 @@ return /******/ (function(modules) { // webpackBootstrap

this.client.update(object, this.serializer).then(function (responseObject) {
_this3._updateSuccess(object, responseObject);
_this3.store.flushStale();
}).fail(function (err) {
console.error(err);
});
Expand All @@ -8114,6 +8217,7 @@ return /******/ (function(modules) { // webpackBootstrap

this.client.destroy(id).then(function (result) {
_this4.trigger('destroy', result);
_this4.store.flushStale();
}).fail(function (err) {
console.error(err);
});
Expand All @@ -8127,6 +8231,7 @@ return /******/ (function(modules) { // webpackBootstrap

this.client.add(object, this.serializer).then(function (responseObject) {
_this5.store.listenables.setObject(_.extend({}, object, responseObject));
_this5.store.flushStale();
_this5.trigger('add', responseObject);
}).fail(function (err) {
console.error(err);
Expand All @@ -8141,7 +8246,7 @@ return /******/ (function(modules) { // webpackBootstrap
};

/***/ },
/* 36 */
/* 37 */
/***/ function(module, exports, __webpack_require__) {

'use strict';
Expand All @@ -8150,9 +8255,9 @@ return /******/ (function(modules) { // webpackBootstrap

function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }

var q = __webpack_require__(37);
var q = __webpack_require__(38);
var _ = __webpack_require__(27);
var reqwest = __webpack_require__(38);
var reqwest = __webpack_require__(39);

/**
* @class Client
Expand Down Expand Up @@ -8349,7 +8454,7 @@ return /******/ (function(modules) { // webpackBootstrap
module.exports = Client;

/***/ },
/* 37 */
/* 38 */
/***/ function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(process, setImmediate) {// vim:ts=4:sts=4:sw=4:
Expand Down Expand Up @@ -10404,7 +10509,7 @@ return /******/ (function(modules) { // webpackBootstrap
/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(12), __webpack_require__(11).setImmediate))

/***/ },
/* 38 */
/* 39 */
/***/ function(module, exports, __webpack_require__) {

var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
Expand Down Expand Up @@ -11025,15 +11130,15 @@ return /******/ (function(modules) { // webpackBootstrap


/***/ },
/* 39 */
/* 40 */
/***/ function(module, exports, __webpack_require__) {

/**
* @module ImmutableStore
*/
"use strict";

var _require = __webpack_require__(40);
var _require = __webpack_require__(41);

var List = _require.List;

Expand Down Expand Up @@ -11140,7 +11245,7 @@ return /******/ (function(modules) { // webpackBootstrap
module.exports = generateStore;

/***/ },
/* 40 */
/* 41 */
/***/ function(module, exports, __webpack_require__) {

/**
Expand Down Expand Up @@ -16072,7 +16177,7 @@ return /******/ (function(modules) { // webpackBootstrap
}));

/***/ },
/* 41 */
/* 42 */
/***/ function(module, exports) {

"use strict";
Expand Down Expand Up @@ -16101,7 +16206,7 @@ return /******/ (function(modules) { // webpackBootstrap
module.exports = defaultUrlBuilder;

/***/ },
/* 42 */
/* 43 */
/***/ function(module, exports) {

"use strict";
Expand Down Expand Up @@ -16133,7 +16238,7 @@ return /******/ (function(modules) { // webpackBootstrap
module.exports = dependentUrlBuilder;

/***/ },
/* 43 */
/* 44 */
/***/ function(module, exports, __webpack_require__) {

'use strict';
Expand Down Expand Up @@ -16277,7 +16382,7 @@ return /******/ (function(modules) { // webpackBootstrap
module.exports = DependentDatasource;

/***/ },
/* 44 */
/* 45 */
/***/ function(module, exports, __webpack_require__) {

'use strict';
Expand Down Expand Up @@ -16501,7 +16606,7 @@ return /******/ (function(modules) { // webpackBootstrap
module.exports = FilteredDatasource;

/***/ },
/* 45 */
/* 46 */
/***/ function(module, exports, __webpack_require__) {

'use strict';
Expand Down Expand Up @@ -16599,7 +16704,7 @@ return /******/ (function(modules) { // webpackBootstrap
module.exports = Collection;

/***/ },
/* 46 */
/* 47 */
/***/ function(module, exports, __webpack_require__) {

"use strict";
Expand Down
3 changes: 2 additions & 1 deletion lib/actions/DataActionGenerator.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ var DataActionGenerator = function(resourceName) {
'populate',
'destroyAll',
'setObject',
'setCollection'
'setCollection',
"undoChanges"
]);

if (resourceName) {
Expand Down
Loading