40 lines
1.4 KiB
JavaScript
40 lines
1.4 KiB
JavaScript
define(["backbone.paginator", "js/models/asset"], function(BackbonePaginator, AssetModel) {
|
|
var AssetCollection = BackbonePaginator.requestPager.extend({
|
|
assetType: '',
|
|
model : AssetModel,
|
|
paginator_core: {
|
|
type: 'GET',
|
|
accepts: 'application/json',
|
|
dataType: 'json',
|
|
url: function() { return this.url; }
|
|
},
|
|
paginator_ui: {
|
|
firstPage: 0,
|
|
currentPage: 0,
|
|
perPage: 50
|
|
},
|
|
server_api: {
|
|
'page': function() { return this.currentPage; },
|
|
'page_size': function() { return this.perPage; },
|
|
'sort': function() { return this.sortField; },
|
|
'direction': function() { return this.sortDirection; },
|
|
'asset_type': function() { return this.assetType; },
|
|
'format': 'json'
|
|
},
|
|
|
|
parse: function(response) {
|
|
var totalCount = response.totalCount,
|
|
start = response.start,
|
|
currentPage = response.page,
|
|
pageSize = response.pageSize,
|
|
totalPages = Math.ceil(totalCount / pageSize);
|
|
this.totalCount = totalCount;
|
|
this.totalPages = Math.max(totalPages, 1); // Treat an empty collection as having 1 page...
|
|
this.currentPage = currentPage;
|
|
this.start = start;
|
|
return response.assets;
|
|
}
|
|
});
|
|
return AssetCollection;
|
|
});
|