Sha256: 7fbe38da4abd0bee18460673d35dd53c2c3fd211f82b9f22ece48c68914c8d74

Contents?: true

Size: 1.5 KB

Versions: 4

Compression:

Stored size: 1.5 KB

Contents

class @Form extends Backbone.View

  sending = false
  formValidation = undefined
  formAjax = undefined

  initValidationObject : () ->
    @formValidation = new FormValidation
      validationObject : @$el.validate @getValidationData()

  initFormAjax : () ->
    @formAjax = new FormAjax
      el : @$el
    @formAjax.on('ajax-start', @_onAjaxStart)
      .on('ajax-done', @_onAjaxDone)
      .on('ajax-fail', @_onAjaxFail)
      .on('ajax-finish', @_onAjaxFinish)

  getValidationData : () ->
    highlight : (element) ->
      $(element).parent().removeClass('success').addClass 'error'

    unhighlight : (element) ->
      $(element).parent().removeClass('error').addClass 'success'

    submitHandler : () =>
      return if @sending
      lazySubmitHandler = () =>
        @formAjax.submitHandler()
      if @handlerExist('ajax-before-submit')
        @trigger('ajax-before-submit', [ lazySubmitHandler ])
      else
        lazySubmitHandler.call()
      return false

  handlerExist : (name) ->
    jQuery._data(@el).events[name]

  trigger : () ->
    @$el.triggerHandler.apply(@$el, arguments)

  _onAjaxStart : () =>
    @sending = true

  _onAjaxDone : (data) =>
    @trigger 'ajax-submit-done', [data]

  _onAjaxFail : (data) =>
    @trigger 'ajax-submit-fail', [data]
    @formValidation.displayFieldErrors(data.errors)

  _onAjaxFinish : (data) =>
    @trigger 'ajax-submit-always', [data]
    @sending = false


Form.init = ($el) ->
  form = new Form
    el : $el
  form.initValidationObject()
  form.initFormAjax()
  form

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
rademade_admin-0.1.3 app/assets/javascripts/rademade_admin/form/form.coffee
rademade_admin-0.1.2 app/assets/javascripts/rademade_admin/form/form.coffee
rademade_admin-0.1.1 app/assets/javascripts/rademade_admin/form/form.coffee
rademade_admin-0.1.0 app/assets/javascripts/rademade_admin/form/form.coffee