@coorpacademy/app-review 0.1.14 → 0.1.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (295) hide show
  1. package/es/actions/api/fetch-skills.d.ts +4 -6
  2. package/es/actions/api/fetch-skills.js +7 -4
  3. package/es/actions/api/fetch-slide.d.ts +14 -7
  4. package/es/actions/api/fetch-slide.js +27 -4
  5. package/es/actions/api/post-progression.d.ts +4 -6
  6. package/es/actions/api/post-progression.js +13 -9
  7. package/es/actions/api/test/create-test-store.d.ts +5 -0
  8. package/es/actions/api/test/create-test-store.js +16 -0
  9. package/es/actions/api/test/fetch-skills.test.js +54 -0
  10. package/es/actions/api/test/fetch-slide.test.js +61 -0
  11. package/es/actions/api/test/post-progression.test.js +102 -0
  12. package/es/actions/index.d.ts +1 -10
  13. package/es/actions/ui/answers.d.ts +7 -0
  14. package/es/actions/ui/answers.js +7 -0
  15. package/es/actions/ui/is-fetching.js +0 -2
  16. package/es/actions/ui/slides.d.ts +26 -0
  17. package/es/actions/ui/slides.js +9 -0
  18. package/es/common/index.d.ts +3 -1
  19. package/es/common/index.js +3 -1
  20. package/es/fixtures/qcm-slide.d.ts +2 -2
  21. package/es/fixtures/temp-fixture.d.ts +2 -2
  22. package/es/index.js +22 -92
  23. package/es/reducers/data/index.d.ts +2 -2
  24. package/es/reducers/data/progression.d.ts +3 -16
  25. package/es/reducers/data/progression.js +3 -22
  26. package/es/reducers/data/slides.d.ts +5 -6
  27. package/es/reducers/data/slides.js +9 -108
  28. package/es/reducers/data/test/progression.test.js +38 -0
  29. package/es/reducers/data/test/skills.test.js +12 -0
  30. package/es/reducers/data/test/slides.test.js +20 -0
  31. package/es/reducers/data/test/token.test.js +11 -0
  32. package/es/reducers/index.d.ts +3 -4
  33. package/es/reducers/ui/answers.d.ts +4 -0
  34. package/es/reducers/ui/{review-status.js → answers.js} +3 -3
  35. package/es/reducers/ui/current-slide-ref.d.ts +4 -0
  36. package/es/reducers/ui/current-slide-ref.js +13 -0
  37. package/es/reducers/ui/index.d.ts +7 -10
  38. package/es/reducers/ui/index.js +4 -6
  39. package/es/reducers/ui/test/answers.test.js +11 -0
  40. package/es/reducers/ui/test/current-slide-ref.test.d.ts +1 -0
  41. package/es/reducers/ui/test/current-slide-ref.test.js +12 -0
  42. package/es/reducers/ui/test/navigation.test.d.ts +1 -0
  43. package/es/reducers/ui/test/navigation.test.js +15 -0
  44. package/es/services/fetch-slide.js +1 -1
  45. package/es/services/index.js +3 -1
  46. package/es/services/post-answer.d.ts +2 -0
  47. package/es/services/post-answer.js +18 -0
  48. package/es/services/test/fetch-slide.test.d.ts +1 -0
  49. package/es/services/test/fetch-slide.test.js +22 -0
  50. package/es/services/test/post-answer.test.d.ts +1 -0
  51. package/es/services/test/post-answer.test.js +57 -0
  52. package/es/services/test/post-progression.test.js +14 -4
  53. package/es/test/util/services.mock.js +46 -4
  54. package/es/types/common.d.ts +61 -30
  55. package/es/types/common.js +0 -5
  56. package/es/types/slides.d.ts +0 -4
  57. package/{lib/types/views/skills.d.ts → es/views/skills/index.d.ts} +2 -0
  58. package/es/views/skills/index.js +25 -0
  59. package/es/views/slides/index.d.ts +79 -0
  60. package/es/views/slides/index.js +151 -0
  61. package/es/views/slides/map-api-slide-to-ui.d.ts +8 -0
  62. package/es/views/slides/map-api-slide-to-ui.js +172 -0
  63. package/es/views/slides/test/fixtures/free-text.d.ts +3 -0
  64. package/es/views/slides/test/fixtures/free-text.js +38 -0
  65. package/es/views/slides/test/fixtures/qcm-drag.d.ts +3 -0
  66. package/es/views/slides/test/fixtures/qcm-drag.js +108 -0
  67. package/es/views/slides/test/fixtures/qcm-graphic.d.ts +3 -0
  68. package/es/views/slides/test/fixtures/qcm-graphic.js +88 -0
  69. package/es/views/slides/test/fixtures/qcm.d.ts +3 -0
  70. package/es/{helpers → views/slides}/test/fixtures/qcm.js +37 -27
  71. package/es/views/slides/test/fixtures/select-template.d.ts +3 -0
  72. package/es/views/slides/test/fixtures/select-template.js +92 -0
  73. package/es/views/slides/test/fixtures/slider.d.ts +3 -0
  74. package/es/views/slides/test/fixtures/slider.js +36 -0
  75. package/es/views/slides/test/fixtures/text-template.d.ts +3 -0
  76. package/es/{helpers → views/slides}/test/fixtures/text-template.js +21 -11
  77. package/es/views/slides/test/map-api-slide-to-ui.test.d.ts +1 -0
  78. package/es/{helpers → views/slides}/test/map-api-slide-to-ui.test.js +19 -9
  79. package/lib/actions/api/fetch-skills.d.ts +4 -6
  80. package/lib/actions/api/fetch-skills.js +55 -7
  81. package/lib/actions/api/fetch-slide.d.ts +14 -7
  82. package/lib/actions/api/fetch-slide.js +75 -7
  83. package/lib/actions/api/post-progression.d.ts +4 -6
  84. package/lib/actions/api/post-progression.js +63 -10
  85. package/lib/actions/api/test/create-test-store.d.ts +5 -0
  86. package/lib/actions/api/test/create-test-store.js +18 -0
  87. package/lib/actions/api/test/fetch-skills.test.d.ts +1 -0
  88. package/lib/actions/api/test/fetch-skills.test.js +113 -0
  89. package/lib/actions/api/test/fetch-slide.test.d.ts +1 -0
  90. package/lib/actions/api/test/fetch-slide.test.js +120 -0
  91. package/lib/actions/api/test/post-progression.test.d.ts +1 -0
  92. package/lib/actions/api/test/post-progression.test.js +160 -0
  93. package/lib/actions/index.d.ts +1 -10
  94. package/lib/actions/ui/answers.d.ts +7 -0
  95. package/lib/actions/ui/answers.js +9 -0
  96. package/lib/actions/ui/is-fetching.js +0 -2
  97. package/lib/actions/ui/slides.d.ts +26 -0
  98. package/lib/actions/ui/slides.js +9 -0
  99. package/lib/common/index.d.ts +3 -1
  100. package/lib/common/index.js +3 -1
  101. package/lib/fixtures/qcm-slide.d.ts +2 -2
  102. package/lib/fixtures/temp-fixture.d.ts +2 -2
  103. package/lib/index.js +33 -94
  104. package/lib/reducers/data/index.d.ts +2 -2
  105. package/lib/reducers/data/progression.d.ts +3 -16
  106. package/lib/reducers/data/progression.js +3 -22
  107. package/lib/reducers/data/slides.d.ts +5 -6
  108. package/lib/reducers/data/slides.js +9 -114
  109. package/lib/reducers/data/test/progression.test.d.ts +1 -0
  110. package/lib/reducers/data/test/progression.test.js +38 -0
  111. package/lib/reducers/data/test/skills.test.d.ts +1 -0
  112. package/lib/reducers/data/test/skills.test.js +12 -0
  113. package/lib/reducers/data/test/slides.test.d.ts +1 -0
  114. package/lib/reducers/data/test/slides.test.js +20 -0
  115. package/lib/reducers/data/test/token.test.d.ts +1 -0
  116. package/lib/reducers/data/test/token.test.js +11 -0
  117. package/lib/reducers/index.d.ts +3 -4
  118. package/lib/reducers/ui/answers.d.ts +4 -0
  119. package/lib/reducers/ui/{review-status.js → answers.js} +3 -3
  120. package/lib/reducers/ui/current-slide-ref.d.ts +4 -0
  121. package/lib/reducers/ui/current-slide-ref.js +14 -0
  122. package/lib/reducers/ui/index.d.ts +7 -10
  123. package/lib/reducers/ui/index.js +4 -6
  124. package/lib/reducers/ui/test/answers.test.d.ts +1 -0
  125. package/lib/reducers/ui/test/answers.test.js +11 -0
  126. package/lib/reducers/ui/test/current-slide-ref.test.d.ts +1 -0
  127. package/lib/reducers/ui/test/current-slide-ref.test.js +12 -0
  128. package/lib/reducers/ui/test/navigation.test.d.ts +1 -0
  129. package/lib/reducers/ui/test/navigation.test.js +15 -0
  130. package/lib/services/fetch-slide.js +1 -1
  131. package/lib/services/index.js +3 -1
  132. package/lib/services/post-answer.d.ts +2 -0
  133. package/lib/services/post-answer.js +62 -0
  134. package/lib/services/test/fetch-slide.test.d.ts +1 -0
  135. package/lib/services/test/fetch-slide.test.js +76 -0
  136. package/lib/services/test/post-answer.test.d.ts +1 -0
  137. package/lib/services/test/post-answer.test.js +111 -0
  138. package/lib/services/test/post-progression.test.js +14 -4
  139. package/lib/test/util/services.mock.js +46 -4
  140. package/lib/types/common.d.ts +61 -30
  141. package/lib/types/common.js +0 -5
  142. package/lib/types/slides.d.ts +0 -4
  143. package/{es/types/views/skills.d.ts → lib/views/skills/index.d.ts} +2 -0
  144. package/lib/views/skills/index.js +25 -0
  145. package/lib/views/slides/index.d.ts +79 -0
  146. package/lib/views/slides/index.js +155 -0
  147. package/lib/views/slides/map-api-slide-to-ui.d.ts +8 -0
  148. package/lib/views/slides/map-api-slide-to-ui.js +178 -0
  149. package/lib/views/slides/test/fixtures/free-text.d.ts +3 -0
  150. package/lib/views/slides/test/fixtures/free-text.js +38 -0
  151. package/lib/views/slides/test/fixtures/qcm-drag.d.ts +3 -0
  152. package/lib/views/slides/test/fixtures/qcm-drag.js +108 -0
  153. package/lib/views/slides/test/fixtures/qcm-graphic.d.ts +3 -0
  154. package/lib/views/slides/test/fixtures/qcm-graphic.js +88 -0
  155. package/lib/views/slides/test/fixtures/qcm.d.ts +3 -0
  156. package/lib/{helpers → views/slides}/test/fixtures/qcm.js +37 -27
  157. package/lib/views/slides/test/fixtures/select-template.d.ts +3 -0
  158. package/lib/views/slides/test/fixtures/select-template.js +92 -0
  159. package/lib/views/slides/test/fixtures/slider.d.ts +3 -0
  160. package/lib/views/slides/test/fixtures/slider.js +36 -0
  161. package/lib/views/slides/test/fixtures/text-template.d.ts +3 -0
  162. package/lib/{helpers → views/slides}/test/fixtures/text-template.js +21 -11
  163. package/lib/views/slides/test/map-api-slide-to-ui.test.d.ts +1 -0
  164. package/lib/{helpers → views/slides}/test/map-api-slide-to-ui.test.js +19 -9
  165. package/package.json +4 -3
  166. package/src/actions/api/fetch-skills.ts +12 -12
  167. package/src/actions/api/fetch-slide.ts +38 -13
  168. package/src/actions/api/post-progression.ts +18 -22
  169. package/src/actions/api/test/create-test-store.ts +25 -0
  170. package/src/actions/api/test/fetch-skills.test.ts +70 -0
  171. package/src/actions/api/test/fetch-slide.test.ts +77 -0
  172. package/src/actions/api/test/post-progression.test.ts +119 -0
  173. package/src/actions/index.ts +1 -10
  174. package/src/actions/ui/answers.ts +16 -0
  175. package/src/actions/ui/is-fetching.ts +0 -6
  176. package/src/actions/ui/slides.ts +35 -0
  177. package/src/common/index.ts +7 -1
  178. package/src/fixtures/qcm-slide.ts +2 -2
  179. package/src/fixtures/temp-fixture.ts +2 -2
  180. package/src/index.tsx +26 -110
  181. package/src/reducers/data/index.ts +1 -1
  182. package/src/reducers/data/progression.ts +5 -40
  183. package/src/reducers/data/slides.ts +17 -125
  184. package/src/reducers/data/test/progression.test.ts +42 -0
  185. package/src/reducers/data/test/skills.test.ts +14 -0
  186. package/src/reducers/data/test/slides.test.ts +26 -0
  187. package/src/reducers/data/test/token.test.ts +13 -0
  188. package/src/reducers/ui/answers.ts +19 -0
  189. package/src/reducers/ui/current-slide-ref.ts +19 -0
  190. package/src/reducers/ui/index.ts +6 -9
  191. package/src/reducers/ui/test/answers.test.ts +13 -0
  192. package/src/reducers/ui/test/current-slide-ref.test.ts +14 -0
  193. package/src/reducers/ui/test/navigation.test.ts +19 -0
  194. package/src/services/fetch-slide.ts +1 -1
  195. package/src/services/index.ts +3 -1
  196. package/src/services/post-answer.ts +27 -0
  197. package/src/services/test/fetch-slide.test.ts +30 -0
  198. package/src/services/test/post-answer.test.ts +68 -0
  199. package/src/services/test/post-progression.test.ts +14 -4
  200. package/src/test/util/services.mock.ts +46 -4
  201. package/src/types/common.ts +77 -40
  202. package/src/types/slides.ts +0 -5
  203. package/src/views/skills/index.ts +56 -0
  204. package/src/views/slides/index.ts +251 -0
  205. package/src/views/slides/map-api-slide-to-ui.ts +251 -0
  206. package/src/views/slides/test/fixtures/free-text.ts +43 -0
  207. package/src/views/slides/test/fixtures/qcm-drag.ts +111 -0
  208. package/src/views/slides/test/fixtures/qcm-graphic.ts +94 -0
  209. package/src/{helpers → views/slides}/test/fixtures/qcm.ts +43 -33
  210. package/src/views/slides/test/fixtures/select-template.ts +98 -0
  211. package/src/views/slides/test/fixtures/slider.ts +41 -0
  212. package/src/{helpers → views/slides}/test/fixtures/text-template.ts +23 -14
  213. package/src/{helpers → views/slides}/test/map-api-slide-to-ui.test.ts +22 -20
  214. package/es/actions/data/slides.d.ts +0 -37
  215. package/es/actions/data/slides.js +0 -16
  216. package/es/actions/ui/finished-slides.d.ts +0 -10
  217. package/es/actions/ui/finished-slides.js +0 -8
  218. package/es/actions/ui/review-status.d.ts +0 -7
  219. package/es/actions/ui/review-status.js +0 -7
  220. package/es/actions/ui/step-items.d.ts +0 -24
  221. package/es/actions/ui/step-items.js +0 -11
  222. package/es/helpers/map-api-slide-to-ui.d.ts +0 -8
  223. package/es/helpers/map-api-slide-to-ui.js +0 -175
  224. package/es/helpers/test/fixtures/free-text.d.ts +0 -4
  225. package/es/helpers/test/fixtures/free-text.js +0 -24
  226. package/es/helpers/test/fixtures/qcm-drag.d.ts +0 -4
  227. package/es/helpers/test/fixtures/qcm-drag.js +0 -106
  228. package/es/helpers/test/fixtures/qcm-graphic.d.ts +0 -4
  229. package/es/helpers/test/fixtures/qcm-graphic.js +0 -70
  230. package/es/helpers/test/fixtures/qcm.d.ts +0 -4
  231. package/es/helpers/test/fixtures/select-template.d.ts +0 -4
  232. package/es/helpers/test/fixtures/select-template.js +0 -88
  233. package/es/helpers/test/fixtures/slider.d.ts +0 -4
  234. package/es/helpers/test/fixtures/slider.js +0 -27
  235. package/es/helpers/test/fixtures/text-template.d.ts +0 -4
  236. package/es/reducers/ui/finished-slides.d.ts +0 -7
  237. package/es/reducers/ui/finished-slides.js +0 -33
  238. package/es/reducers/ui/review-status.d.ts +0 -4
  239. package/es/reducers/ui/step-items.d.ts +0 -14
  240. package/es/reducers/ui/step-items.js +0 -74
  241. package/es/types/ui-progression.d.ts +0 -10
  242. package/es/types/views/slides.d.ts +0 -60
  243. package/lib/actions/data/slides.d.ts +0 -37
  244. package/lib/actions/data/slides.js +0 -16
  245. package/lib/actions/ui/finished-slides.d.ts +0 -10
  246. package/lib/actions/ui/finished-slides.js +0 -8
  247. package/lib/actions/ui/review-status.d.ts +0 -7
  248. package/lib/actions/ui/review-status.js +0 -7
  249. package/lib/actions/ui/step-items.d.ts +0 -24
  250. package/lib/actions/ui/step-items.js +0 -11
  251. package/lib/helpers/map-api-slide-to-ui.d.ts +0 -8
  252. package/lib/helpers/map-api-slide-to-ui.js +0 -181
  253. package/lib/helpers/test/fixtures/free-text.d.ts +0 -4
  254. package/lib/helpers/test/fixtures/free-text.js +0 -24
  255. package/lib/helpers/test/fixtures/qcm-drag.d.ts +0 -4
  256. package/lib/helpers/test/fixtures/qcm-drag.js +0 -106
  257. package/lib/helpers/test/fixtures/qcm-graphic.d.ts +0 -4
  258. package/lib/helpers/test/fixtures/qcm-graphic.js +0 -70
  259. package/lib/helpers/test/fixtures/qcm.d.ts +0 -4
  260. package/lib/helpers/test/fixtures/select-template.d.ts +0 -4
  261. package/lib/helpers/test/fixtures/select-template.js +0 -88
  262. package/lib/helpers/test/fixtures/slider.d.ts +0 -4
  263. package/lib/helpers/test/fixtures/slider.js +0 -27
  264. package/lib/helpers/test/fixtures/text-template.d.ts +0 -4
  265. package/lib/reducers/ui/finished-slides.d.ts +0 -7
  266. package/lib/reducers/ui/finished-slides.js +0 -45
  267. package/lib/reducers/ui/review-status.d.ts +0 -4
  268. package/lib/reducers/ui/step-items.d.ts +0 -14
  269. package/lib/reducers/ui/step-items.js +0 -86
  270. package/lib/types/ui-progression.d.ts +0 -10
  271. package/lib/types/views/slides.d.ts +0 -60
  272. package/src/actions/data/slides.ts +0 -65
  273. package/src/actions/ui/finished-slides.ts +0 -21
  274. package/src/actions/ui/review-status.ts +0 -19
  275. package/src/actions/ui/step-items.ts +0 -45
  276. package/src/helpers/map-api-slide-to-ui.ts +0 -253
  277. package/src/helpers/test/fixtures/free-text.ts +0 -28
  278. package/src/helpers/test/fixtures/qcm-drag.ts +0 -110
  279. package/src/helpers/test/fixtures/qcm-graphic.ts +0 -74
  280. package/src/helpers/test/fixtures/select-template.ts +0 -92
  281. package/src/helpers/test/fixtures/slider.ts +0 -31
  282. package/src/reducers/ui/finished-slides.ts +0 -52
  283. package/src/reducers/ui/review-status.ts +0 -19
  284. package/src/reducers/ui/step-items.ts +0 -116
  285. package/src/types/ui-progression.ts +0 -25
  286. package/src/types/views/skills.ts +0 -27
  287. package/src/types/views/slides.ts +0 -65
  288. /package/es/{helpers/test/map-api-slide-to-ui.test.d.ts → actions/api/test/fetch-skills.test.d.ts} +0 -0
  289. /package/es/{types/ui-progression.js → actions/api/test/fetch-slide.test.d.ts} +0 -0
  290. /package/es/{types/views/skills.js → actions/api/test/post-progression.test.d.ts} +0 -0
  291. /package/es/{types/views/slides.js → reducers/data/test/progression.test.d.ts} +0 -0
  292. /package/{lib/helpers/test/map-api-slide-to-ui.test.d.ts → es/reducers/data/test/skills.test.d.ts} +0 -0
  293. /package/{lib/types/ui-progression.js → es/reducers/data/test/slides.test.d.ts} +0 -0
  294. /package/{lib/types/views/skills.js → es/reducers/data/test/token.test.d.ts} +0 -0
  295. /package/{lib/types/views/slides.js → es/reducers/ui/test/answers.test.d.ts} +0 -0
