sul-dlss/argo

View on GitHub
app/javascript/modules/permission_grant.js

Summary

Maintainability
A
0 mins
Test Coverage
export default class {
  /**
     * Represents a single permission grant on an object
     * @param list - The list to which contains this element
     * @param data - the hash that has the data this component represents
     */
  constructor (list, data) {
    this.list = list
    this.data = data
  }

  rootElement () {
    return document.createElement('tr')
  }

  render () {
    const element = this.rootElement()
    const button = document.createElement('button')
    button.innerHTML = 'Remove'
    button.className = 'btn btn-secondary'
    button.addEventListener('click', (event) => {
      event.preventDefault()
      this.destroy()
    })
    element.innerHTML += `<td class="permissionName">${this.data.name}</td>` +
          `<td class="permissionAccess">${this.data.access}</td>`
    const td = document.createElement('td')
    td.appendChild(button)
    element.appendChild(td)
    return element
  }

  /**
     * write out the row as a hidden html field
     */
  serialize (idx) {
    return `<input type="hidden" name="apo[permissions][${idx}][name]" value="${this.data.name}">` +
      `<input type="hidden" name="apo[permissions][${idx}][access]" value="${this.data.access}">` +
      `<input type="hidden" name="apo[permissions][${idx}][type]" value="group">`
  }

  destroy () {
    this.list.delete(this)
  }
}