fcad-core-dragon 2.0.0-beta.0 → 2.0.0-beta.10

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 (161) hide show
  1. package/.editorconfig +6 -31
  2. package/.prettierrc +11 -0
  3. package/.vscode/extensions.json +8 -0
  4. package/.vscode/settings.json +16 -0
  5. package/CHANGELOG +153 -0
  6. package/README.md +28 -43
  7. package/documentation/.vitepress/config.js +114 -0
  8. package/documentation/api-examples.md +49 -0
  9. package/documentation/composants/app-base-button.md +58 -0
  10. package/documentation/composants/app-base-error-display.md +59 -0
  11. package/documentation/composants/app-base-popover.md +68 -0
  12. package/documentation/composants/app-comp-audio.md +75 -0
  13. package/documentation/composants/app-comp-branch-buttons.md +111 -0
  14. package/documentation/composants/app-comp-button-progress.md +53 -0
  15. package/documentation/composants/app-comp-carousel.md +53 -0
  16. package/documentation/composants/app-comp-container.md +53 -0
  17. package/documentation/composants/app-comp-input-checkbox-next.md +42 -0
  18. package/documentation/composants/app-comp-input-dropdown-next.md +34 -0
  19. package/documentation/composants/app-comp-input-radio-next.md +39 -0
  20. package/documentation/composants/app-comp-input-text-next.md +35 -0
  21. package/documentation/composants/app-comp-input-text-table-next.md +34 -0
  22. package/documentation/composants/app-comp-input-text-to-fill-dropdown-next.md +53 -0
  23. package/documentation/composants/app-comp-input-text-to-fill-next.md +31 -0
  24. package/documentation/composants/app-comp-jauge.md +31 -0
  25. package/documentation/composants/app-comp-menu-item.md +55 -0
  26. package/documentation/composants/app-comp-menu.md +29 -0
  27. package/documentation/composants/app-comp-navigation.md +41 -0
  28. package/documentation/composants/app-comp-note-call.md +53 -0
  29. package/documentation/composants/app-comp-note-credit.md +53 -0
  30. package/documentation/composants/app-comp-play-bar-next.md +53 -0
  31. package/documentation/composants/app-comp-pop-up-next.md +93 -0
  32. package/documentation/composants/app-comp-quiz-next.md +235 -0
  33. package/documentation/composants/app-comp-quiz-recall.md +53 -0
  34. package/documentation/composants/app-comp-svg-next.md +53 -0
  35. package/documentation/composants/app-comp-table-of-content.md +50 -0
  36. package/documentation/composants/app-comp-video-player.md +82 -0
  37. package/documentation/composants.md +46 -0
  38. package/documentation/composants_critiques/ModelPageComposant.md +53 -0
  39. package/documentation/composants_critiques/app-base-module.md +43 -0
  40. package/documentation/composants_critiques/app-base-page.md +48 -0
  41. package/documentation/composants_critiques/app-base.md +311 -0
  42. package/documentation/composants_critiques/main.md +15 -0
  43. package/documentation/demarrage.md +50 -0
  44. package/documentation/deploiement.md +58 -0
  45. package/documentation/index.md +33 -0
  46. package/documentation/markdown-examples.md +85 -0
  47. package/documentation/public/npm_version.png +0 -0
  48. package/documentation/public/vite.svg +15 -0
  49. package/documentation/public/vuejs.svg +2 -0
  50. package/documentation/public/vuetify.svg +6 -0
  51. package/eslint.config.js +60 -0
  52. package/package.json +43 -49
  53. package/src/$locales/en.json +94 -92
  54. package/src/$locales/fr.json +77 -113
  55. package/src/assets/data/onboardingMessages.json +1 -1
  56. package/src/components/AppBase.vue +971 -437
  57. package/src/components/AppBaseButton.test.js +21 -0
  58. package/src/components/AppBaseButton.vue +42 -10
  59. package/src/components/AppBaseErrorDisplay.vue +209 -162
  60. package/src/components/AppBaseFlipCard.vue +1 -0
  61. package/src/components/AppBaseModule.vue +1021 -976
  62. package/src/components/AppBasePage.vue +656 -128
  63. package/src/components/AppBasePopover.vue +41 -0
  64. package/src/components/AppBaseSkeleton.vue +66 -0
  65. package/src/components/AppCompAudio.vue +256 -0
  66. package/src/components/AppCompBranchButtons.vue +108 -181
  67. package/src/components/AppCompButtonProgress.vue +44 -70
  68. package/src/components/AppCompCarousel.vue +284 -233
  69. package/src/components/AppCompContainer.vue +29 -0
  70. package/src/components/AppCompInputCheckBoxNx.vue +323 -0
  71. package/src/components/AppCompInputDropdownNx.vue +299 -0
  72. package/src/components/AppCompInputRadioNx.vue +284 -0
  73. package/src/components/AppCompInputTextNx.vue +153 -0
  74. package/src/components/AppCompInputTextTableNx.vue +202 -0
  75. package/src/components/AppCompInputTextToFillDropdownNx.vue +340 -0
  76. package/src/components/AppCompInputTextToFillNx.vue +313 -0
  77. package/src/components/AppCompJauge.vue +36 -11
  78. package/src/components/AppCompMenu.vue +312 -92
  79. package/src/components/AppCompMenuItem.vue +129 -105
  80. package/src/components/AppCompNavigation.vue +972 -0
  81. package/src/components/AppCompNoteCall.vue +161 -0
  82. package/src/components/AppCompNoteCredit.vue +491 -0
  83. package/src/components/AppCompPlayBarNext.vue +2288 -0
  84. package/src/components/AppCompPopUpNext.vue +504 -0
  85. package/src/components/AppCompQuizNext.vue +510 -0
  86. package/src/components/AppCompQuizRecall.vue +350 -0
  87. package/src/components/AppCompSVGNext.vue +346 -0
  88. package/src/components/AppCompSettingsMenu.vue +18 -16
  89. package/src/components/AppCompTableOfContent.vue +340 -122
  90. package/src/components/AppCompVideoPlayer.vue +377 -0
  91. package/src/components/BaseModule.vue +24 -117
  92. package/src/components/tests__/AppBaseButton.spec.js +53 -0
  93. package/src/components/tests__/useTimer.spec.js +91 -0
  94. package/src/composables/useIdleDetector.js +56 -0
  95. package/src/composables/useQuiz.js +89 -0
  96. package/src/composables/useTimer.js +172 -0
  97. package/src/directives/nvdaFix.js +53 -0
  98. package/src/externalComps/ModuleView.vue +22 -0
  99. package/src/externalComps/SummaryView.vue +91 -0
  100. package/src/main.js +400 -142
  101. package/src/module/stores/appStore.js +947 -0
  102. package/src/module/xapi/ADL.js +241 -60
  103. package/src/module/xapi/Crypto/Hasher.js +8 -8
  104. package/src/module/xapi/Crypto/WordArray.js +6 -6
  105. package/src/module/xapi/Crypto/algorithms/BufferedBlockAlgorithm.js +4 -4
  106. package/src/module/xapi/Crypto/algorithms/C_algo.js +14 -18
  107. package/src/module/xapi/Crypto/algorithms/HMAC.js +1 -1
  108. package/src/module/xapi/Crypto/algorithms/SHA1.js +1 -1
  109. package/src/module/xapi/Crypto/encoders/Base.js +7 -7
  110. package/src/module/xapi/Crypto/encoders/Base64.js +3 -3
  111. package/src/module/xapi/Crypto/encoders/Hex.js +4 -3
  112. package/src/module/xapi/Crypto/encoders/Latin1.js +3 -3
  113. package/src/module/xapi/Crypto/encoders/Utf8.js +3 -3
  114. package/src/module/xapi/Statement/index.js +3 -3
  115. package/src/module/xapi/launch.js +10 -10
  116. package/src/module/xapi/utils.js +17 -17
  117. package/src/module/xapi/wrapper.js +223 -218
  118. package/src/module/xapi/xapiStatement.js +29 -29
  119. package/src/plugins/analytics.js +34 -0
  120. package/src/plugins/bus.js +7 -2
  121. package/src/plugins/gsap.js +9 -8
  122. package/src/plugins/helper.js +141 -43
  123. package/src/plugins/i18n.js +13 -18
  124. package/src/plugins/idb.js +46 -30
  125. package/src/plugins/save.js +1 -1
  126. package/src/plugins/scorm.js +15 -15
  127. package/src/plugins/xapi.js +2 -2
  128. package/src/public/index.html +23 -11
  129. package/src/router/index.js +57 -0
  130. package/src/router/routes.js +312 -0
  131. package/src/shared/generalfuncs.js +241 -10
  132. package/src/shared/validators.js +1018 -0
  133. package/vitest.config.js +19 -0
  134. package/.eslintignore +0 -29
  135. package/.eslintrc.js +0 -86
  136. package/.prettierrc.js +0 -5
  137. package/babel.config.js +0 -3
  138. package/src/components/AppBaseDragChoice.vue +0 -91
  139. package/src/components/AppBaseDropZone.vue +0 -112
  140. package/src/components/AppCompDragAndDrop.vue +0 -339
  141. package/src/components/AppCompInputAssociation.vue +0 -332
  142. package/src/components/AppCompInputCheckBox.vue +0 -227
  143. package/src/components/AppCompInputDropdown.vue +0 -184
  144. package/src/components/AppCompInputRadio.vue +0 -169
  145. package/src/components/AppCompInputTextBox.vue +0 -91
  146. package/src/components/AppCompInputTextTable.vue +0 -155
  147. package/src/components/AppCompInputTextToFillDropdown.vue +0 -255
  148. package/src/components/AppCompInputTextToFillText.vue +0 -164
  149. package/src/components/AppCompMediaPlayer.vue +0 -365
  150. package/src/components/AppCompNavigationFull.vue +0 -1791
  151. package/src/components/AppCompPlayBar.vue +0 -1540
  152. package/src/components/AppCompPopUp.vue +0 -523
  153. package/src/components/AppCompQuiz.vue +0 -2998
  154. package/src/components/AppCompToolTip.vue +0 -94
  155. package/src/mixins/$pageMixins.js +0 -381
  156. package/src/mixins/$quizMixins.js +0 -456
  157. package/src/mixins/timerMixin.js +0 -132
  158. package/src/module/store.js +0 -874
  159. package/src/plugins/timeManager.js +0 -77
  160. package/src/routes.js +0 -734
  161. package/vue.config.js +0 -83