@@ -0,0 +1,94 @@
1
+ import noop from 'lodash/fp/noop';
2
+ import {SlideFromAPI, UISlide} from '../../../../types/common';
3
+
4
+ export const qcmGraphicSlide: SlideFromAPI = {
5
+ question: {
6
+ content: {
7
+ media: {
8
+ src: [],
9
+ posters: [],
10
+ subtitles: []
11
+ },
12
+ choices: [
13
+ {
14
+ media: {
15
+ src: [
16
+ {
17
+ _id: '624efd915948a7013083e986',
18
+ mimeType: 'image/jpeg',
19
+ url: '//static.coorpacademy.com/content/CoorpAcademy/content-partnerships/cockpit-partner-au-feminin/default/true-1512554153232.jpg',
20
+ id: '624efd915948a7013083e986'
21
+ }
22
+ ],
23
+ posters: [],
24
+ subtitles: [],
25
+ type: 'img'
26
+ },
27
+ items: [],
28
+ _id: '624efd915948a7013083e985',
29
+ label: 'Vrai',
30
+ value: 'sli_VkSQroQnx.choice_NJesyUo7nx',
31
+ id: '624efd915948a7013083e985'
32
+ },
33
+ {
34
+ media: {
35
+ src: [
36
+ {
37
+ _id: '624efd915948a7013083e988',
38
+ mimeType: 'image/jpeg',
39
+ url: '//static.coorpacademy.com/content/CoorpAcademy/content-partnerships/cockpit-partner-au-feminin/default/false-1512554160848.jpg',
40
+ id: '624efd915948a7013083e988'
41
+ }
42
+ ],
43
+ posters: [],
44
+ subtitles: [],
45
+ type: 'img'
46
+ },
47
+ items: [],
48
+ _id: '624efd915948a7013083e987',
49
+ label: 'Faux',
50
+ value: 'sli_VkSQroQnx.choice_VkgayLjX3e',
51
+ id: '624efd915948a7013083e987'
52
+ }
53
+ ]
54
+ },
55
+ type: 'qcmGraphic',
56
+ header: 'Pour mener une bonne négociation, il ne faut ressentir aucune émotion. Vrai ou faux ?',
57
+ explanation: 'Sélectionnez la bonne réponse.'
58
+ },
59
+ klf: "Il ne faut pas prendre la négociation comme une affaire personnelle, afin de rester centré sur son sujet. Mais cela ne signifie pas être dépourvu de toute émotion, car celles-ci peuvent être de vrais atouts. À condition de réussir à les exprimer sans accuser l'autre d'en être à l'origine.",
60
+ tips: "Pour gérer ses émotions, il faut d'abord les identifier, notamment en analysant ses ressentis physiques et en trouvant l'élément déclencheur.",
61
+ universalRef: 'sli_VkSQroQnx',
62
+ id: 'sli_VkSQroQnx',
63
+ parentContentTitle: {
64
+ title: 'Developing the review app',
65
+ type: 'course'
66
+ }
67
+ };
68
+
69
+ export const qcmGraphicUISlide: Partial<UISlide> = {
70
+ questionText:
71
+ 'Pour mener une bonne négociation, il ne faut ressentir aucune émotion. Vrai ou faux ?',
72
+ answerUI: {
73
+ help: 'Sélectionnez la bonne réponse.',
74
+ model: {
75
+ type: 'qcmGraphic',
76
+ answers: [
77
+ {
78
+ title: 'Vrai',
79
+ image:
80
+ '//static.coorpacademy.com/content/CoorpAcademy/content-partnerships/cockpit-partner-au-feminin/default/true-1512554153232.jpg',
81
+ selected: false,
82
+ onClick: noop
83
+ },
84
+ {
85
+ title: 'Faux',
86
+ image:
87
+ '//static.coorpacademy.com/content/CoorpAcademy/content-partnerships/cockpit-partner-au-feminin/default/false-1512554160848.jpg',
88
+ selected: false,
89
+ onClick: noop
90
+ }
91
+ ]
92
+ }
93
+ }
94
+ };
@@ -1,6 +1,5 @@
1
1
  import noop from 'lodash/fp/noop';
