50 lines
1.5 KiB
CoffeeScript
50 lines
1.5 KiB
CoffeeScript
import Ember from 'ember'
|
|
import PagedRemoteArray from 'ember-cli-pagination/remote/paged-remote-array'
|
|
{get} = Ember
|
|
|
|
export default PagedRemoteArray.extend
|
|
dunlop_remote_array: true # for identification
|
|
#params: {}
|
|
session: Ember.inject.service()
|
|
filters: {}
|
|
init: ->
|
|
query = @get('filters')?.toProperties() || {}
|
|
@otherParams ||= {}
|
|
@otherParams['q'] = query
|
|
#@setOtherParam('q', query) # explicitly not, init does not trigger operational callbacks
|
|
@_super arguments...
|
|
|
|
reload: ->
|
|
@incrementProperty('filters.filter_calls')
|
|
@set 'page', 1
|
|
@set 'lastPage', null
|
|
@setOtherParam('q', @getQuery())
|
|
|
|
getQuery: ->
|
|
@get('filters')?.toProperties() || {}
|
|
|
|
paramMapping:
|
|
total_pages: 'total-pages'
|
|
total_count: 'total-count'
|
|
|
|
postRequest: (action_name, data = {}) ->
|
|
container = Ember.getOwner(@store)
|
|
adapter = @store.adapterFor(@modelName)
|
|
session = container.lookup('service:session')
|
|
base_url = adapter.buildURL(@modelName)
|
|
url = "#{base_url}/#{action_name}"
|
|
request_data = data
|
|
request_data = JSON.stringify(data) if typeof data is 'object'
|
|
|
|
request =
|
|
url: url
|
|
type: 'POST'
|
|
data: request_data
|
|
contentType: "application/json"
|
|
dataType: "json"
|
|
if session and get(session, 'isAuthenticated')
|
|
session.authorize 'authorizer:devise', (key, authorization) ->
|
|
request.crossDomain = true
|
|
request.headers = {"#{key}": authorization}
|
|
Ember.$.ajax(request)
|