@@ -0,0 +1,31 @@
1
+ # Jauge
2
+
3
+ Ce composant sert de marqueur de progression.
4
+
5
+ ## Aperçu
6
+
7
+ Ce composant affiche la progression sois en pourcentage.
8
+
9
+ ## Comportement
10
+
11
+ Par défaut, vous devez lui passé 2 donnés la valeur maximum et la valeur actuel. Vous pouvez lui dire d'afficher le résultat en pourcentage.
12
+
13
+ ::: tip 💡 Note
14
+
15
+ Pour l'instant ce composant est utiliser en synchronisation avec les items de menu.
16
+ Vous pouvez vous y référé en cas de question.
17
+ :::
18
+
19
+
20
+ ## Paramètre
21
+
22
+ Aucun paramètre n'est modifiable. L'apprence du composant peut être modifier par css seulement. Vous ne pouvez pas trouver à la struture de se composant.
23
+
24
+
25
+ ## Style
26
+
27
+ N/A
28
+
29
+ ## Accessibilité
30
+
31
+ Pour l'instant, il n'y a pas de critère d'accessibilité pour ce composant, puisqu'il n'est qu'esthétique.
@@ -0,0 +1,55 @@
1
+ # Menu item
2
+
3
+ Ce composant aide la création de la page de menu et crée la présentation des activités.
4
+
5
+ ## Aperçu
6
+
7
+ Par défaut, crée une cartes par activité présente dans le *paquage* scorm avec le numéro de l'activité.
8
+
9
+ ## Comportement
10
+
11
+ Affiche une carte par activité présente dans le *paquage* scorm. La carte contient :
12
+
13
+ - Le nom de l'activité et son numéro d'activité
14
+
15
+ - Le temps de l'activité
16
+ - Une jauge de progression
17
+
18
+ La carte se remplie à l'aide d'un tableau d'objet déclaré dans le fichier `menu.setting.js`
19
+ S'il manque une clé ou une information n'est pas valide, l'application affiche une page blanche et la console vous retourneras une erreure.
20
+
21
+ Ce composant est connecter directement avec la composant CompJauge, vous pouvez consulter son comportement [ici](./CompJauge).
22
+
23
+ Au clique du composant, il redirige vers la permière pas de l'activité.
24
+
25
+ ## Paramètre
26
+
27
+ Voici un extrait du fichier `menu.setting.js` à titre d'exemple :
28
+
29
+ ```vue
30
+ <script>
31
+ A00: {
32
+ title: 'Introduction',
33
+ subTitle: 'ceci est un sous-titre',
34
+ time: 'Durée : X minutes',
35
+ anchors: [
36
+ {
37
+ anchorName: 'Moxxi',
38
+ pageRef: 'P01',
39
+ page: 'page_1'
40
+ }
41
+ ]
42
+ },
43
+ </script>
44
+ ```
45
+
46
+ Si vous avez déclarer dans `menu.setting.js` l'introActive, l'activité 00 s'affiche en tant que : Introduction. Le nom est changeable dans `menu.setting.js`.
47
+
48
+
49
+ ## Style
50
+
51
+ Vous ne pouvez pas ajouter des classes supplémentaires à l'objet lui même, mais vous pouvez ajouter des classes au conteneur (qui est une row). Les cartes ont tous les mêmes classes.
52
+
53
+ ## Accessibilité
54
+
55
+ Pour l'instant aucune action n'a été faite pour l'accessibilité.
@@ -0,0 +1,29 @@
1
+ # Menu
2
+
3
+ Ce composant aide la création de la page de menu,créé les la présentaion des activités et créé une carte de présentation qui serre de bookmark.
4
+
5
+ ## Aperçu
6
+
7
+ Par défault, appelle le composant Menu item qui créé toute les activités. Il créé en simultanné une carte qui permet de retourner au dernière endroit visité.
8
+
9
+ ## Comportement
10
+
11
+ Appelle [Menu item](./CompMenuItem) pour créé les cartes des activités.
12
+
13
+ Créé une carte qui permet de retourner à la dernière page visité. Si aucune activité n'a été visité, la carte redirige vers la premier page de la première activité.
14
+
15
+ Pour créé le lien vers le dernière page visité, il regarde dans le store la dernière page enregistrer par celui-ci.
16
+
17
+ Pour visiualiser le composant dans le template, il est présent de le dossier `Views` dans le fichier `SummaryView.vue`.
18
+
19
+ ## Paramètre
20
+
21
+ Pour l'instant aucune paramètre n'est demander.
22
+
23
+ ## Style
24
+
25
+ Vous pouvez ajouter une classe au conteur le plus haut. Les autres ne sont pas atteignable.
26
+
27
+ ## Accessibilité
28
+
29
+ Pour l'instant aucune action n'a été fait pour l'accessibilité.
@@ -0,0 +1,41 @@
1
+ # Navigation
2
+
3
+ Fait affiche le bare de navigation et les boutons du pas de page pour aller à la page suivante et la précédente.
4
+
5
+ ## Aperçu
6
+
7
+ La navigation comprend 3 boutons.
8
+
9
+ - Le bouton de retour au sommaire (qui est dans la bare de navigation)
10
+ - Le bouton pour aller à la page suivant
11
+ - Le bouton pour aller à la page précédente
12
+ - La pagination
13
+
14
+ ## Comportement
15
+
16
+ Affiche une barre a gauche de l'écran qui contient le bouton pour retourner au menu et d'autre fonctionalité (qui ne sont pas controler par navigation). Il affiche aussi les deux boutons de navigation (Suivant précédent) avec la pagination dans le page de la page écran.
17
+
18
+ Le chemin de navigation par default est :
19
+
20
+ - Au départ, de l'application on arrive sur le menu.
21
+ - Lorsqu'on arrive la fin d'un activité on clique sur next. Un pop-up apparait avec 2 boutons un qui ramenere au menu et un qui redigire vers l'activité suivante.
22
+ - Lorsqu'on est sur la dernière page et qu'on cliquer sur le bouton next. Un pop-up apprait avec un bouton qui ramene au menu et l'autre qui envoie à la prochain leçon.
23
+
24
+ Tout les boutons s'auto-gère. Le contexte navigation est modifiable par les paramètres disponible dans `App.vue`.
25
+
26
+ ## Paramètre
27
+
28
+ | Propriété | Type | Description | valeur par défaut |
29
+ |:----------|:-----------------|:------------------------------------------------|:-------|
30
+ | No_menu | Bolean | Retire le menu. L'application redirige vers la premier page de l'activité. | false |
31
+ | is_single_activity | Bolean | L'application est navigable seulement dans une seul activité (s'il y a plus d'un dossier d'activité l'apllication vous retourneras une erreure). Sur la dernière page, le bouton suviant est désactivé. | false |
32
+ | auto_next_activity | Bolean | | false |
33
+ | linkedResource | Object | Chemin vers la prochaine server leçon et lien https ver la prochaine leçon | url: 'pluginfile.php/24153/mod_tincanlaunch/content/index.html',id: 'https://projets.cegepadistance.ca/lrs-xapi/123123AA6001/M1L2' |
34
+
35
+ ## Style
36
+
37
+ N/A
38
+
39
+ ## Accessibilité
40
+
41
+ Pour l'instant aucune action n'a été faite pour l'accessibilité.
@@ -0,0 +1,53 @@
1
+ ---
2
+ title: Model de page
3
+
4
+ ---
5
+ ::: warning 🚩 Important
6
+ Utilisez ce model comme depart pour écrire la page de votre composant:
7
+
8
+ 1) Copiez /dubliquez cette page
9
+ 2) Renommez votre copie avec le nom de votre composant
10
+ 3) Édtitez la page en rempliçant les sections qui conserne votre composant.
11
+ :::
12
+
13
+
14
+ Composant pour ....
15
+
16
+ ## Aperçu
17
+
18
+ Le composant permet de...
19
+ Et culpa explicabo est amet voluptas qui fuga deleniti. Sed consectetur minus aut animi modi sed natus pariatur.
20
+
21
+ ## Comportement
22
+
23
+ Lorem ipsum dolor sit amet. At quas quis qui velit tenetur aut suscipit error id iure doloremque ad velit explicabo. Sit repellat praesentium aut perferendis illum qui omnis recusandae est explicabo dolores in quia tempore qui totam velit.
24
+
25
+ ## Référence du composant
26
+
27
+ **ModelComposantPage** `<model-composant/>`
28
+
29
+
30
+ ## Paramètre
31
+
32
+ Aucun paramètre n'est nécessaire pour ce composant.
33
+
34
+ ### Props
35
+
36
+ | Propriété | Type | Description | valeur par défaut |
37
+ |:----------|:-----------------|:-----------------------------------------------------------------------------------------------------------------------------------|:-------|
38
+ | page | Object | données brutes de la page à créer | Doit contenir au minimum les valeurs suivantes: `{id, type, activityRef }`. Référez-vous à la section sur la [création de page](/guide/pageType.html#qu-est-ce-qu-une-page) pour une liste exhaustive des valeurs de la propriété. |
39
+
40
+ ### Slots
41
+ `content`[named-slot] - Eos nemo officiis a ducimus officiis aut delectus obcaecati qui dolor consequatur.
42
+
43
+
44
+ ## Style
45
+
46
+ `nomde class`[class]
47
+
48
+ Aucune manipulation requise.
49
+
50
+
51
+ ## Accessibilité
52
+ Aucune manipulation requise.
53
+
@@ -0,0 +1,53 @@
1
+ ---
2
+ title: Model de page
3
+
4
+ ---
5
+ ::: warning 🚩 Important
6
+ Utilisez ce model comme depart pour écrire la page de votre composant:
7
+
8
+ 1) Copiez /dubliquez cette page
9
+ 2) Renommez votre copie avec le nom de votre composant
10
+ 3) Édtitez la page en rempliçant les sections qui conserne votre composant.
11
+ :::
12
+
13
+
14
+ Composant pour ....
15
+
16
+ ## Aperçu
17
+
18
+ Le composant permet de...
19
+ Et culpa explicabo est amet voluptas qui fuga deleniti. Sed consectetur minus aut animi modi sed natus pariatur.
20
+
21
+ ## Comportement
22
+
23
+ Lorem ipsum dolor sit amet. At quas quis qui velit tenetur aut suscipit error id iure doloremque ad velit explicabo. Sit repellat praesentium aut perferendis illum qui omnis recusandae est explicabo dolores in quia tempore qui totam velit.
24
+
25
+ ## Référence du composant
26
+
27
+ **ModelComposantPage** `<model-composant/>`
28
+
29
+
30
+ ## Paramètre
31
+
32
+ Aucun paramètre n'est nécessaire pour ce composant.
33
+
34
+ ### Props
35
+
36
+ | Propriété | Type | Description | valeur par défaut |
37
+ |:----------|:-----------------|:-----------------------------------------------------------------------------------------------------------------------------------|:-------|
38
+ | page | Object | données brutes de la page à créer | Doit contenir au minimum les valeurs suivantes: `{id, type, activityRef }`. Référez-vous à la section sur la [création de page](/guide/pageType.html#qu-est-ce-qu-une-page) pour une liste exhaustive des valeurs de la propriété. |
39
+
40
+ ### Slots
41
+ `content`[named-slot] - Eos nemo officiis a ducimus officiis aut delectus obcaecati qui dolor consequatur.
42
+
43
+
44
+ ## Style
45
+
46
+ `nomde class`[class]
47
+
48
+ Aucune manipulation requise.
49
+
50
+
51
+ ## Accessibilité
52
+ Aucune manipulation requise.
53
+
@@ -0,0 +1,53 @@
1
+ ---
2
+ title: Model de page
3
+
4
+ ---
5
+ ::: warning 🚩 Important
6
+ Utilisez ce model comme depart pour écrire la page de votre composant:
7
+
8
+ 1) Copiez /dubliquez cette page
9
+ 2) Renommez votre copie avec le nom de votre composant
10
+ 3) Édtitez la page en rempliçant les sections qui conserne votre composant.
11
+ :::
12
+
13
+
14
+ Composant pour ....
15
+
16
+ ## Aperçu
17
+
18
+ Le composant permet de...
19
+ Et culpa explicabo est amet voluptas qui fuga deleniti. Sed consectetur minus aut animi modi sed natus pariatur.
20
+
21
+ ## Comportement
22
+
23
+ Lorem ipsum dolor sit amet. At quas quis qui velit tenetur aut suscipit error id iure doloremque ad velit explicabo. Sit repellat praesentium aut perferendis illum qui omnis recusandae est explicabo dolores in quia tempore qui totam velit.
24
+
25
+ ## Référence du composant
26
+
27
+ **ModelComposantPage** `<model-composant/>`
28
+
29
+
30
+ ## Paramètre
31
+
32
+ Aucun paramètre n'est nécessaire pour ce composant.
33
+
34
+ ### Props
35
+
36
+ | Propriété | Type | Description | valeur par défaut |
37
+ |:----------|:-----------------|:-----------------------------------------------------------------------------------------------------------------------------------|:-------|
38
+ | page | Object | données brutes de la page à créer | Doit contenir au minimum les valeurs suivantes: `{id, type, activityRef }`. Référez-vous à la section sur la [création de page](/guide/pageType.html#qu-est-ce-qu-une-page) pour une liste exhaustive des valeurs de la propriété. |
39
+
40
+ ### Slots
41
+ `content`[named-slot] - Eos nemo officiis a ducimus officiis aut delectus obcaecati qui dolor consequatur.
42
+
43
+
44
+ ## Style
45
+
46
+ `nomde class`[class]
47
+
48
+ Aucune manipulation requise.
49
+
50
+
51
+ ## Accessibilité
52
+ Aucune manipulation requise.
53
+
@@ -0,0 +1,93 @@
1
+ # Pop up
2
+
3
+ Se composant est repris de vuetify.
4
+
5
+ ## Aperçu
6
+
7
+ Ce composant est un pop-up qui permet de visualiser du contenu. Il peut être appelé par la machine ou par l'utlisateur. Vous pouvez donc à n'importe quel endroit de votre page ou de votre autre composant appeler ce POP-UP pour afficher les messages de type: `information et personnalisé`.
8
+
9
+ ## Comportement
10
+
11
+ Le FCAD offre un composant POP-UP pour afficher une boite de dialogue à l'utilisateur. Ce composant est paramètré pour générer **2 types de boite de dialogue**.
12
+
13
+ Vous devez utiliser le bus pour appeler l'ouverture du pop-up. Voici comment faire:
14
+
15
+ - Emettre l'événement `open-popup`.
16
+ - Passer en "argument" l'objet POP-UP à générer.
17
+
18
+ ```vue
19
+ <script>
20
+ export default {
21
+ //...
22
+ methods: {
23
+ openPopup(data) {
24
+ this.$bus.$emit("open-popup", data);
25
+ }
26
+ },
27
+ };
28
+ </script>
29
+ ```
30
+
31
+ Dans la section **`<template/>`** de votre page ou de votre composant, vous pouvez maintenant faire afficher le POP-UP, par l'appel de votre méthode sur le clique d'un bouton par exemple.
32
+
33
+ ```vue
34
+ <template>
35
+ <div>
36
+ <app-base-button @click="openPopup(myPopupExemple1)">
37
+ Information
38
+ </app-base-button>
39
+ </div>
40
+ </template>
41
+ ```
42
+
43
+
44
+ ## Paramètre
45
+
46
+ Le pop-up doit recevoir l'information à afficher d'object. Voici le contenu que doit avoir l'objet pop-up:
47
+
48
+ | Propriété | Type | Description |valeur | Required |
49
+ |-----------|--------|-------------------------------|------------------------------------------|----------|
50
+ | type | String | défini le type de pop-up à être générer | `popup-info`, `popup-custom` | true |
51
+ | value | Object | défini le contenu à générer dans le pop-up | `title`, `text_n`, `hypertext`\*, `hypertext_n`\*\*, `audio_n`, `video_n`, `link_n`, `image_n`, `cb_$open`,`cb_$close`, `cb_$cancel`, `cb_$confirm`,`$bvArgs`\*\*\*, <br><br> **_NOTES: <br> `n` étant un entier de 1 à infini <br>\* Doit être uniquement utiliser avec le Pop-up Custom<br>\*\* Doit être utilisé iniquement avec les pop-up<br>\*\*\* liste de proprietés Boostrap-vue à passer_** | true |
52
+
53
+ Voici comment définir l'objet à générer :
54
+
55
+ ```vue
56
+ <script>
57
+ export default {
58
+ //...
59
+ data() {
60
+ return {
61
+ //...
62
+ myPopupExemple1: {
63
+ type: "popup-info",
64
+ value: {text_1:"voici une information de pop-up à afficher"},
65
+ },
66
+ };
67
+ },
68
+ };
69
+ </script>
70
+ ```
71
+
72
+ Voici le tableau de tous les paramètres possible pour les pop-ups :
73
+ | Propriété | Type | Description | Usage | Required |
74
+ |-------------------------|----------|-----------------------------------------|-----------|-------------|
75
+ | title | String | Le titre que doit afficher le POP-UP dans l'entête<br><br>_exemple : information_ | title: 'information' | optionnelle |
76
+ | text_n <br><br>**`n` étant un entier de 1 à infini** | String | un contenu textuel que doit afficher le POP-UP. | text_1:"Hello world" | optionnelle |
77
+ | image_n <br><br>**`n` étant un entier de 1 à infini** | Object | une image à faire afficher dans le POP-UP avec une source et un alt | image_1:{path:'img/mon_image.png', label:'nom de mon image'} <br><br> **Note: les clés `path` et `label` sont obligatoire**. | optionnelle |
78
+ | audio_n <br><br>**`n` étant un entier de 1 à infini** | String | un élément audio à faire afficher dans le POP-UP. | audio_1:'audio/mon_image.png' | optionnelle |
79
+ | video_n <br><br>**`n` étant un entier de 1 à infini** | String | un élément audio à faire afficher dans le POP-UP. | video_1:'video/mon_image.png' | optionnelle |
80
+ | link_n <br><br>**`n` étant un entier de 1 à infini** | Object | un lien à faire afficher dans le POP-UP, avec une source et un libélé | link_1:{ ref:'https://FCADdocumentation.netlify.app/guide/', label:'libélé de mon lien' }<br><br>**Note: les clés `ref` et `label` sont obligatoire**. | optionnelle |
81
+ | hypertext_n <br><br>**`n` étant un entier de 1 à infini** | String | un contenu html à faire afficher dans le POP-UP. | hypertext_1:'voici un texte avec du &lt;strong&gt;html&lt;/strong&gt; à afficher' | |
82
+ | cb\_\$open | Function | une fonction de callback à exécuter lorsque le POP-UP sera ouvert | cb\_\$open:foo() | optionnelle |
83
+ | cb\_\$close | Function | une fonction de callback à exécuter lorsque le POP-UP sera fermé | cb\_\$close:foo() | optionnelle |
84
+ | cb\_\$cancel | Function | une fonction de callback à exécuter lorsque le button d'annulation sera appuyé<br> | cb\_\$cancel:foo() | optionnelle |
85
+ | cb\_\$confirm | Function | une fonction de callback à exécuter lorsque le button de confirmation sera appuyé<br> | cb\_\$confirm:foo() | optionnelle | | optionnelle |
86
+
87
+ ## Style
88
+
89
+ N/A
90
+
91
+ ## Accessibilité
92
+
93
+ Pour l'instant aucune action n'a été fait pour l'accessibilité.
@@ -0,0 +1,235 @@
1
+ # Quiz
2
+
3
+ *Quiz* est le composant qui gère principalement toutes les actions principales de tous les types de quiz de l'application, sans être un gestionnaire.
4
+
5
+ ## Aperçu
6
+
7
+ Le composant *quiz* importe et affiche les données. Selon les données entrer dans la feuille *json*, *quiz* se charge d'utiliser le bon type de quiz. Il gère aussi tout ce qui est validation pour tout type de quiz, si validation il y a. Il affiche la rétroaction en dessous du quiz.
8
+
9
+ ## Comportement
10
+
11
+ *Quiz* doit absolument être lié avec un fichier *json* lors de son appelle. Si le fichier *json* comporte une erreur, le quiz ne fonctionnera pas.
12
+
13
+ Le *json* doit avoir les informations suivantes :
14
+
15
+ - id
16
+ - type
17
+ - enonce
18
+ - choix de réponse
19
+ - solution
20
+ - rétroaction
21
+ - valeur de point
22
+ - le nombre essais
23
+
24
+ ```json
25
+ {
26
+ "id": "Axx_Pxx_Qxx",
27
+ "type_question": "",
28
+ "ennonce": "",
29
+ "choix_reponse": [],
30
+ "solution": "",
31
+ "rétroaction": {
32
+ "retro_neutre": {} ,
33
+ "retro_positive": {} ,
34
+ "retro_negative": {}
35
+ },
36
+ "valeur_points": null,
37
+ "max_essai": null
38
+ }
39
+
40
+
41
+ Peu importe le type de quiz développé, ce sont les informations nécessaires pour créer un quiz.
42
+
43
+ Le paramètre *ennonce* doit absolument recevoir une structure html.
44
+
45
+ ::: warning Attention
46
+ Prenez note que *valeur_points* n'est pas fonctionnel pour l'instant.
47
+ :::
48
+
49
+ ## Paramètre
50
+
51
+ ### Voici les paramètres généraux à tous les quiz
52
+
53
+ #### ID
54
+
55
+ **Type:** `String` _(Axx_Pxx_Qxx)_
56
+
57
+ **Usage:** Obligatoire.
58
+ Définie l'identification unique pour le quiz/ la question. Cet *ID* est constitué de la référence de l'activité **Axx** , référence de la page **Pxx** et un numéro du Quiz **Qxx**.
59
+
60
+ #### TYPE_QUESTION
61
+
62
+ **Type:** `String` _(choix_mult | choix_unique | dropdown | reponse_ouverte | texte_tableau | texte_troue | texte_troue_select)__
63
+
64
+ **Usage:** Obligatoire.
65
+ Définie le type de question.
66
+
67
+ #### ENNONCE
68
+
69
+ **Type:** `String`
70
+
71
+ **Usage:** Obligatoire.
72
+ Définie l'énoncé textuel de la question.
73
+
74
+ #### RETROACTION
75
+
76
+ **Type:** `Object` retro_positive | retro_negative | retro_neutre
77
+
78
+ **Usage:** Obligatoire.
79
+ Définie la rétroaction à afficher pour la question. Doit /referencesléter une des situations ci-dessous:
80
+
81
+ - Une rétraction particulière est attendue selon le type de réponse de l'utilisateur. Les clés `retro_positive , retro_negative , retro_neutre` doivent être remplies.
82
+
83
+ - Aucune rétroaction particulière n'est demandée. Les clés `retro_positive` , `retro_negative` peuvent contenir un string vide ou être mise `Null` et la clé `retro_neutre` doit être remplie pour la rétroaction générale à afficher.
84
+
85
+ #### VALEUR_POINTS
86
+
87
+ **Type:** `Number | Null`
88
+
89
+ **Usage:** Optionnel.
90
+ Définie la valeur de la question en termes de points. Doit être mit à `null` si aucune valeur n’est nécessaire pour le quiz.
91
+
92
+ #### MAX_ESSAI
93
+
94
+ **Type:** `Number | Null`
95
+
96
+ **Usage:** Optionnel.
97
+ Définie le nombre d'essai permit pour ce quiz. Doit être mis à `null` si aucun aucune condition d'essai maximum n'est nécessaire pour le quiz.
98
+
99
+ ### Voici les paramètres spécifique pour les inputs et les types de solutions
100
+
101
+ ### Quiz réponse ouverte
102
+
103
+ [Exemple d'un objet quizData de réponse ouverte](../ref/quizDataReponseOuverte.json)
104
+
105
+ #### CHOIX_REPONSE
106
+
107
+ **Type:** `Null`
108
+
109
+ **Usage:** Obligatoire.
110
+ Doit être mis à `null` si la question ne présente pas un choix de réponse.
111
+
112
+ #### SOLUTION
113
+
114
+ **Type:** `String | Null`
115
+
116
+ **Usage:** Obligatoire.
117
+ Définie la solution pour la question.
118
+
119
+ ### Quiz réponse radio et réponse checkbox
120
+
121
+ [Exemple d'un objet quizData de réponse radio](../ref/quizDataChoixUnique.json)
122
+
123
+ [Exemple d'un objet quizData de réponse checkbox](../ref/quizDataChoixMult.json)
124
+
125
+
126
+ #### CHOIX_REPONSE
127
+
128
+ **Type:** `Array{Object} | Null`
129
+
130
+ **Usage:** Obligatoire.
131
+ Définie l'ensemble des choix proposés pour la réponse. Doit être mis à `null` si la question ne présente pas un choix de réponse.
132
+ Le type d'objet contenu de l'array change selon le type de quiz:
133
+ - Le type `reponse_simple` pour les quiz `choix_unique` || `choix_mult`
134
+
135
+ #### SOLUTION
136
+
137
+ **Type:** `Number | Array | Null`
138
+
139
+ **Usage:** Obligatoire.
140
+ Définie la solution pour la question. Doit contenir une des valeurs ci-dessous:
141
+
142
+ - un Array ( *IDs* des solutions, dans le cas de la question type choix_mult)
143
+ - Null dans le cas où aucune solution n'est attendu/exigé (reponse_ouverte sans validation)
144
+
145
+ ### Quiz réponse liste déroulante
146
+
147
+ [Exemple d'un objet quizData de réponse liste déroulante](../ref/quizDataDropdown.json)
148
+
149
+ #### CHOIX_REPONSE
150
+
151
+ **Type:** `Array{Object} | Null`
152
+
153
+ **Usage:** Obligatoire.
154
+ Définie l'ensemble des choix proposés pour chaque réponse.
155
+
156
+ #### SOLUTION
157
+
158
+ **Type:** `Array | Null`
159
+
160
+ **Usage:** Obligatoire.
161
+ Définie la solution pour la question.
162
+
163
+ ### Quiz texte tableau
164
+
165
+ [Exemple d'un objet quizData de texte tableau](../ref/quizDataTextTableau.json)
166
+
167
+ #### CHOIX_REPONSE
168
+
169
+ **Type:** `Array{Object}`
170
+
171
+ **Usage:** Obligatoire.
172
+ Définie l'ensemble des rangés du tableau avec chaque rangé ayant une réponse.
173
+
174
+ #### SOLUTION
175
+
176
+ **Type:** `Array{Object} | Null`
177
+
178
+ **Usage:** Obligatoire.
179
+ Définie la solution pour la question.
180
+
181
+ ### Quiz texte trou
182
+
183
+ [Exemple d'un objet quizData de texte trou](../ref/quizDataTexteTroue.json)
184
+
185
+ #### TEXTE_BASE
186
+
187
+ **Type:** `String`
188
+
189
+ **Usage:** Obligatoire.
190
+ Définie le texte où les entrées de champs textes seront insérées. L'emplacement des entrés est indiqué dans le texte avec `$%KEY%$`.
191
+
192
+ #### SOLUTION
193
+
194
+ **Type:** `Array{Object} | Null`
195
+
196
+ **Usage:** Obligatoire.
197
+ Définie la solution pour la question.
198
+
199
+
200
+ ### Quiz texte trou à liste déroulante
201
+
202
+ [Exemple d'un objet quizData de texte trou à liste déroulante](../ref/quizDataTextTrouSelect.json)
203
+
204
+ #### CHOIX_REPONSE
205
+
206
+ **Type:** `Array{Object}`
207
+
208
+ **Usage:** Obligatoire.
209
+ Définie l'ensemble des choix proposés pour chaque réponse.
210
+
211
+ #### TEXTE_BASE
212
+
213
+ **Type:** `String`
214
+
215
+ **Usage:** Obligatoire.
216
+ Définie le texte où les entrées de champs textes seront insérées. L'emplacement des entrés est indiqué dans le texte avec `$%KEY%$`.
217
+
218
+ #### SOLUTION
219
+
220
+ **Type:** `Array{Object} | Null`
221
+
222
+ **Usage:** Obligatoire.
223
+ Définie la solution pour la question.
224
+
225
+
226
+
227
+ ## Style
228
+
229
+ Lorsque vous sélectionnez une réponse, la classe *select* est ajoutée à l'élément sélectionné. Lors de la validation des éléments, toutes les bonnes réponses ont la classe *good* et toute les mauvaises réponses on la classes *bad*. Un jeu de classes est utilisé dans la feuille sass de chaque type de input pour identifier les bonnes réponses, les mauvaises réponses, les mauvaises réponse sélectionnées et les bonnes réponses sélectionnées.
230
+
231
+ Aucune classe supplémentaire ne peut être ajoutée au élément du quiz. Vous ne pouvez jouer qu'avec le conteneur parent du quiz pour ajouter des classes ou *id*. Par défaut, le quiz et ses éléments ont l'*id* que vous définissez dans la feuille *json*.
232
+
233
+ ## Accessibilité
234
+
235
+ Pour l'instant aucune action n'a été fait pour l'accessibilité.