--- 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
+ }
+ };
+ }
+
});