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)