# independent-analytics/2.5.1/javascript-source/controllers/sort_controller.js

Independent Analytics – WordPress Analytics Plugin, version 2.5.1. 44 lines.

- Page: https://pluginprobe.com/plugins/independent-analytics/2.5.1/code/javascript-source/controllers/sort_controller.js
- Raw: https://pluginprobe.com/plugins/independent-analytics/2.5.1/raw/javascript-source/controllers/sort_controller.js
- Modified: 2024-05-22T13:44:28+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/independent-analytics/2.5.1/code/javascript-source/controllers/sort_controller.js#L10-L20`.

```javascript
import {Controller} from "@hotwired/stimulus"

export default class extends Controller {
    static targets = ['sortButton']
    static values = {column: String}
    previousColumn = null
    sortDirection = null

    connect() {
        this.sortButtonTargets.forEach((sortButton) => {
            const sorted = !!sortButton.dataset.sortDirection

            if (sorted) {
                this.previousColumn = sortButton.dataset.sortColumn
                this.sortDirection = sortButton.dataset.defaultSortDirection
            }
        })
    }

    sortColumnColumn(e) {
        const column = e.currentTarget.dataset.sortColumn
        const defaultDirection = e.currentTarget.dataset.defaultSortDirection

        if (this.previousColumn === column) {
            this.sortDirection = this.sortDirection === 'asc' ? 'desc' : 'asc'
        } else {
            this.sortDirection = defaultDirection
        }
        this.previousColumn = column

        this.sortButtonTargets.forEach((sortButton) => {
            sortButton.dataset.sortDirection = sortButton.dataset.sortColumn === column ? this.sortDirection : ''
        })

        document.dispatchEvent(
            new CustomEvent('iawp:changeSort', {
                detail: {
                    sortColumn: column,
                    sortDirection: this.sortDirection
                }
            })
        )
    }
}
```