2
- import {Qcm} from '../../../types/slides';
3
- import {SlideFromAPI} from '../../../types/common';
2
+ import {SlideFromAPI, UISlide} from '../../../../types/common';
4
3
 
5
4
  export const qcmSlide: SlideFromAPI = {
6
5
  question: {
@@ -71,38 +70,49 @@ export const qcmSlide: SlideFromAPI = {
71
70
  tips: 'En 2021, le média en ligne Numerama a créé un NFT vendu aux enchères sur OpenSea. Sur cette plateforme, il est obligatoire de mettre un prix de réserve, autrement dit un prix minimum au-dessous duquel la vente ne sera pas automatiquement acceptée. Sur OpenSea il ne peut être inférieur à 1 ETH. Si le prix de réserve est atteint, pas de problème, les "gas fees" (les frais de gaz) sont couverts par OpenSea. Mais, si ce n’est pas le cas, c’est au vendeur de s’en acquitter. <br/>Le NFT en question est parti à 0,021 ETH, soit 40€ au cours de l\'époque, un prix inférieur au prix de réserve. Numerama a dû acquitter des frais de gaz, et payer 190 €. <br/>Avec les NFT, on ne gagne pas à tous les coups.',
72
71
  universalRef: 'sli_N1XACJobn',
73
72
  hasClue: true,
74
- id: 'sli_N1XACJobn'
73
+ id: 'sli_N1XACJobn',
74
+ parentContentTitle: {
75
+ title: 'Developing the review app',
76
+ type: 'course'
77
+ }
75
78
  };
76
79
 
77
- export const qcmUISlide: Qcm = {
78
- type: 'qcm',
79
- answers: [
80
- {
81
- title: 'Le créateur peut fixer un pourcentage pour chaque transaction future',
82
- selected: false,
83
- onClick: noop,
84
- ariaLabel: 'Le créateur peut fixer un pourcentage pour chaque transaction future'
85
- },
86
- {
87
- title:
88
- "Pour chaque transaction il existe un pourcentage fixe déterminé par le droit d'auteur du pays où se tient la vente",
89
- selected: false,
90
- onClick: noop,
91
- ariaLabel:
92
- "Pour chaque transaction il existe un pourcentage fixe déterminé par le droit d'auteur du pays où se tient la vente"
93
- },
94
- {
95
- title: "Seule la galerie ou la plateforme peut toucher une commission sur la vente d'un NFT",
96
- selected: false,
97
- onClick: noop,
98
- ariaLabel:
99
- "Seule la galerie ou la plateforme peut toucher une commission sur la vente d'un NFT"
100
- },
101
- {
102
- title: "Les NFT payés en ETH ne peuvent pas être soumis au paiement d'une commission",
103
- selected: false,
104
- onClick: noop,
105
- ariaLabel: "Les NFT payés en ETH ne peuvent pas être soumis au paiement d'une commission"
80
+ export const qcmUISlide: Partial<UISlide> = {
81
+ questionText: "Après la vente d'un NFT, son créateur peut-il toucher de l'argent ?",
82
+ answerUI: {
83
+ help: 'Sélectionnez la bonne réponse.',
84
+ model: {
85
+ type: 'qcm',
86
+ answers: [
87
+ {
88
+ title: 'Le créateur peut fixer un pourcentage pour chaque transaction future',
89
+ selected: false,
90
+ onClick: noop,
91
+ ariaLabel: 'Le créateur peut fixer un pourcentage pour chaque transaction future'
92
+ },
93
+ {
94
+ title:
95
+ "Pour chaque transaction il existe un pourcentage fixe déterminé par le droit d'auteur du pays où se tient la vente",
96
+ selected: false,
97
+ onClick: noop,
98
+ ariaLabel:
99
+ "Pour chaque transaction il existe un pourcentage fixe déterminé par le droit d'auteur du pays où se tient la vente"
100
+ },
101
+ {
102
+ title:
103
+ "Seule la galerie ou la plateforme peut toucher une commission sur la vente d'un NFT",
104
+ selected: false,
105
+ onClick: noop,
106
+ ariaLabel:
107
+ "Seule la galerie ou la plateforme peut toucher une commission sur la vente d'un NFT"
108
+ },
109
+ {
110
+ title: "Les NFT payés en ETH ne peuvent pas être soumis au paiement d'une commission",
111
+ selected: false,
112
+ onClick: noop,
113
+ ariaLabel: "Les NFT payés en ETH ne peuvent pas être soumis au paiement d'une commission"
114
+ }
115
+ ]
106
116
  }
107
- ]
117
+ }
108
118
  };
@@ -0,0 +1,98 @@
1
+ import noop from 'lodash/fp/noop';
2
+ import {SlideFromAPI, UISlide} from '../../../../types/common';
3
+
4
+ export const selectTemplateSlide: SlideFromAPI = {
5
+ question: {
6
+ content: {
7
+ template:
8
+ 'La vue {{sel80495}} présente la liste des utilisateurs ayant le plus grand nombre d’étoiles cumulées.',
9
+ choices: [
10
+ {
11
+ items: [
12
+ {
13
+ _id: '5b57464e3b594d002e8829f7',
14
+ value: 'sli_N13-hG3kX.choice_NJgC3aznJm',
15
+ text: 'Catalogue'
16
+ },
17
+ {
18
+ _id: '5b57464e3b594d002e8829f6',
19
+ value: 'sli_N13-hG3kX.choice_EJZ02aMny7',
20
+ text: 'Leaderboard'
21
+ },
22
+ {
23
+ _id: '5b57464e3b594d002e8829f5',
24
+ value: 'sli_N13-hG3kX.choice_4keCaf21Q',
25
+ text: 'Activité'
26
+ },
27
+ {
28
+ _id: '5b57464e3b594d002e8829f4',
29
+ value: 'sli_N13-hG3kX.choice_NkbJAMn17',
30
+ text: 'Slides'
31
+ }
32
+ ],
33
+ _id: '5b57464e3b594d002e8829f3',
34
+ name: 'sel80495',
35
+ type: 'select'
36
+ }
37
+ ]
38
+ },
39
+ type: 'template',
40
+ header: 'Complétez la phrase ci-dessous.',
41
+ explanation:
42
+ 'Saisissez votre réponse ou sélectionnez la bonne réponse dans le(s) menu(s) déroulant(s).'
43
+ },
44
+ klf: 'L’apprenant peut aussi évaluer sa performance grâce à un classement disponible sur la vue leaderboard. Elle compare sa position par rapport à celle des autres apprenants de la plateforme.',
45
+ tips: "La position d'un apprenant peut être aussi consultée depuis le header ou en-tête de la page. Elle se met à jour à chaque fois qu'un apprenant obtient des étoiles.",
46
+ universalRef: 'sli_N13-hG3kX',
47
+ id: 'sli_N13-hG3kX',
48
+ parentContentTitle: {
49
+ title: 'Developing the review app',
50
+ type: 'course'
51
+ }
52
+ };
53
+
54
+ export const selectTemplateUISlide: Partial<UISlide> = {
55
+ questionText: 'Complétez la phrase ci-dessous.',
56
+ answerUI: {
57
+ help: 'Saisissez votre réponse ou sélectionnez la bonne réponse dans le(s) menu(s) déroulant(s).',
58
+ model: {
59
+ type: 'template',
60
+ template:
61
+ 'La vue {{sel80495}} présente la liste des utilisateurs ayant le plus grand nombre d’étoiles cumulées.',
62
+ answers: [
63
+ {
64
+ type: 'select',
65
+ name: 'sel80495',
66
+ onChange: noop,
67
+ options: [
68
+ {name: 'Select an answer', value: '', validOption: false, selected: true},
69
+ {
70
+ name: 'Catalogue',
71
+ value: 'Catalogue',
72
+ validOption: true,
73
+ selected: false
74
+ },
75
+ {
76
+ name: 'Leaderboard',
77
+ value: 'Leaderboard',
78
+ validOption: true,
79
+ selected: false
80
+ },
81
+ {
82
+ name: 'Activité',
83
+ value: 'Activité',
84
+ validOption: true,
85
+ selected: false
86
+ },
87
+ {
88
+ name: 'Slides',
89
+ value: 'Slides',
90
+ validOption: true,
91
+ selected: false
92
+ }
93
+ ]
94
+ }
95
+ ]
96
+ }
97
+ }
98
+ };
@@ -0,0 +1,41 @@
1
+ import noop from 'lodash/fp/noop';
2
+ import {SlideFromAPI, UISlide} from '../../../../types/common';
3
+
4
+ export const sliderSlide: SlideFromAPI = {
5
+ question: {
6
+ content: {
7
+ min: 1,
8
+ max: 15,
9
+ unitLabel: 'an(s)'
10
+ },
11
+ type: 'slider',
12
+ header:
13
+ 'En combien d’années la communauté de communes du Thouarsais est-elle passée de zéro à un tiers d’énergies renouvelables ?',
14
+ explanation: 'Déplacez le curseur.'
15
+ },
16
+ klf: 'Dans le cadre d’un projet local, la communauté de communes du Thouarsais, dans le Poitou (ouest de la France), a développé un parc diversifié d’énergies renouvelables : éolien, biomasse, solaire… En sept ans seulement, entre 2007 et 2014, la part d’énergies renouvelables est passée de zéro à un tiers !',
17
+ tips: 'En 2014, le Thouarsais a reçu la médaille de bronze du championnat européen des énergies renouvelables.',
18
+ universalRef: 'sli_VkAzsCLKb',
19
+ id: 'sli_VkAzsCLKb',
20
+ parentContentTitle: {
21
+ title: 'Developing the review app',
22
+ type: 'course'
23
+ }
24
+ };
25
+
26
+ export const sliderUISlide: Partial<UISlide> = {
27
+ questionText:
28
+ 'En combien d’années la communauté de communes du Thouarsais est-elle passée de zéro à un tiers d’énergies renouvelables ?',
29
+ answerUI: {
30
+ help: 'Déplacez le curseur.',
31
+ model: {
32
+ type: 'slider',
33
+ placeholder: 'Déplacez le curseur.',
34
+ minLabel: '1 an(s)',
35
+ maxLabel: '15 an(s)',
36
+ title: '1 an(s)',
37
+ value: 0,
38
+ onChange: noop
39
+ }
40
+ }
41
+ };
@@ -1,6 +1,5 @@
1
1
  import noop from 'lodash/fp/noop';
2
- import {Template} from '../../../types/slides';
3
- import {SlideFromAPI} from '../../../types/common';
2
+ import {SlideFromAPI, UISlide} from '../../../../types/common';
4
3
 
5
4
  export const textTemplateSlide: SlideFromAPI = {
6
5
  question: {
@@ -34,19 +33,29 @@ export const textTemplateSlide: SlideFromAPI = {
34
33
  tips: "L'origine de l'expression <i>role model</i> est attribué au sociologue Robert K. Merton.",
35
34
  universalRef: 'sli_VJKQonm2g',
36
35
  hasClue: true,
37
- id: 'sli_VJKQonm2g'
36
+ id: 'sli_VJKQonm2g',
37
+ parentContentTitle: {
38
+ title: 'Using redux',
39
+ type: 'chapter'
40
+ }
38
41
  };
39
42
 
40
- export const textTemplateUISlide: Template = {
41
- type: 'template',
42
- template: 'Un {{inp58402}} model.',
43
- answers: [
44
- {
45
- type: 'text',
46
- name: 'inp58402',
47
- placeholder: 'Type here',
48
- value: undefined,
49
- onChange: noop
43
+ export const textTemplateUISlide: Partial<UISlide> = {
44
+ questionText: 'Comment le protégé doit-il percevoir son mentor ?',
45
+ answerUI: {
46
+ help: 'Saisissez votre réponse (en anglais).',
47
+ model: {
48
+ type: 'template',
49
+ template: 'Un {{inp58402}} model.',
50
+ answers: [
51
+ {
52
+ type: 'text',
53
+ name: 'inp58402',
54
+ placeholder: 'Type here',
55
+ value: undefined,
56
+ onChange: noop
57
+ }
58
+ ]
50
59
  }
51
- ]
60
+ }
52
61
  };
@@ -1,15 +1,7 @@
1
1
  import test from 'ava';
2
- import {SlideFromAPI} from '../../types/common';
2
+ import identity from 'lodash/fp/identity';
3
+ import {SlideFromAPI, UISlide} from '../../../types/common';
3
4
  import {mapApiSlideToUi} from '../map-api-slide-to-ui';
4
- import {
5
- QcmDrag,
6
- Qcm,
7
- QcmGraphic,
8
- FreeText,
9
- DropDown,
10
- QuestionRange,
11
- Template
12
- } from '../../types/slides';
13
5
  import {qcmUISlide, qcmSlide} from './fixtures/qcm';
14
6
  import {qcmDragUISlide, qcmDragSlide} from './fixtures/qcm-drag';
15
7
  import {freeTextSlide, freeTextUISlide} from './fixtures/free-text';
@@ -18,7 +10,7 @@ import {textTemplateSlide, textTemplateUISlide} from './fixtures/text-template';
18
10
  import {selectTemplateSlide, selectTemplateUISlide} from './fixtures/select-template';
19
11
  import {sliderSlide, sliderUISlide} from './fixtures/slider';
20
12
 
21
- const _mapApiSlideToUi = mapApiSlideToUi({translate: (text: string) => text});
13
+ const _mapApiSlideToUi = mapApiSlideToUi(identity);
22
14
 
23
15
  const macro = test.macro({
24
16
  title(providedTitle) {
@@ -28,28 +20,38 @@ const macro = test.macro({
28
20
  t,
29
21
  arg: {
30
22
  slide: SlideFromAPI;
31
- expectedUiSlide: QcmDrag | Qcm | QcmGraphic | FreeText | DropDown | QuestionRange | Template;
23
+ answers: string[];
24
+ expectedUiSlide: Partial<UISlide>;
32
25
  }
33
26
  ) {
34
27
  t.deepEqual(
35
- JSON.parse(JSON.stringify(_mapApiSlideToUi(arg.slide))),
28
+ JSON.parse(JSON.stringify(_mapApiSlideToUi(arg.slide, arg.answers))),
36
29
  JSON.parse(JSON.stringify(arg.expectedUiSlide))
37
30
  );
38
31
  }
39
32
  });
40
33
 
41
- test('qcm', macro, {slide: qcmSlide, expectedUiSlide: qcmUISlide});
42
- test('qcm drag', macro, {slide: qcmDragSlide, expectedUiSlide: qcmDragUISlide});
43
- test('qcm graphic', macro, {slide: qcmGraphicSlide, expectedUiSlide: qcmGraphicUISlide});
44
- test('text template', macro, {slide: textTemplateSlide, expectedUiSlide: textTemplateUISlide});
34
+ test('qcm', macro, {slide: qcmSlide, answers: [], expectedUiSlide: qcmUISlide});
35
+ test('qcm drag', macro, {slide: qcmDragSlide, answers: [], expectedUiSlide: qcmDragUISlide});
36
+ test('qcm graphic', macro, {
37
+ slide: qcmGraphicSlide,
38
+ answers: [],
39
+ expectedUiSlide: qcmGraphicUISlide
40
+ });
41
+ test('text template', macro, {
42
+ slide: textTemplateSlide,
43
+ answers: [],
44
+ expectedUiSlide: textTemplateUISlide
45
+ });
45
46
  test('select template', macro, {
46
47
  slide: selectTemplateSlide,
48
+ answers: [],
47
49
  expectedUiSlide: selectTemplateUISlide
48
50
  });
49
- test('free text', macro, {slide: freeTextSlide, expectedUiSlide: freeTextUISlide});
50
- test('slider', macro, {slide: sliderSlide, expectedUiSlide: sliderUISlide});
51
+ test('free text', macro, {slide: freeTextSlide, answers: [], expectedUiSlide: freeTextUISlide});
52
+ test('slider', macro, {slide: sliderSlide, answers: [], expectedUiSlide: sliderUISlide});
51
53
 
52
54
  test('should throw an error if the question type can not be handled', t => {
53
55
  const faultySlide = {...qcmSlide, question: {type: 'lol'}};
54
- t.throws(() => _mapApiSlideToUi(faultySlide as SlideFromAPI));
56
+ t.throws(() => _mapApiSlideToUi(faultySlide as SlideFromAPI, []));
55
57
  });
@@ -1,37 +0,0 @@
1
- import { UISlide } from '../../types/slides';
2
- import { ReceivedSlide } from '../api/fetch-slide';
3
- export declare const UPDATE_SLIDES_ON_VALIDATION = "@@slide/UPDATE_SLIDES_ON_VALIDATION";
4
- export declare const UPDATE_SLIDES_ON_NEXT = "@@slide/UPDATE_SLIDES_ON_NEXT";
5
- export declare const VALIDATE_SLIDE = "@@slide/VALIDATE";
6
- declare type SlideUIAnimations = 'unstack' | 'restack';
7
- export declare type Slide = UISlide & {
8
- hidden?: boolean;
9
- position: number;
10
- animationType?: SlideUIAnimations;
11
- isCorrect?: boolean;
12
- endReview?: boolean;
13
- nextContent?: Omit<Slide, 'endReview' | 'hidden' | 'position' | 'nextContent'>;
14
- };
15
- export declare type ValidationPayload = {
16
- slideNumber: number;
17
- newSlideContent: Slide;
18
- numberOfFinishedSlides: number;
19
- nextContent: Slide;
20
- };
21
- export declare type OnNextPayload = Omit<ValidationPayload, 'nextContent'>;
22
- export declare type UpdateSlidesOnValidation = {
23
- type: typeof UPDATE_SLIDES_ON_VALIDATION;
24
- payload: ValidationPayload;
25
- };
26
- export declare type UpdateSlidesOnNext = {
27
- type: typeof UPDATE_SLIDES_ON_NEXT;
28
- payload: OnNextPayload;
29
- };
30
- export declare type ValidateSlide = {
31
- type: typeof VALIDATE_SLIDE;
32
- };
33
- export declare type SlidesAction = ReceivedSlide | UpdateSlidesOnValidation | UpdateSlidesOnNext;
34
- export declare const updateSlidesOnValidation: (payload: ValidationPayload) => UpdateSlidesOnValidation;
35
- export declare const updateSlidesOnNext: (payload: OnNextPayload) => UpdateSlidesOnNext;
36
- export declare const validateSlide: () => ValidateSlide;
37
- export {};
@@ -1,16 +0,0 @@
1
- // -----------------------------------------------------------------------------
2
- export const UPDATE_SLIDES_ON_VALIDATION = '@@slide/UPDATE_SLIDES_ON_VALIDATION';
3
- export const UPDATE_SLIDES_ON_NEXT = '@@slide/UPDATE_SLIDES_ON_NEXT';
4
- export const VALIDATE_SLIDE = '@@slide/VALIDATE';
5
- // -----------------------------------------------------------------------------
6
- export const updateSlidesOnValidation = (payload) => ({
7
- type: UPDATE_SLIDES_ON_VALIDATION,
8
- payload
9
- });
10
- export const updateSlidesOnNext = (payload) => ({
11
- type: UPDATE_SLIDES_ON_NEXT,
12
- payload
13
- });
14
- export const validateSlide = () => ({
15
- type: VALIDATE_SLIDE
16
- });
@@ -1,10 +0,0 @@
1
- export declare type FinishedSlide = {
2
- slideNumber: number;
3
- value: true;
4
- };
5
- export declare const UPDATE_FINISHED_SLIDES = "@@finished-slides/UPDATE_FINISHED_SLIDES";
6
- export declare type UpdateFinishedSlides = {
7
- type: typeof UPDATE_FINISHED_SLIDES;
8
- payload: FinishedSlide;
9
- };
10
- export declare const updateFinishedSlides: (payload: FinishedSlide) => UpdateFinishedSlides;
@@ -1,8 +0,0 @@
1
- // Stores only successful slides
2
- // -----------------------------------------------------------------------------
3
- export const UPDATE_FINISHED_SLIDES = '@@finished-slides/UPDATE_FINISHED_SLIDES';
4
- // -----------------------------------------------------------------------------
5
- export const updateFinishedSlides = (payload) => ({
6
- type: UPDATE_FINISHED_SLIDES,
7
- payload
8
- });
@@ -1,7 +0,0 @@
1
- export declare const UPDATE_REVIEW_STATUS = "@@review-status/UPDATE_REVIEW_STATUS";
2
- export declare type FinishedStatus = 'finished';
3
- export declare type UpdateReviewStatus = {
4
- type: typeof UPDATE_REVIEW_STATUS;
5
- payload: FinishedStatus;
6
- };
7
- export declare const updateReviewStatus: (payload: FinishedStatus) => UpdateReviewStatus;
@@ -1,7 +0,0 @@
1
- // -----------------------------------------------------------------------------
2
- export const UPDATE_REVIEW_STATUS = '@@review-status/UPDATE_REVIEW_STATUS';
3
- // -----------------------------------------------------------------------------
4
- export const updateReviewStatus = (payload) => ({
5
- type: UPDATE_REVIEW_STATUS,
6
- payload
7
- });
@@ -1,24 +0,0 @@
1
- import { FinishedSlides, IconValue } from '../../types/common';
2
- export declare const UPDATE_STEP_ITEMS_ON_VALIDATION = "@@step-items/UPDATE_STEP_ITEMS_ON_VALIDATION";
3
- export declare const UPDATE_STEP_ITEMS_ON_NEXT = "@@step-items/UPDATE_STEP_ITEMS_ON_NEXT";
4
- declare type UpdateStepItemsOnValidationClickPayload = {
5
- stepNumber: number;
6
- icon: IconValue;
7
- };
8
- declare type UpdateStepItemsOnNextClickPayload = {
9
- stepNumber: number;
10
- finishedSlides: FinishedSlides;
11
- current: boolean;
12
- };
13
- export declare type UpdateStepItemsOnValidation = {
14
- type: typeof UPDATE_STEP_ITEMS_ON_VALIDATION;
15
- payload: UpdateStepItemsOnValidationClickPayload;
16
- };
17
- export declare type UpdateStepItemsOnNext = {
18
- type: typeof UPDATE_STEP_ITEMS_ON_NEXT;
19
- payload: UpdateStepItemsOnNextClickPayload;
20
- };
21
- export declare type StepItemsAction = UpdateStepItemsOnValidation | UpdateStepItemsOnNext;
22
- export declare const updateStepItemsOnValidation: (payload: UpdateStepItemsOnValidationClickPayload) => UpdateStepItemsOnValidation;
23
- export declare const updateStepItemsOnNext: (payload: UpdateStepItemsOnNextClickPayload) => UpdateStepItemsOnNext;
24
- export {};
@@ -1,11 +0,0 @@
1
- export const UPDATE_STEP_ITEMS_ON_VALIDATION = '@@step-items/UPDATE_STEP_ITEMS_ON_VALIDATION';
2
- export const UPDATE_STEP_ITEMS_ON_NEXT = '@@step-items/UPDATE_STEP_ITEMS_ON_NEXT';
3
- // -----------------------------------------------------------------------------
4
- export const updateStepItemsOnValidation = (payload) => ({
5
- type: UPDATE_STEP_ITEMS_ON_VALIDATION,
6
- payload
7
- });
8
- export const updateStepItemsOnNext = (payload) => ({
9
- type: UPDATE_STEP_ITEMS_ON_NEXT,
10
- payload
11
- });
@@ -1,8 +0,0 @@
1
- import { AnswerUI } from '../types/slides';
2
- import { SlideFromAPI } from '../types/common';
3
- declare type UiUtils = {
4
- translate: (text: string) => string;
5
- };
6
- export declare const getQuestionType: (slide: SlideFromAPI) => SlideFromAPI['question']['type'];
7
- export declare const mapApiSlideToUi: (uiUtils: UiUtils) => (slide: SlideFromAPI) => AnswerUI['model'] | void;
8
- export {};