Sha256: bb2c70c5ed2f7e66925dcdac740e919700e93ed98ba85dc8065f79dcf644078e

Contents?: true

Size: 1.41 KB

Versions: 97

Compression:

Stored size: 1.41 KB

Contents

import { Controller } from 'stimulus'
import URI from 'urijs'

export default class extends Controller {
  static targets = ['urlRedirect']

  // eslint-disable-next-line class-methods-use-this
  uriParams() {
    return URI(window.location.toString()).query(true)
  }

  viaResourceName() {
    return this.uriParams().via_resource_name
  }

  uriParam(param) {
    const viaResourceName = this.viaResourceName()

    if (viaResourceName) return `${this.viaResourceName}_${param}`

    return param
  }

  changeFilter() {
    const value = this.getFilterValue()
    const filterClass = this.getFilterClass()

    let filters = this.uriParams()[this.uriParam('filters')]

    if (filters) {
      filters = JSON.parse(atob(filters))
    } else {
      filters = {}
    }

    filters[filterClass] = value

    const filtered = Object.keys(filters)
      .filter((key) => filters[key] !== '')
      .reduce((obj, key) => {
        obj[key] = filters[key]

        return obj
      }, {})

    let encodedFilters

    if (filtered && Object.keys(filtered).length > 0) {
      encodedFilters = btoa(JSON.stringify(filtered))
    }

    const url = new URI(this.urlRedirectTarget.href)

    const query = {
      ...url.query(true),
    }

    if (encodedFilters) {
      query.filters = encodedFilters
    } else {
      delete query.filters
    }

    url.query(query)

    this.urlRedirectTarget.href = url
    this.urlRedirectTarget.click()
  }
}

Version data entries

97 entries across 97 versions & 1 rubygems

Version Path
avo-1.17.0 app/packs/js/controllers/filter_controller.js
avo-1.16.4 app/packs/js/controllers/filter_controller.js
avo-1.16.3 app/packs/js/controllers/filter_controller.js
avo-1.16.2 app/packs/js/controllers/filter_controller.js
avo-1.16.1 app/packs/js/controllers/filter_controller.js
avo-1.16.0 app/packs/js/controllers/filter_controller.js
avo-1.15.0 app/packs/js/controllers/filter_controller.js
avo-1.15.0.pre.1 app/packs/js/controllers/filter_controller.js
avo-1.14.0 app/packs/js/controllers/filter_controller.js
avo-1.13.3 app/packs/js/controllers/filter_controller.js
avo-1.13.2 app/packs/js/controllers/filter_controller.js
avo-1.13.1 app/packs/js/controllers/filter_controller.js
avo-1.13.0 app/packs/js/controllers/filter_controller.js
avo-1.12.4 app/packs/js/controllers/filter_controller.js
avo-1.12.3 app/packs/js/controllers/filter_controller.js
avo-1.12.2 app/packs/js/controllers/filter_controller.js
avo-1.12.1 app/packs/js/controllers/filter_controller.js
avo-1.12.0 app/packs/js/controllers/filter_controller.js
avo-1.11.6 app/packs/js/controllers/filter_controller.js
avo-1.11.5 app/packs/js/controllers/filter_controller.js