Sha256: 51410dec9639b5f16c0d814727f5bd28701036fc031f1c3f693bd475cb3c7b91

Contents?: true

Size: 1.61 KB

Versions: 4

Compression:

Stored size: 1.61 KB

Contents

export default class SaveManager {
  constructor() {
    this.override_save_button()
    this.elements = []
  }

  override_save_button() {
    Blacklight.onLoad(() => {
      this.save_button.on('click', this.clicked_save)
    })
  }

  push_changed(element) {
    this.elements.push(element)
    this.elements = $.unique(this.elements)
    this.check_button()
  }

  mark_unchanged(element) {
    this.elements = jQuery.grep(this.elements, (value) => {
      return value != element
    })
    this.check_button()
  }

  check_button() {
    if (this.is_changed) {
      this.save_button.removeClass("disabled")
      this.save_button.attr("aria-disabled", "false")
    } else {
      this.save_button.addClass("disabled")
      this.save_button.attr("aria-disabled", "true")
    }
  }

  persist() {
    let promises = []
    this.elements.forEach((element) => {
      let result = element.persist()
      promises.push(
        result.then(() => { return element })
        .done((element) => { this.mark_unchanged(element) })
        .fail((element) => { this.push_changed(element) })
      )
    })
    var label = this.save_button.text()
    this.save_button.text(label + " ...")
    this.save_button.addClass("disabled")
    $.when.apply($, promises).always(() => { this.reset_save_button(label) })
  }
  
  reset_save_button(label) {
    this.save_button.text(label)
    this.check_button()
  }

  get is_changed() {
    return this.elements.length > 0
  }

  get save_button() {
    return $("*[data-action='save-actions']")
  }

  get clicked_save() {
    return (event) => {
      event.preventDefault()
      this.persist()
    }
  }
}

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
hyrax-5.1.0.pre.beta1 app/assets/javascripts/hyrax/file_manager/save_manager.es6
hyrax-5.0.4 app/assets/javascripts/hyrax/file_manager/save_manager.es6
hyrax-5.0.3 app/assets/javascripts/hyrax/file_manager/save_manager.es6
hyrax-5.0.2 app/assets/javascripts/hyrax/file_manager/save_manager.es6