Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacob Schatz <jacobschatz@Jacobs-MBP.fios-router.home>2016-03-31 21:48:12 +0300
committerArinde Eniola <eniolaarinde1@gmail.com>2016-04-13 15:41:25 +0300
commit90a8564d219af079c8a1785c57b8e9a0d3e79820 (patch)
tree03a4d23dd8063b9fa55c5435bf7add90a700b5a8
parent59c735bd1efe13405a7cdc11d9617be09d599266 (diff)
Add instance and event manager
-rw-r--r--app/assets/javascripts/glpage.js.coffee48
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