author | Chloe Laisne <chloe.laisne@gmail.com> |
Thu, 18 Aug 2016 17:02:02 +0200 | |
changeset 256 | 18f0c3ee9aa5 |
parent 255 | ed05b89e3299 |
child 257 | eba9edbd8f46 |
permissions | -rw-r--r-- |
245
c9dd78a43b07
Transcript model and erializer
Chloe Laisne <chloe.laisne@gmail.com>
parents:
diff
changeset
|
1 |
import JSONAPISerializer from 'ember-data/serializers/json-api'; |
c9dd78a43b07
Transcript model and erializer
Chloe Laisne <chloe.laisne@gmail.com>
parents:
diff
changeset
|
2 |
|
c9dd78a43b07
Transcript model and erializer
Chloe Laisne <chloe.laisne@gmail.com>
parents:
diff
changeset
|
3 |
export default JSONAPISerializer.extend({ |
c9dd78a43b07
Transcript model and erializer
Chloe Laisne <chloe.laisne@gmail.com>
parents:
diff
changeset
|
4 |
|
256
18f0c3ee9aa5
Add title translation to transcript
Chloe Laisne <chloe.laisne@gmail.com>
parents:
255
diff
changeset
|
5 |
normalizeResponse: function(store, primaryModelClass, payload, id, requestType) { |
18f0c3ee9aa5
Add title translation to transcript
Chloe Laisne <chloe.laisne@gmail.com>
parents:
255
diff
changeset
|
6 |
var lang = false; |
18f0c3ee9aa5
Add title translation to transcript
Chloe Laisne <chloe.laisne@gmail.com>
parents:
255
diff
changeset
|
7 |
|
18f0c3ee9aa5
Add title translation to transcript
Chloe Laisne <chloe.laisne@gmail.com>
parents:
255
diff
changeset
|
8 |
var annotations = []; |
18f0c3ee9aa5
Add title translation to transcript
Chloe Laisne <chloe.laisne@gmail.com>
parents:
255
diff
changeset
|
9 |
payload.annotations.forEach(function(annotation) { |
18f0c3ee9aa5
Add title translation to transcript
Chloe Laisne <chloe.laisne@gmail.com>
parents:
255
diff
changeset
|
10 |
var annotationObject = { |
18f0c3ee9aa5
Add title translation to transcript
Chloe Laisne <chloe.laisne@gmail.com>
parents:
255
diff
changeset
|
11 |
'content': annotation.content.data.content, |
18f0c3ee9aa5
Add title translation to transcript
Chloe Laisne <chloe.laisne@gmail.com>
parents:
255
diff
changeset
|
12 |
'start': annotation.begin, |
18f0c3ee9aa5
Add title translation to transcript
Chloe Laisne <chloe.laisne@gmail.com>
parents:
255
diff
changeset
|
13 |
'end': annotation.end |
18f0c3ee9aa5
Add title translation to transcript
Chloe Laisne <chloe.laisne@gmail.com>
parents:
255
diff
changeset
|
14 |
}; |
18f0c3ee9aa5
Add title translation to transcript
Chloe Laisne <chloe.laisne@gmail.com>
parents:
255
diff
changeset
|
15 |
if(annotation.content.data.transl) { |
18f0c3ee9aa5
Add title translation to transcript
Chloe Laisne <chloe.laisne@gmail.com>
parents:
255
diff
changeset
|
16 |
annotationObject.translation = annotation.content.data.transl['@value']; |
18f0c3ee9aa5
Add title translation to transcript
Chloe Laisne <chloe.laisne@gmail.com>
parents:
255
diff
changeset
|
17 |
if (!lang) { |
18f0c3ee9aa5
Add title translation to transcript
Chloe Laisne <chloe.laisne@gmail.com>
parents:
255
diff
changeset
|
18 |
lang = annotation.content.data.transl['@language']; |
18f0c3ee9aa5
Add title translation to transcript
Chloe Laisne <chloe.laisne@gmail.com>
parents:
255
diff
changeset
|
19 |
} |
18f0c3ee9aa5
Add title translation to transcript
Chloe Laisne <chloe.laisne@gmail.com>
parents:
255
diff
changeset
|
20 |
} |
18f0c3ee9aa5
Add title translation to transcript
Chloe Laisne <chloe.laisne@gmail.com>
parents:
255
diff
changeset
|
21 |
if(annotation.content.data.words) { |
18f0c3ee9aa5
Add title translation to transcript
Chloe Laisne <chloe.laisne@gmail.com>
parents:
255
diff
changeset
|
22 |
var words = []; |
18f0c3ee9aa5
Add title translation to transcript
Chloe Laisne <chloe.laisne@gmail.com>
parents:
255
diff
changeset
|
23 |
annotation.content.data.words.forEach(function(word) { |
18f0c3ee9aa5
Add title translation to transcript
Chloe Laisne <chloe.laisne@gmail.com>
parents:
255
diff
changeset
|
24 |
var wordObject = { |
18f0c3ee9aa5
Add title translation to transcript
Chloe Laisne <chloe.laisne@gmail.com>
parents:
255
diff
changeset
|
25 |
'content': word.content, |
18f0c3ee9aa5
Add title translation to transcript
Chloe Laisne <chloe.laisne@gmail.com>
parents:
255
diff
changeset
|
26 |
'translation': word.transl['@value'] |
18f0c3ee9aa5
Add title translation to transcript
Chloe Laisne <chloe.laisne@gmail.com>
parents:
255
diff
changeset
|
27 |
}; |
18f0c3ee9aa5
Add title translation to transcript
Chloe Laisne <chloe.laisne@gmail.com>
parents:
255
diff
changeset
|
28 |
words.push(wordObject); |
18f0c3ee9aa5
Add title translation to transcript
Chloe Laisne <chloe.laisne@gmail.com>
parents:
255
diff
changeset
|
29 |
}) |
18f0c3ee9aa5
Add title translation to transcript
Chloe Laisne <chloe.laisne@gmail.com>
parents:
255
diff
changeset
|
30 |
annotationObject.words = words; |
18f0c3ee9aa5
Add title translation to transcript
Chloe Laisne <chloe.laisne@gmail.com>
parents:
255
diff
changeset
|
31 |
} |
18f0c3ee9aa5
Add title translation to transcript
Chloe Laisne <chloe.laisne@gmail.com>
parents:
255
diff
changeset
|
32 |
annotations.push(annotationObject); |
18f0c3ee9aa5
Add title translation to transcript
Chloe Laisne <chloe.laisne@gmail.com>
parents:
255
diff
changeset
|
33 |
}); |
18f0c3ee9aa5
Add title translation to transcript
Chloe Laisne <chloe.laisne@gmail.com>
parents:
255
diff
changeset
|
34 |
|
18f0c3ee9aa5
Add title translation to transcript
Chloe Laisne <chloe.laisne@gmail.com>
parents:
255
diff
changeset
|
35 |
var response = { |
245
c9dd78a43b07
Transcript model and erializer
Chloe Laisne <chloe.laisne@gmail.com>
parents:
diff
changeset
|
36 |
'data': { |
256
18f0c3ee9aa5
Add title translation to transcript
Chloe Laisne <chloe.laisne@gmail.com>
parents:
255
diff
changeset
|
37 |
'id': id, |
18f0c3ee9aa5
Add title translation to transcript
Chloe Laisne <chloe.laisne@gmail.com>
parents:
255
diff
changeset
|
38 |
'type': 'transcript', |
18f0c3ee9aa5
Add title translation to transcript
Chloe Laisne <chloe.laisne@gmail.com>
parents:
255
diff
changeset
|
39 |
'attributes': { |
18f0c3ee9aa5
Add title translation to transcript
Chloe Laisne <chloe.laisne@gmail.com>
parents:
255
diff
changeset
|
40 |
'title': {}, |
18f0c3ee9aa5
Add title translation to transcript
Chloe Laisne <chloe.laisne@gmail.com>
parents:
255
diff
changeset
|
41 |
'annotations': annotations |
18f0c3ee9aa5
Add title translation to transcript
Chloe Laisne <chloe.laisne@gmail.com>
parents:
255
diff
changeset
|
42 |
} |
18f0c3ee9aa5
Add title translation to transcript
Chloe Laisne <chloe.laisne@gmail.com>
parents:
255
diff
changeset
|
43 |
} |
245
c9dd78a43b07
Transcript model and erializer
Chloe Laisne <chloe.laisne@gmail.com>
parents:
diff
changeset
|
44 |
}; |
256
18f0c3ee9aa5
Add title translation to transcript
Chloe Laisne <chloe.laisne@gmail.com>
parents:
255
diff
changeset
|
45 |
|
18f0c3ee9aa5
Add title translation to transcript
Chloe Laisne <chloe.laisne@gmail.com>
parents:
255
diff
changeset
|
46 |
if(Array.isArray(payload.meta['dc:title'])) { |
18f0c3ee9aa5
Add title translation to transcript
Chloe Laisne <chloe.laisne@gmail.com>
parents:
255
diff
changeset
|
47 |
var original = payload.meta['dc:title'].find(function(title) { return title['@language'] !== lang; }); |
18f0c3ee9aa5
Add title translation to transcript
Chloe Laisne <chloe.laisne@gmail.com>
parents:
255
diff
changeset
|
48 |
var translation = payload.meta['dc:title'].find(function(title) { return title['@language'] === lang; }); |
18f0c3ee9aa5
Add title translation to transcript
Chloe Laisne <chloe.laisne@gmail.com>
parents:
255
diff
changeset
|
49 |
if(original) { |
18f0c3ee9aa5
Add title translation to transcript
Chloe Laisne <chloe.laisne@gmail.com>
parents:
255
diff
changeset
|
50 |
response.data.attributes.title.original = original['@value']; |
18f0c3ee9aa5
Add title translation to transcript
Chloe Laisne <chloe.laisne@gmail.com>
parents:
255
diff
changeset
|
51 |
} |
18f0c3ee9aa5
Add title translation to transcript
Chloe Laisne <chloe.laisne@gmail.com>
parents:
255
diff
changeset
|
52 |
if(translation) { |
18f0c3ee9aa5
Add title translation to transcript
Chloe Laisne <chloe.laisne@gmail.com>
parents:
255
diff
changeset
|
53 |
response.data.attributes.title.translation = translation['@value']; |
18f0c3ee9aa5
Add title translation to transcript
Chloe Laisne <chloe.laisne@gmail.com>
parents:
255
diff
changeset
|
54 |
} |
18f0c3ee9aa5
Add title translation to transcript
Chloe Laisne <chloe.laisne@gmail.com>
parents:
255
diff
changeset
|
55 |
} else { |
18f0c3ee9aa5
Add title translation to transcript
Chloe Laisne <chloe.laisne@gmail.com>
parents:
255
diff
changeset
|
56 |
response.data.attributes.title.original = payload.meta['dc:title']['@value']; |
18f0c3ee9aa5
Add title translation to transcript
Chloe Laisne <chloe.laisne@gmail.com>
parents:
255
diff
changeset
|
57 |
} |
18f0c3ee9aa5
Add title translation to transcript
Chloe Laisne <chloe.laisne@gmail.com>
parents:
255
diff
changeset
|
58 |
|
18f0c3ee9aa5
Add title translation to transcript
Chloe Laisne <chloe.laisne@gmail.com>
parents:
255
diff
changeset
|
59 |
|
18f0c3ee9aa5
Add title translation to transcript
Chloe Laisne <chloe.laisne@gmail.com>
parents:
255
diff
changeset
|
60 |
return response; |
18f0c3ee9aa5
Add title translation to transcript
Chloe Laisne <chloe.laisne@gmail.com>
parents:
255
diff
changeset
|
61 |
} |
245
c9dd78a43b07
Transcript model and erializer
Chloe Laisne <chloe.laisne@gmail.com>
parents:
diff
changeset
|
62 |
|
c9dd78a43b07
Transcript model and erializer
Chloe Laisne <chloe.laisne@gmail.com>
parents:
diff
changeset
|
63 |
}); |