summaryrefslogtreecommitdiff
path: root/studio-susie/public/assets/js/vendor/okcms.js
diff options
context:
space:
mode:
authorJules Laplace <jules@okfoc.us>2016-12-31 06:28:53 +0100
committerJules Laplace <jules@okfoc.us>2016-12-31 06:28:53 +0100
commit9f8674686bead1c8b3c88af102bdbebbba89a2e8 (patch)
treeb6f98ef6d258c9b5381afe0121b8767fd7eb4be5 /studio-susie/public/assets/js/vendor/okcms.js
parent1d34c0dffa2ed4c9a11942c356123175baf87240 (diff)
studio susie website
Diffstat (limited to 'studio-susie/public/assets/js/vendor/okcms.js')
-rw-r--r--studio-susie/public/assets/js/vendor/okcms.js45
1 files changed, 45 insertions, 0 deletions
diff --git a/studio-susie/public/assets/js/vendor/okcms.js b/studio-susie/public/assets/js/vendor/okcms.js
new file mode 100644
index 0000000..ddf0892
--- /dev/null
+++ b/studio-susie/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)
+ }
+ }
+}