summaryrefslogtreecommitdiff
path: root/new-reality/public/assets/js/vendor/okcms.js
diff options
context:
space:
mode:
Diffstat (limited to 'new-reality/public/assets/js/vendor/okcms.js')
-rw-r--r--new-reality/public/assets/js/vendor/okcms.js45
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)
+ }
+ }
+}