Files
ember-cli-dunlop/addon/utils/paged-remote-array.coffee

52 lines
1.6 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: {}
scope_key: null
init: ->
query = @get('filters')?.toProperties() || {}
@set 'scope_key', get(@, 'modelName') unless get(@, 'scope_key')
@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(get(@, 'modelName'))
session = container.lookup('service:session')
base_url = adapter.buildURL(get(@, '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)