Sha256: 810973ef5b5704df6bba19e5b950dbd3735c38c4402ac51e0ceb238ad33440b6

Contents?: true

Size: 1.58 KB

Versions: 14

Compression:

Stored size: 1.58 KB

Contents

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

  override_save_button() {
    Blacklight.onLoad(() => {
      this.save_button.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.selector.valueOf("data-action") === "*[data-action='save-actions']") {
      this.save_button.removeClass("disabled")
    } else {
      this.save_button.addClass("disabled")
    }
  }

  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

14 entries across 14 versions & 1 rubygems

Version Path
hyrax-3.6.0 app/assets/javascripts/hyrax/file_manager/save_manager.es6
hyrax-3.5.0 app/assets/javascripts/hyrax/file_manager/save_manager.es6
hyrax-3.4.2 app/assets/javascripts/hyrax/file_manager/save_manager.es6
hyrax-3.4.1 app/assets/javascripts/hyrax/file_manager/save_manager.es6
hyrax-3.4.0 app/assets/javascripts/hyrax/file_manager/save_manager.es6
hyrax-3.3.0 app/assets/javascripts/hyrax/file_manager/save_manager.es6
hyrax-3.2.0 app/assets/javascripts/hyrax/file_manager/save_manager.es6
hyrax-3.1.0 app/assets/javascripts/hyrax/file_manager/save_manager.es6
hyrax-3.0.2 app/assets/javascripts/hyrax/file_manager/save_manager.es6
hyrax-3.0.1 app/assets/javascripts/hyrax/file_manager/save_manager.es6
hyrax-3.0.0 app/assets/javascripts/hyrax/file_manager/save_manager.es6
hyrax-3.0.0.pre.rc4 app/assets/javascripts/hyrax/file_manager/save_manager.es6
hyrax-3.0.0.pre.rc3 app/assets/javascripts/hyrax/file_manager/save_manager.es6
hyrax-3.0.0.pre.rc2 app/assets/javascripts/hyrax/file_manager/save_manager.es6