diff -r 1b8b29c0e95c -r 245b4df137d3 cms/app-client/mirage/serializers/theme.js --- a/cms/app-client/mirage/serializers/theme.js Tue Dec 13 23:30:54 2016 +0100 +++ b/cms/app-client/mirage/serializers/theme.js Fri Dec 16 17:43:07 2016 +0100 @@ -4,33 +4,52 @@ export default JSONAPISerializer.extend({ - 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 array = []; - if(typeof request.queryParams.index !== 'undefined' && typeof request.queryParams.limit !== 'undefined') { - var begin = parseInt(request.queryParams.index * request.queryParams.limit) || 0; - var end = parseInt(begin + (request.queryParams.limit - 1)); - array = response.models.slice(begin, end); - } else { - array = response.models; - } - return { 'themes': _(array).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); + + let qParams = request.queryParams['theme']; + if (qParams) { + response.models = response.models + .slice(0, response.models.length / Math.pow(2, qParams.length)) + .map(t => { + t.count = Math.max(Math.floor(t.count / 2), 1); + return t; + }); } + let total = response.models.length; + + // 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 array = []; + if (typeof request.queryParams.index !== 'undefined' && typeof request.queryParams.limit !== 'undefined') { + var begin = parseInt(request.queryParams.index) * parseInt(request.queryParams.limit) || 0; + var end = begin + parseInt(request.queryParams.limit); + array = response.models.slice(begin, end); + } else { + array = response.models; + } + return { + themes: _(array).map((theme) => { return [theme.id, { count: theme.count, label: theme.label }]; }).object().value(), + meta: { + total: total + } + }; + } + });