Sha256: 4088c76ca1199b5e7b8fd644be7036604c1d47c50b1bf64315dbc2d55833bfdd
Contents?: true
Size: 1.66 KB
Versions: 10
Compression:
Stored size: 1.66 KB
Contents
class Transponder.Presenter actions: ['new', 'index', 'show', 'update', 'edit', 'create', 'destroy'] params: {} presenterName: null nameSpace: null modelName: null element: null response: null constructor: (options = {}) -> options.presenterName = @presenterName unless options.presenterName options.nameSpace = @nameSpace unless options.nameSpace options.actions = @actions unless options.actions doc = $(document) events = [] for action in options.actions events.push(Transponder.buildEvent(['ujs', options.nameSpace, options.presenterName, action])) doc.on(events.join(' '), @runAction) elify: (event, response) -> if @response.errors if @response.id then "##{@modelName}_#{@response.id}" else "#new_#{@modelName}" else "#{event.target.localName}##{event.target.id}" beforeFilter: (event, response) -> @response = response @element = @elify(event, response) @params = Transponder.req.objectifyParams() runAction: (event, response) => @beforeFilter(event, response) if @response.errors @errorOut() else @[event.type.split(':').pop()]() @afterFilter(event, response) afterFilter: (event, response) -> triggerEmpty: (eventName) -> console.log "#{eventName} triggered! Override this action in your own presenter" errorOut: -> console.log "an error has occured!" index: -> @triggerEmpty('Index') show: -> @triggerEmpty('Show') new: -> @triggerEmpty('New') edit: -> @triggerEmpty('Edit') update: -> @triggerEmpty('Update') create: -> @triggerEmpty('Create') destroy: -> @triggerEmpty('Destroy')
Version data entries
10 entries across 10 versions & 1 rubygems