diff options
| author | Jules Laplace <jules@okfoc.us> | 2016-11-28 18:11:12 -0500 |
|---|---|---|
| committer | Jules Laplace <jules@okfoc.us> | 2016-11-28 18:11:12 -0500 |
| commit | 2860b0ceae8e08704996b3397fb8b962ca60ab95 (patch) | |
| tree | d2f868290adbfd6914aa5f139c4fcc5323a1dc7f /tree/public/assets/js/vendor/okcms.js | |
| parent | 0237b32f73b344deba694cd04fd61a52355ab33d (diff) | |
tree init
Diffstat (limited to 'tree/public/assets/js/vendor/okcms.js')
| -rw-r--r-- | tree/public/assets/js/vendor/okcms.js | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/tree/public/assets/js/vendor/okcms.js b/tree/public/assets/js/vendor/okcms.js new file mode 100644 index 0000000..ddf0892 --- /dev/null +++ b/tree/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) + } + } +} |
