cms/app-client/mirage/serializers/theme.js
changeset 474 245b4df137d3
parent 319 78990a8a069b
child 532 1190ea937f2d
equal deleted inserted replaced
473:1b8b29c0e95c 474:245b4df137d3
     2 
     2 
     3 import _ from 'lodash/lodash';
     3 import _ from 'lodash/lodash';
     4 
     4 
     5 export default JSONAPISerializer.extend({
     5 export default JSONAPISerializer.extend({
     6 
     6 
     7     serialize: function(response, request) {
     7   serialize: function (response, request) {
     8         // Remove models with no name
     8 
     9         response.models = response.models.filter(element => element.label);
     9     // Remove models with no name
    10         // Alphabetical order
    10     response.models = response.models.filter(element => element.label);
    11         if(request.queryParams.sort === 'alphabetical') {
    11 
    12             response.models.sort(function(a, b) {
    12     let qParams = request.queryParams['theme'];
    13                 var aLabel = a.label.toUpperCase();
    13     if (qParams) {
    14                 var bLabel = b.label.toUpperCase();
    14       response.models = response.models
    15                 if (aLabel < bLabel) { return -1; }
    15         .slice(0, response.models.length / Math.pow(2, qParams.length))
    16                 if (aLabel > bLabel) { return 1; }
    16         .map(t => {
    17                 return 0;
    17           t.count = Math.max(Math.floor(t.count / 2), 1);
    18             });
    18           return t;
    19         // Descending order
    19         });
    20         } else if(request.queryParams.sort === 'descending') {
       
    21             response.models.sort(function(a, b) {
       
    22                 return b.count - a.count;
       
    23             });
       
    24         }
       
    25         var array = [];
       
    26         if(typeof request.queryParams.index !== 'undefined' && typeof request.queryParams.limit !== 'undefined') {
       
    27             var begin = parseInt(request.queryParams.index * request.queryParams.limit) || 0;
       
    28             var end = parseInt(begin + (request.queryParams.limit - 1));
       
    29             array = response.models.slice(begin, end);
       
    30         } else {
       
    31             array = response.models;
       
    32         }
       
    33         return { 'themes': _(array).map((theme) => { return [theme.id, {count: theme.count, label: theme.label}];}).object().value() };
       
    34     }
    20     }
    35 
    21 
       
    22     let total = response.models.length;
       
    23 
       
    24     // Alphabetical order
       
    25     if (request.queryParams.sort === 'alphabetical') {
       
    26       response.models.sort(function (a, b) {
       
    27         var aLabel = a.label.toUpperCase();
       
    28         var bLabel = b.label.toUpperCase();
       
    29         if (aLabel < bLabel) { return -1; }
       
    30         if (aLabel > bLabel) { return 1; }
       
    31         return 0;
       
    32       });
       
    33       // Descending order
       
    34     } else if (request.queryParams.sort === 'descending') {
       
    35       response.models.sort(function (a, b) {
       
    36         return b.count - a.count;
       
    37       });
       
    38     }
       
    39     var array = [];
       
    40     if (typeof request.queryParams.index !== 'undefined' && typeof request.queryParams.limit !== 'undefined') {
       
    41       var begin = parseInt(request.queryParams.index) * parseInt(request.queryParams.limit) || 0;
       
    42       var end = begin + parseInt(request.queryParams.limit);
       
    43       array = response.models.slice(begin, end);
       
    44     } else {
       
    45       array = response.models;
       
    46     }
       
    47     return {
       
    48       themes: _(array).map((theme) => { return [theme.id, { count: theme.count, label: theme.label }]; }).object().value(),
       
    49       meta: {
       
    50         total: total
       
    51       }
       
    52     };
       
    53   }
       
    54 
    36 });
    55 });