Sha256: c28a7fcd0c01967a47d583fd2e1d6b0cde6c86ea1361693820260b853d656a28

Contents?: true

Size: 1.48 KB

Versions: 1

Compression:

Stored size: 1.48 KB

Contents

class @SuperchargedForm
  constructor: (selector, @options = {}) ->
    @form = $(selector)
    return if @form.length == 0

    @amount_input = @form.find("[role='charge-amount']")
    @gateway_name_input = @form.find("[role='charge-gateway-name']")
    @id_input = @form.find("[role='payment-form-order']")

    @form.submit =>
      valid = @startPayment()

      unless valid
        return false

      unless parseInt(@id_input.val())
        alert("Error: undefined charge id")
        return false

    $("@charge-submit-button").prop("disabled", false)

  startPayment: ->
    valid = true
    @createInternalTransaction(
      success: (charge)=>
        @prepareGatewayForm(charge)
      validationError: (errors)=>
        valid = false

        handler = @options.onValidationError
        handler.call(this, errors) if handler?
    )

    valid

  createInternalTransaction: (options) ->
    charge_attributes = @getChargeAttributes()
    $.ajax(
      url: "/charges.json",
      type: "POST",
      async: false,
      data: {charge: charge_attributes},
      success: (response) ->
        options.success(response.charge)
      error: (jqXHR, status, errorThrown)=>
        return unless jqXHR.status == 422

        response = $.parseJSON(jqXHR.responseText)
        options.validationError(response.errors)
    )

  getChargeAttributes: ->
    {
      amount: @amount_input.val(),
      gateway_name: @gateway_name_input.val()
    }

  prepareGatewayForm: (charge) ->
    @id_input.val(charge.id)

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
supercharged-2.2.0 app/assets/javascripts/charge_form.js.coffee.erb