Sha256: 6f389b4c17fb4430e49dc32198da0ec876716e0431d80b2341c182a459b1735e

Contents?: true

Size: 1.88 KB

Versions: 12

Compression:

Stored size: 1.88 KB

Contents

window.xhr2_available = ->
  !!window.ProgressEvent && !!window.FormData

window.alexandrie =
  enable_xhr_upload: true

  load: ->
    $("#dorsale-attachments").map ->
      container = $(this)
      url       = this.dataset.url

      $.ajax
        url: url
        success: (data) ->
          container.html(data)
          setupUploadInputs(container)
          alexandrie.setupCreateForm()
          alexandrie.setupEditButtons()
          alexandrie.setupDeleteButtons()

  reload: ->
    alexandrie.load()

  setupCreateForm: ->
    return unless xhr2_available()
    return unless alexandrie.enable_xhr_upload

    $("#new_attachment").submit ->
      form = $(this)
      xhr  = new XMLHttpRequest()
      data = new FormData(this)

      xhr.upload.addEventListener "progress", (e) ->
        return unless e.lengthComputable

        percentComplete = Math.round(e.loaded * 100 / e.total)
        percentComplete = 1  if percentComplete == 0
        percentComplete = 99 if percentComplete == 100

        bar = form.find(".progress-bar")
        bar.html percentComplete+"%"
        bar.css  "width":         percentComplete+"%"
        bar.attr "aria-valuenow": percentComplete

      xhr.addEventListener "load", (e) ->
        alexandrie.reload()

      xhr.open("POST", this.action, true)
      xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest")
      xhr.send(data)

      return false

  setupEditForm: ->
    $("#edit_attachment").on("ajax:success", alexandrie.reload)

  setupEditButtons: ->
    $("#dorsale-attachments [href$=edit]").click ->
      container = $(this).parents("li")
      url       = this.href

      $.ajax
        url: url
        success: (data) ->
          container.html(data)
          alexandrie.setupEditForm()

      return false

  setupDeleteButtons: ->
    $("#dorsale-attachments [data-method=delete]").map ->
      $(this).on("ajax:success", alexandrie.reload)

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
dorsale-3.1.3 app/assets/javascripts/dorsale/engines/alexandrie.coffee
dorsale-3.1.2 app/assets/javascripts/dorsale/engines/alexandrie.coffee
dorsale-3.1.1 app/assets/javascripts/dorsale/engines/alexandrie.coffee
dorsale-3.1.0 app/assets/javascripts/dorsale/engines/alexandrie.coffee
dorsale-3.0.3 app/assets/javascripts/dorsale/alexandrie/all.coffee
dorsale-3.0.2 app/assets/javascripts/dorsale/alexandrie/all.coffee
dorsale-3.0.1 app/assets/javascripts/dorsale/alexandrie/all.coffee
dorsale-3.0.0 app/assets/javascripts/dorsale/alexandrie/all.coffee
dorsale-2.7.3 app/assets/javascripts/dorsale/alexandrie/all.coffee
dorsale-2.7.2 app/assets/javascripts/dorsale/alexandrie/all.coffee
dorsale-2.7.1 app/assets/javascripts/dorsale/alexandrie/all.coffee
dorsale-2.7.0 app/assets/javascripts/dorsale/alexandrie/all.coffee