Skip to content

Instantly share code, notes, and snippets.

@almaron
Created July 6, 2015 11:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save almaron/bc1c82ab6d4318255dab to your computer and use it in GitHub Desktop.
Save almaron/bc1c82ab6d4318255dab to your computer and use it in GitHub Desktop.
@app.service "ngTableService", ["$filter", "$http", ($filter, $http) ->
filterData = (data, filter) ->
$filter('filter')(data, filter)
orderData = (data, params) ->
(if params.sorting() then $filter("orderBy")(data, params.orderBy()) else filteredData)
sliceData = (data, params) ->
data.slice (params.page() - 1) * params.count(), params.page() * params.count()
transformData = (data, filter, params) ->
sliceData orderData(filterData(data, filter), params), params
service = {
cachedData: [],
data_url: '',
setUrl: (data_url) ->
service.data_url = data_url
getData: ($defer, params, filter) ->
if service.cachedData.length > 0
filteredData = filterData(service.cachedData, filter)
transformedData = sliceData(orderData(filteredData, params), params)
params.total filteredData.length
$defer.resolve transformedData
else
$http.get(service.data_url).success (items) ->
angular.copy items, service.cachedData
params.total items.length
filteredData = $filter("filter")(items, filter)
transformedData = transformData(items, filter, params)
$defer.resolve transformedData
return
emptyData: ->
service.cachedData = []
return
reload: (params) ->
service.emptyData()
params.reload()
}
]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment