diff options
author | Jacob Schatz <jacobschatz@Jacobs-MBP.fios-router.home> | 2016-03-31 21:48:12 +0300 |
---|---|---|
committer | Arinde Eniola <eniolaarinde1@gmail.com> | 2016-04-13 15:41:25 +0300 |
commit | 90a8564d219af079c8a1785c57b8e9a0d3e79820 (patch) | |
tree | 03a4d23dd8063b9fa55c5435bf7add90a700b5a8 | |
parent | 59c735bd1efe13405a7cdc11d9617be09d599266 (diff) |
Add instance and event manager
-rw-r--r-- | app/assets/javascripts/glpage.js.coffee | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/app/assets/javascripts/glpage.js.coffee b/app/assets/javascripts/glpage.js.coffee new file mode 100644 index 00000000000..1ce33ed96fa --- /dev/null +++ b/app/assets/javascripts/glpage.js.coffee @@ -0,0 +1,48 @@ +window.GlPage = { + instances: {} + events: [] + pages: {} + new: (name) -> + @pages[name] = { + instances: {} + events: [] + use: (instance, name) -> + generated = name || Math.random().toString(36).substring(7) + @instances[generated] = { + instance: instance + name: generated + } + generated + + get: (name) -> + @instances[name].instance + + on: (el, args...) -> + # turn args into array + $el = $(el) + @events.push({ + el: el, + args: args + }) + $el.on.apply($el, args) + + off: (el, args...) -> + $el = $(el) + $el.off.apply($el, args) + + allOff: -> + @events.forEach((event) => + $el = $(event.el) + $el.off.apply($el, event.args) + ) + + remove: (name) -> + delete @instances[name] + + removeAll: -> + @instances = {} + @allOff() + @events = [] + return + } +}
\ No newline at end of file |