Sha256: 3ae532cc33718f91b6045140fd57cfba05f887f820487493a6686c8b8ca3c90a

Contents?: true

Size: 1.52 KB

Versions: 81

Compression:

Stored size: 1.52 KB

Contents

export default class SelectWorkType {
  /**
   * Initializes the class in the context of an individual table element
   * @param {jQuery} element the table element that this class represents
   */
  constructor(element) {
      this.$element = element;
      this.target = element.data('target')
      this.modal = $(this.target)
      this.form = this.modal.find('form.new-work-select')

      // launch the modal.
      element.on('click', (e) => {
          e.preventDefault()
          this.modal.modal()
          // ensure the type is set for the last clicked element
          // type is either "batch" or "single" (work)
          this.type = element.data('create-type')
          // add custom routing logic when the modal is shown
          this.form.on('submit', this.routingLogic.bind(this))
      });

      // remove the routing logic when the modal is hidden
      this.modal.on('hide.bs.modal', (e) => {
          this.form.unbind('submit')
      });
  }

  // when the form is submitted route to the correct location
  routingLogic(e) {
      e.preventDefault()
      if (this.destination() === undefined)
        return false
      // get the destination from the data attribute of the selected radio button
      window.location.href = this.destination()
  }

  // Each input has two attributes that contain paths, one for the batch and one
  // for a single work.  So, given the value of 'this.type', return the appropriate
  // path.
  destination() {
      return this.form.find('input[type="radio"]:checked').data(this.type)
  }
}

Version data entries

81 entries across 81 versions & 1 rubygems

Version Path
hyrax-1.0.0.rc2 app/assets/javascripts/hyrax/select_work_type.es6