summaryrefslogtreecommitdiff
path: root/public/assets/javascripts/rectangles/util/minotaur.js
diff options
context:
space:
mode:
Diffstat (limited to 'public/assets/javascripts/rectangles/util/minotaur.js')
-rw-r--r--public/assets/javascripts/rectangles/util/minotaur.js67
1 files changed, 36 insertions, 31 deletions
diff --git a/public/assets/javascripts/rectangles/util/minotaur.js b/public/assets/javascripts/rectangles/util/minotaur.js
index 6eb36ec..039a053 100644
--- a/public/assets/javascripts/rectangles/util/minotaur.js
+++ b/public/assets/javascripts/rectangles/util/minotaur.js
@@ -1,54 +1,59 @@
(function(){
var Monitor = function () {
- var base = this;
- base.$el = $("#minotaur");
- base.timeout = null;
- base.delay = 500;
- base.objects = {};
+ var base = this
+ base.$el = $("#minotaur")
+ base.timeout = null
+ base.delay = 500
+ base.objects = {}
base.init = function () {
- base.$el.addClass('saved');
- base.$el.click(base.save);
+ base.$el.removeClass()
+ base.$el.click(base.save)
}
base.watch = function (object) {
- base.objects[object.type] = base.objects[object.type] || {};
- base.objects[object.type][object.id] = object;
- base.clear();
- base.timeout = setTimeout(base.save, base.delay);
+ base.objects[object.type] = base.objects[object.type] || {}
+ base.objects[object.type][object._id] = object
+ base.clear()
+ base.timeout = setTimeout(base.save, base.delay)
+ }
+
+ base.unwatch = function (object) {
+ if (base.objects[object.type] && base.objects[object.type][object._id]) {
+ delete base.objects[object.type][object._id]
+ }
}
base.clear = function () {
- if (base.timeout) clearTimeout(base.timeout);
- base.timeout = false;
+ if (base.timeout) clearTimeout(base.timeout)
+ base.timeout = false
}
base.save = function () {
- var saving = false;
- base.clear();
+ var saving = false
+ base.clear()
for (var type in base.objects) {
for (var id in base.objects[type]) {
- if (base.timeout)
- return;
- var obj = base.objects[type][id];
- if (obj) obj.save(function(){
- base.$el.removeClass('unsaved saving').addClass('saved');
- saving = true;
- });
- base.objects[type][id] = false;
+ var obj = base.objects[type][id]
+ if (obj) {
+ obj.save(null, function(){ base.hide() }, function(){})
+ }
+ delete base.objects[type][id]
+ saving = true
}
}
- if (saving) {
- base.$el.removeClass('unsaved saved').addClass('saving');
- }
- else {
- base.$el.removeClass('unsaved saving').addClass('saved');
- }
-
- base.objects = {};
+ saving ? base.show() : base.hide()
+ }
+
+ base.show = function () {
+ base.$el.removeClass().addClass('saving')
+ }
+
+ base.hide = function () {
+ base.$el.removeClass()
}
base.init();