Sha256: d744b9b8525dfd3225ea287128485c7c198c8eb1313cd5793e8e9c48d9993261

Contents?: true

Size: 1.48 KB

Versions: 77

Compression:

Stored size: 1.48 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.text() == "Save") {
      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) })
      )
    })
    this.save_button.text("Saving...")
    this.save_button.addClass("disabled")
    $.when.apply($, promises).always(() => { this.reset_save_button() })
  }
  
  reset_save_button() {
    this.save_button.text("Save")
    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

77 entries across 77 versions & 3 rubygems

Version Path
hyrax-2.9.6 app/assets/javascripts/hyrax/file_manager/save_manager.es6
hyrax-2.9.5 app/assets/javascripts/hyrax/file_manager/save_manager.es6
hyrax-2.9.4 app/assets/javascripts/hyrax/file_manager/save_manager.es6
hyrax-2.9.3 app/assets/javascripts/hyrax/file_manager/save_manager.es6
hyrax-2.9.2 app/assets/javascripts/hyrax/file_manager/save_manager.es6
hyrax-2.9.1 app/assets/javascripts/hyrax/file_manager/save_manager.es6
hyrax-2.9.0 app/assets/javascripts/hyrax/file_manager/save_manager.es6
hyrax-2.8.0 app/assets/javascripts/hyrax/file_manager/save_manager.es6
hyrax-2.7.2 app/assets/javascripts/hyrax/file_manager/save_manager.es6
hyrax-2.7.1 app/assets/javascripts/hyrax/file_manager/save_manager.es6
hyrax-2.7.0 app/assets/javascripts/hyrax/file_manager/save_manager.es6
hyrax-2.6.0 app/assets/javascripts/hyrax/file_manager/save_manager.es6
hyrax-3.0.0.pre.rc1 app/assets/javascripts/hyrax/file_manager/save_manager.es6
hyrax-3.0.0.pre.beta3 app/assets/javascripts/hyrax/file_manager/save_manager.es6
hyrax-2.5.1 app/assets/javascripts/hyrax/file_manager/save_manager.es6
hyrax-2.5.0 app/assets/javascripts/hyrax/file_manager/save_manager.es6
hyrax-3.0.0.pre.beta2 app/assets/javascripts/hyrax/file_manager/save_manager.es6
hyrax-2.4.1 app/assets/javascripts/hyrax/file_manager/save_manager.es6
hyrax-3.0.0.pre.beta1 app/assets/javascripts/hyrax/file_manager/save_manager.es6
hyrax-2.4.0 app/assets/javascripts/hyrax/file_manager/save_manager.es6