Sha256: 5e14d1f2a72d390cc39409b72abf0910472df123da6659ce8674f031c62cecb2

Contents?: true

Size: 1.58 KB

Versions: 2

Compression:

Stored size: 1.58 KB

Contents

@Jibe ||= {}

Jibe.events ||= {}

Jibe.tearDown = ->
	Jibe.initialized = false
	Jibe.pusher.disconnect()
	
Jibe.initialized = false

Jibe.init = ->
	unless Jibe.initialized
		Jibe.initialized = true
		pusher_key = $("meta[name='pusher-key']").attr("content")
		Jibe.pusher = new Pusher pusher_key
		channel = Jibe.pusher.subscribe "Jibe"
		
		channel.bind "event", (data) ->
			$("script[type='x-jibe'][data-resource='#{data.collection}']").each ->
				scope = $(this).data("scope")
				wrapper = $(this).parent()
				before_hook_name = "before#{data.action_capitalized}"
				after_hook_name = "after#{data.action_capitalized}"
				partial = $(data.partial)
				on_page = $(this).parent().find(".#{data.dom_id}, ##{data.dom_id}, .#{data.model}[data-id='#{data.id}']")
				has_events = typeof Jibe.events[data.collection] != "undefined"
				
				if has_events && typeof Jibe.events[data.collection][before_hook_name] == "function"
					Jibe.events[data.collection][before_hook_name].call null, partial, data.data, scope

				if data.action_name == "create"
					if $(this).data("strategy") == "prepend"
						partial.prependTo wrapper
					else
						partial.appendTo wrapper
				else if data.action_name == "update"
					on_page.replaceWith partial
				
				if has_events && typeof Jibe.events[data.collection][after_hook_name] == "function"
					Jibe.events[data.collection][after_hook_name].call null, partial, data.data, scope
				
				if data.action_name == "destroy"
					on_page.remove()

$ ->
	Jibe.init()

document.addEventListener "page:fetch", Jibe.tearDown
document.addEventListener "page:change", Jibe.init

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
jibe-0.0.3 app/assets/javascript/jibe.js.coffee
jibe-0.0.2 app/assets/javascript/jibe.js.coffee