Local variables are one of the things CoffeeScript doesn't compile to modern JavaScript automatically: it uses `var` instead of `const` or `let`. Besides, using `$this = $(this)` is usually done to reference the current object in another function where the current object is a different one. Here we were using it with no clear purpose.
79 lines
2.4 KiB
CoffeeScript
79 lines
2.4 KiB
CoffeeScript
"use strict"
|
|
|
|
App.ColumnsSelector =
|
|
|
|
initColums: () ->
|
|
App.ColumnsSelector.hideAll()
|
|
c_value = App.ColumnsSelector.currentValue()
|
|
|
|
if c_value.length == 0
|
|
c_value = $("#js-columns-selector").data("default")
|
|
App.Cookies.saveCookie($("#js-columns-selector").data("cookie"), c_value, 30)
|
|
columns = c_value.split(",")
|
|
|
|
columns.forEach (column) ->
|
|
$("[data-field=" + column + "]").removeClass("hidden")
|
|
$("#column_selector_" + column).prop("checked", true)
|
|
|
|
initChecks: () ->
|
|
$(".column-selecteable th[data-field]").each ->
|
|
field = $(this).data("field")
|
|
text = $(this).text().trim()
|
|
item = $("#column_selector_item_template").clone()
|
|
item.prop("id", "column_selector_item_" + field)
|
|
input = item.find("input")
|
|
input.prop("name", "column-selector[" + field + "]")
|
|
input.prop("id", "column_selector_" + field)
|
|
input.data("column", field)
|
|
label = item.find("label")
|
|
label.prop("for", "column_selector_" + field)
|
|
label.text(text)
|
|
item.removeClass("hidden")
|
|
$("#js-columns-selector-wrapper").append(item)
|
|
|
|
toggleOptions: (event) ->
|
|
event.preventDefault()
|
|
$("#js-columns-selector").toggleClass("hollow")
|
|
$("#js-columns-selector-wrapper").toggleClass("hidden")
|
|
|
|
hideAll: () ->
|
|
$("[data-field]").addClass("hidden")
|
|
$(".column-selector-item input").prop("checked", false)
|
|
|
|
toggleColumn: (event) ->
|
|
App.ColumnsSelector.displayColumn($(event.target).data("column"))
|
|
|
|
displayColumn: (column) ->
|
|
if $("#column_selector_" + column).prop("checked")
|
|
$("[data-field=" + column + "]").removeClass("hidden")
|
|
else
|
|
$("[data-field=" + column + "]").addClass("hidden")
|
|
|
|
value = App.ColumnsSelector.updateItem(column)
|
|
App.Cookies.saveCookie($("#js-columns-selector").data("cookie"), value, 30)
|
|
|
|
updateItem: (value) ->
|
|
values = App.ColumnsSelector.currentValue().split(",")
|
|
index = values.indexOf(value)
|
|
if index >= 0
|
|
values.splice index, 1
|
|
else
|
|
values.push value
|
|
|
|
values.join ","
|
|
|
|
currentValue: () ->
|
|
App.Cookies.getCookie($("#js-columns-selector").data("cookie"))
|
|
|
|
initialize: ->
|
|
App.ColumnsSelector.initChecks()
|
|
App.ColumnsSelector.initColums()
|
|
|
|
$("#js-columns-selector").on
|
|
click: (event) ->
|
|
App.ColumnsSelector.toggleOptions(event)
|
|
|
|
$(".column-selector-item input").on
|
|
click: (event) ->
|
|
App.ColumnsSelector.toggleColumn(event)
|