mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-24 20:36:49 +00:00
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.
42 lines
1.3 KiB
CoffeeScript
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)
|