author | ymh <ymh.work@gmail.com> |
Fri, 16 Dec 2016 17:43:07 +0100 | |
changeset 474 | 245b4df137d3 |
parent 319 | 78990a8a069b |
child 532 | 1190ea937f2d |
permissions | -rw-r--r-- |
173 | 1 |
import { JSONAPISerializer } from 'ember-cli-mirage'; |
2 |
||
3 |
import _ from 'lodash/lodash'; |
|
4 |
||
5 |
export default JSONAPISerializer.extend({ |
|
236
ac6928e86d14
Adapt theme query limit and offset and sorting order in fixtures
Chloe Laisne <chloe.laisne@gmail.com>
parents:
173
diff
changeset
|
6 |
|
474 | 7 |
serialize: function (response, request) { |
8 |
||
9 |
// Remove models with no name |
|
10 |
response.models = response.models.filter(element => element.label); |
|
11 |
||
12 |
let qParams = request.queryParams['theme']; |
|
13 |
if (qParams) { |
|
14 |
response.models = response.models |
|
15 |
.slice(0, response.models.length / Math.pow(2, qParams.length)) |
|
16 |
.map(t => { |
|
17 |
t.count = Math.max(Math.floor(t.count / 2), 1); |
|
18 |
return t; |
|
19 |
}); |
|
173 | 20 |
} |
236
ac6928e86d14
Adapt theme query limit and offset and sorting order in fixtures
Chloe Laisne <chloe.laisne@gmail.com>
parents:
173
diff
changeset
|
21 |
|
474 | 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 |
||
173 | 55 |
}); |