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

Version Path
transponder-0.1.5 lib/assets/javascripts/transponder/presenter.coffee
transponder-0.1.4 lib/assets/javascripts/transponder/presenter.coffee
transponder-0.1.3 lib/assets/javascripts/transponder/presenter.coffee
transponder-0.1.2 lib/assets/javascripts/transponder/presenter.coffee
transponder-0.1.1 lib/assets/javascripts/transponder/presenter.coffee
transponder-0.1.0 lib/assets/javascripts/transponder/presenter.coffee
transponder-0.0.8 lib/assets/javascripts/transponder/presenter.coffee
transponder-0.0.7 lib/assets/javascripts/transponder/presenter.coffee
transponder-0.0.6 lib/assets/javascripts/transponder/presenter.coffee
transponder-0.0.5 lib/assets/javascripts/transponder/presenter.coffee