summaryrefslogtreecommitdiff
path: root/tree/public/assets/js/vendor/okcms.js
diff options
context:
space:
mode:
authorJules Laplace <jules@okfoc.us>2016-11-28 18:11:12 -0500
committerJules Laplace <jules@okfoc.us>2016-11-28 18:11:12 -0500
commit2860b0ceae8e08704996b3397fb8b962ca60ab95 (patch)
treed2f868290adbfd6914aa5f139c4fcc5323a1dc7f /tree/public/assets/js/vendor/okcms.js
parent0237b32f73b344deba694cd04fd61a52355ab33d (diff)
tree init
Diffstat (limited to 'tree/public/assets/js/vendor/okcms.js')
-rw-r--r--tree/public/assets/js/vendor/okcms.js45
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)
+ }
+ }
+}