Files
openfoodnetwork/app/assets/javascripts/admin/index_utils/services/columns.js.coffee
David Cook d34e7dbf9f Specify accepted format on client side
I don't know why, but even though the client sends http accept header for json, rails is treating it as html. This was being overridden in the route, but I want to support multiple formats next. So, we explicitly choose the format by adding it to the request path.
2024-06-05 09:45:30 +10:00

42 lines
1.3 KiB
CoffeeScript

angular.module("admin.indexUtils").factory 'Columns', ($rootScope, $http, $injector) ->
new class Columns
savedColumns: {}
columns: {}
visibleCount: 0
constructor: ->
@columns = {}
for column in @injectColumns()
@columns[column.column_name] = column
@savedColumns[column.column_name] = angular.copy(column)
@calculateVisibleCount()
injectColumns: ->
if $injector.has('columns')
$injector.get('columns')
else
[]
toggleColumn: (column) =>
column.visible = !column.visible
@calculateVisibleCount()
calculateVisibleCount: =>
@visibleCount = (column for name, column of @columns when column.visible).length
$rootScope.$broadcast "columnCount:changed", @visibleCount
preferencesSaved: =>
angular.equals(@columns, @savedColumns)
savePreferences: (action_name) =>
$http
method: "PUT"
url: "/admin/column_preferences/bulk_update.json"
data:
action_name: action_name
column_preferences: (preference for column_name, preference of @columns)
.then (response) =>
for column in response.data
angular.extend(@columns[column.column_name], column)
angular.extend(@savedColumns[column.column_name], column)