diff options
Diffstat (limited to 'new-reality/public/assets/js/vendor/okcms.js')
| -rw-r--r-- | new-reality/public/assets/js/vendor/okcms.js | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/new-reality/public/assets/js/vendor/okcms.js b/new-reality/public/assets/js/vendor/okcms.js new file mode 100644 index 0000000..ddf0892 --- /dev/null +++ b/new-reality/public/assets/js/vendor/okcms.js @@ -0,0 +1,45 @@ +function OKCMS () { + + var cache = null + + this.getAll = function () { + var deferred = $.Deferred() + if (cache) { + deferred.resolve(cache) + } else { + $.ajax({ + method: 'GET', + url: '/db.json', + dataType: 'json' + }).done(onFetch).fail(onError) + } + + return deferred + + function onFetch (data) { + cache = sort(data) + // Freeze that mutha + // if (Object.freeze) + // deepFreeze(cache) + deferred.resolve(data) + } + + function onError (err) { + deferred.reject(err) + } + + // In-place sort by __index + function sort (data) { + Object.keys(data).forEach(function (key) { + data[key] = (data[key] || []).sort(byIndex) + }) + return data + } + + function byIndex (a, b) { + var iA = a && a.__index + var iB = b && b.__index + return iA > iB ? -1 : (iB > iA ? 1 : 0) + } + } +} |
