# HG changeset patch # User Chloe Laisne # Date 1468018772 -7200 # Node ID ac6928e86d14ce0834bf58567dde34408cfe578c # Parent 51acae6af8a32afa0e34e702f01784c78afe1dc5 Adapt theme query limit and offset and sorting order in fixtures diff -r 51acae6af8a3 -r ac6928e86d14 cms/app-client/app/routes/tabs/thematiques.js --- a/cms/app-client/app/routes/tabs/thematiques.js Fri Jul 08 18:41:32 2016 +0200 +++ b/cms/app-client/app/routes/tabs/thematiques.js Sat Jul 09 00:59:32 2016 +0200 @@ -2,8 +2,16 @@ export default Ember.Route.extend({ + page: 0, + limit: 40, + sort: 'alphabetical', + model: function() { - return this.store.findAll('theme'); + return this.store.query('theme', { + 'limit': this.get('limit'), + 'page': this.get('page'), + 'sort': this.get('sort') + }); } }); diff -r 51acae6af8a3 -r ac6928e86d14 cms/app-client/mirage/serializers/theme.js --- a/cms/app-client/mirage/serializers/theme.js Fri Jul 08 18:41:32 2016 +0200 +++ b/cms/app-client/mirage/serializers/theme.js Sat Jul 09 00:59:32 2016 +0200 @@ -3,7 +3,28 @@ import _ from 'lodash/lodash'; export default JSONAPISerializer.extend({ - serialize(response) { - return _(response.models).map((theme) => { return [theme.id, {count: theme.count, label: theme.label}];}).object().value(); + + serialize: function(response, request) { + // Remove models with no name + response.models = response.models.filter(element => element.label); + // Alphabetical order + if(request.queryParams.sort === 'alphabetical') { + response.models.sort(function(a, b) { + var aLabel = a.label.toUpperCase(); + var bLabel = b.label.toUpperCase(); + if (aLabel < bLabel) return -1; + if (aLabel > bLabel) return 1; + return 0; + }); + // Descending order + } else if(request.queryParams.sort === 'descending') { + response.models.sort(function(a, b) { + return b.count - a.count; + }); + } + var index = request.queryParams.page * request.queryParams.limit; + var slice = response.models.slice(index, index + request.queryParams.limit); + return _(slice).map((theme) => { return [theme.id, {count: theme.count, label: theme.label}];}).object().value(); } + });