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,311 @@
1
+ # Base App
2
+
3
+
4
+
5
+ ## Aperçu
6
+
7
+ Composant racine pour utilisation de la librairie.
8
+
9
+ ## Référence du composant
10
+
11
+ **AppBase** `<app-base/>`
12
+
13
+ ## Comportement
14
+
15
+ Ce composant reçoit les premières données de configuration pour la création de application. Les données sont fournie au composant sous forme de props. Il valide le type certaines des données fournie et fait afficher un message d'erreur à lécran et dans la console du navigateur, lorsque des erreurs sont détectées. Une fois les données validées, le composant les transmet au Store de application.
16
+
17
+ Le composants est également en charge de faire la communication avec le serveur et les autres module de stockage. Il gère la recuperation et la mise à jours des données de progression dans l'application.
18
+
19
+
20
+
21
+ ::: tip Note
22
+ Le composant rendra l'application inutilisable Lorsque des erreurs de configuration seront détéctée.
23
+ Prêtez attention au message(s) affiché(s) par le composant dans la console du navigateur et l'application. Cela vous permettra de savoir ce qui doit être corrigé.
24
+ :::
25
+
26
+ ## Paramètres
27
+
28
+ Aucun paramètre n'est nécessaire pour ce composant.
29
+
30
+ ### Props
31
+
32
+ | Propriété | Type | Description &nbsp;&nbsp;&nbsp; | valeur par défaut |
33
+ |:----------|:-----------------|:-----------------------------------------------------------------------------------------------------------------------------------|:-------|
34
+ | appConfig | Object | Récoit les données de configuration de application | Doit contenir au minimum les valeurs suivantes: `{lang(String), specification(String), id(String), crs_id(String), idb_id(String), no_menu(Boolean), is_single_activity(Boolean), auto_next_activity(Boolean) }`. Valeur Optionnelles: `{remote(Boolean), actor (Oject), linkedResource(Object) }`. Référez-vous à la section ci dessous pour plus de details|
35
+
36
+ ### Exemple
37
+
38
+ Voici ci dessous un exemple d'utilisation du composant dans une application
39
+
40
+
41
+ ```vue
42
+ <!--App.vue-->
43
+ <template>
44
+ <app-base :app-config="$data">
45
+ </template>
46
+ <script>
47
+ export default {
48
+ data() {
49
+ return {
50
+ lang: 'fr', // Set Language for the Activities and App French (fr)| English(en)
51
+ specification: 'xapi', // connection specification (xapi|scorm)
52
+ id: 'v2', // This activity ID
53
+ crs_id: 'template_fcad_dragon', //The Group ID this activity is part of.
54
+ idb_id: '$template_fcad_dragon', // This activity ID in LocalDB. Only when APP is not remote.
55
+ no_menu: false, // Set permission to view and navigate to SUMMARY VIEW (true|false) -default :false; (CAN BE REMOVED)
56
+ is_single_activity: false, //set app as a single activity ( ex:Introduction | Conclusion | Prep_devoir)(true|false) - default:false; (CAN BE REMOVED)
57
+ auto_next_activity: true, // set Previous/Next can allow navigation between activities. Set false if do not want navigation between activities with Previous/Next button (true|false) - default:true
58
+ // remote: false, // Force App to access server remotely while in production mode (true|false) - default:false, (CAN BE REMOVED)
59
+ actor: {
60
+ name: 'Luke Skywalker',
61
+ mbox: 'mailto:skywalker2@mymailbox.com'
62
+ }
63
+ }
64
+ }
65
+ }
66
+ </script>
67
+ ```
68
+
69
+
70
+
71
+ ### Paramètres Pour AppConfig
72
+
73
+ <h3>⚙️<b>actor</b></h3>
74
+ Défini l'agent pour l'envoi des statements xAPI
75
+
76
+ - **Type:** `Object`
77
+ - **Usage:** `Optionel`
78
+ - **Valeur(s):**
79
+ - `name (String)`- nom de agent
80
+ - `mbox(String)`- l'email de l'agent. Doit commencer par <i>mailto:</i>
81
+
82
+ <h3>⚙️<b>auto_next_activity</b></h3>
83
+ Défini si la navigation est permise entre activité. Doit être mis à `false` si on ne veut pas de navigation entre les activités avec les boutons de navigation Précedent/Suivant button.
84
+
85
+ - **Type:** `Boolean`
86
+ - **Usage:** `Requis`
87
+ - **Valeur(s):** `true|false` valeur par defaut est `true`
88
+
89
+ <h3>⚙️<b>crs_id</b></h3>
90
+ Défini l'identification du group auquel doit faire partie l'activité (l'application).
91
+
92
+ - **Type:** `String`
93
+ - **Usage:** `Requis`
94
+ - **Valeur(s):** Sans Objet. Doit être défini.
95
+
96
+ <h3>⚙️<b>id</b></h3>
97
+ Défini l'identification de l'application. Doit être unique pour éviter toute corruption de données.
98
+
99
+ - **Type:** `String`
100
+ - **Usage:** `Requis`
101
+ - **Valeur(s):** Sans Objet. Doit être défini.
102
+
103
+
104
+ <h3>⚙️<b>idb_id</b></h3>
105
+ Défini l'identification pour l'environement de stockage local (indexDB). Doit être unique pour eviter toute corruption de données.
106
+
107
+ - **Type:** `String`
108
+ - **Usage:** `Requis`
109
+ - **Valeur(s):** Sans Objet. Doit être défini.
110
+
111
+ <h3>⚙️<b>is_single_activity</b></h3>
112
+ Configure l'application pour être traité comme étant une activité independante.
113
+
114
+ - **Type:** `Boolean`
115
+ - **Usage:** `Requis`
116
+ - **Valeur(s):** `true|false` valeur par defaut est `false`
117
+
118
+
119
+ <h3>⚙️<b>no_menu</b></h3>
120
+ Défini si le menu (sommaire) de l'application doit être accessible où non.
121
+
122
+ - **Type:** `Boolean`
123
+ - **Usage:** `Requis`
124
+ - **Valeur(s):** `[true|false]` valeur par defaut est `false`. Mettre à `true` si la page sommaire ne doit pas être accessible
125
+
126
+ <h3>⚙️<b>lang</b></h3>
127
+ Défini la langue dans la quelle sera presenté l'application.
128
+
129
+ - **Type:** `String`
130
+ - **Usage:** `Requis`
131
+ - **Valeur(s):** `[fr|en]` valeur par defaut est `fr` pour la langue française. Mettre à `en` pour avoir l'application en anglais.
132
+
133
+ <h3>⚙️<b>specification</b></h3>
134
+ Défini la norme de specification à utiliser par l'application pour la gestion des données (xAPI ou Scorm).
135
+
136
+ - **Type:** `String`
137
+ - **Usage:** `Requis`
138
+ - **Valeur(s):** `[fr|en]` valeur par defaut est `fr` pour la langue française. Mettre à `en` pour avoir l'application en anglais.
139
+
140
+
141
+ #### TYPE_QUESTION
142
+
143
+ **Type:** `String` _(choix_mult | choix_unique | dropdown | reponse_ouverte | texte_tableau | texte_troue | texte_troue_select)__
144
+
145
+ **Usage:** Obligatoire.
146
+ Définie le type de question.
147
+
148
+ ### Slots
149
+ `content`[named-slot] - permet de recevoir tout le contenu HTML à afficher.
150
+
151
+
152
+ ## Liste d'écouteurs
153
+
154
+ le composant écoutes globalement les émetteurs ci-dessous attachés au `$bus`
155
+
156
+ ::: details <b>set-comp-status</b>
157
+
158
+ Utilisé pour définir le status d'un composant. Un composant peut ainsi émettre son état en indicant s'il est prêt ou non. `AppBase` mettra à jour global de application selon les états des composants.
159
+
160
+
161
+ | **Paramettre associés**<img width=200/> | **type** | **valeur** | **Description** |
162
+ |----|----|----|---------|
163
+ | name | \{String\} | `` | `(éditable)`nom du composant qui émet. |
164
+ | status | \{String\} | `[loading\|ready]` | `(éditable)` status à communiquer|
165
+ | updateTracker | \{Function\} | `name, status` | `(non-éditable)`Cette fonction est executée lorsque évènement est récu|
166
+ | compStatusTracker | \{Array\} | `[]` | `(non-éditable)` Ce paramettre est mis à jour dans le `store`. |
167
+
168
+ - Exemple
169
+
170
+ ```js
171
+ // Le composant toto indique sont status de loading
172
+ this.$bus.$emit('set-comp-status', 'comp_toto', 'loading')
173
+ // AppBase met ajour le status du tracker dans le store
174
+ // AppBase met le status de toute l'application à LOADING
175
+
176
+ //Deux minutes plus tard composant toto indique qu'il est prêt
177
+ setTimeout(()=>this.$bus.$emit('set-comp-status', 'comp_toto', 'ready'), 2000)
178
+ // AppBase met ajour le status du tracker dans le store
179
+ // AppBase met le status de toute l'application à READY
180
+ ```
181
+ ::: tip Note
182
+ l'Application passe seulement à l'état `ready` quand TOUS les composants qui émettent cet événement sont en status `ready`.
183
+
184
+
185
+ :::
186
+
187
+
188
+
189
+
190
+ ::: details <b>reset-userdata</b>
191
+
192
+ Utilisé pour reinitialiser la progression de utilisateur
193
+
194
+ | **Paramettre associés**<img width=200/> | **type** | **valeur** | **Description** |
195
+ |----|----|----|---------|
196
+ | resetUserData | \{Function\} | | `(non-éditable)`Cette fonction est executée lorsque évènement est récu|
197
+
198
+
199
+ - Exemple
200
+
201
+ ```js
202
+ // Le composant toto demande de rénitialiser la progression
203
+ this.$bus.$emit('reset-userdata')
204
+ // AppBase réinitalise la progression
205
+ ```
206
+ :::
207
+
208
+ ::: details <b>fire-exit-event</b>
209
+
210
+ Cet évènement utilisé pour signaler la fermeture de l'application dans le navigateur.
211
+
212
+ | **Paramettre associés**<img width=200/> | **type** | **valeur** | **Description** |
213
+ |----|----|----|---------|
214
+ | cb | \{Function\} | `` | `(éditable, optionnel)`fonction à executer après la réalisation de l'événement |
215
+ | option | \{Boolean\} | `[true\|false]` | `(éditable)` indique si la fonction associée doit utiliser l'API Fecth ou pas|
216
+ | endLesson | \{Function\} | `cb, option` | `(non-éditable)` Cette fonction est executée par application lorsque évènement est réçu|
217
+
218
+ - Exemple
219
+
220
+ ```js
221
+ // Le composant AppBaseModule annonce la fermeture de application en cour avant de lancer une autre leçon.
222
+ this.$bus.$emit('fire-exit-event', () => {
223
+ window.location.replace(newUrlToLaunch)// newUrlToLaunch est url dans le LRS vers la prochaine ressource à initializer
224
+ })
225
+ // AppBase exécute la fermeture de l'application
226
+
227
+ ```
228
+
229
+ :::
230
+
231
+ ::: details <b>move-to-target</b>
232
+
233
+ Utilisé pour signaler le déplacement (skip) vers un élément du DOM
234
+
235
+ | **Paramettre associés**<img width=200/> | **type** | **valeur** | **Description** |
236
+ |----|----|----|---------|
237
+ | target | \{String\} | `` | `(éditable, requis)`Attribut ID de l'élément HTML vers quel va se faire le deplacement |
238
+ | opt | \{Object\} | `{ top, left, behavior}` | `(éditable, optionnel)` paramettre de scroll|
239
+ | moveTo | \{Function\} | `target, opt` | `(non-éditable)`Cette fonction est executée lorsque évènement est récu|
240
+
241
+ - Exemple
242
+
243
+ ```js
244
+ // Le composant toto demande de scroller vers une DIV avec ID main
245
+ this.$bus.$emit('move-to-target', 'main')
246
+ // AppBase déplace le contenu de l'écran vers la DIV main
247
+ ```
248
+ :::
249
+
250
+ ::: details <b>send-xapi-statement</b>
251
+
252
+ Utilisé pour demander l'envoi d'un nouveau statement vers le LRS
253
+
254
+ | **Paramettre associés**<img width=200/> | **type** | **valeur** | **Description** |
255
+ |----|----|----|---------|
256
+ | stmt | \{Object\} | `` | `(éditable, requis)` objet statement à envoyer au LRS|
257
+ | cb | \{Function\} | `[loading\|ready]` | `(éditable)` fonction à executer après la réalisation de l'envoi|
258
+ | withFetch | \{Boolean\} | `[true\|false]` | `(éditable)`Defini si l'API Fetch doit être utilisé ou non|
259
+ | sendXapiStatements | \{Function\} | `stmt, cb, withFetch` | `(non-éditable)`Cette fonction est executée lorsque évènement est récu|
260
+
261
+ - Exemple
262
+
263
+ ```js
264
+ // Le composant toto demande l'envoi d'un statement
265
+ let stmt = {...} // ceci est un statement abstrait (voir la spécification xAPI pour la definition de statement)
266
+ this.$bus.$emit('send-xapi-statement', stmt)
267
+ // AppBase met ajour le status du tracker dans le store
268
+ // AppBase envoie le statement vers le LRS
269
+ ```
270
+ :::
271
+
272
+ ::: details <b>reset-focus-on</b>
273
+
274
+ Force le focus sur un element dans application
275
+
276
+ | **Paramettre associés**<img width=200/> | **type** | **valeur** | **Description** |
277
+ |----|----|----|---------|
278
+ | e | \{Objet\} | `` | `(éditable,requis)` l'HTMLElement qui doit recevoir le focus |
279
+ | resetFocus | \{Function\} | `e` | `(non-éditable)`Cette fonction est executée lorsque évènement est récu|
280
+
281
+ - Exemple
282
+
283
+ ```js
284
+ // Le composant toto demande le focus sur une DIV main
285
+ let main = document.querySelector('#main')
286
+ this.$bus.$emit('reset-focus-on', main)
287
+ // AppBase force le focus sur main
288
+ ```
289
+ :::
290
+
291
+ <!-- - __`set-comp-status`__ `(loading | ready)`: utiliser pour setter l'etat d'un composant this.updateTracker
292
+ - `send-xapi-statement`, this.onSendXapiStatement
293
+ - `reset-userdata`, this.resetUserData
294
+ - `fire-exit-event`, this.endLesson
295
+ - `move-to-target`, this.skipToMain
296
+ - `reset-focus-on`, this.resetFocus -->
297
+
298
+
299
+
300
+
301
+ ## Style
302
+
303
+ `.app-page`[class]
304
+
305
+ Aucune manipulation requise.
306
+
307
+
308
+
309
+ ## Accessibilité
310
+ Aucune manipulation requise.
311
+
@@ -0,0 +1,15 @@
1
+ # Main
2
+ Fichier de configuration qui sert de point entrée principal de la librairie FCAD
3
+
4
+ ## Aperçu/ Utilité
5
+
6
+ - Enregistement global des plugins
7
+ - Enregistrement global des composants
8
+ - Création de stogage local
9
+ - Configuration de connection au serveur
10
+ - Configuration de l'application
11
+
12
+ ::: warning Important
13
+ Lorsque vous créez un nouveau `composant global`, engegistrez le dans ce fichier.
14
+ :::
15
+
@@ -0,0 +1,50 @@
1
+ # Guide de démarrage
2
+ Logiciels requis pour le développement du FCAD.
3
+
4
+ ## Vérifier la compatibilité de Node.js et npm
5
+
6
+ Node.js <b>22.12.0</b> ou plus récent et npm <b>10.9.0</b> ou plus récent sont requis.
7
+
8
+ **Commandes pour vérifier les versions installées sur votre poste**
9
+
10
+ ```shell
11
+ node -v
12
+ npm -v
13
+ ```
14
+
15
+ ::: info
16
+ Il faut contacter la DRI pour procéder à la mise à jour de l'installation globale de Node.js et npm sur votre machine.
17
+ :::
18
+
19
+ ## Dépendances globales
20
+
21
+ Les paquets npm suivants doivent être installés globalement sur votre poste : yalc, nodemon
22
+
23
+ ```shell
24
+ npm install -g yalc nodemon
25
+ ```
26
+
27
+ ::: warning AVERTISSEMENT
28
+ il est possible qu'un redémarrage soit nécessaire suite à l'installation de yalc
29
+ :::
30
+
31
+ ## Récupération du code et utilisation de yalc
32
+
33
+ Le code source se trouve sur notre instance de gitlab https://git.crosemont.qc.ca/fcad/core/fcad-core-2
34
+
35
+ ::: warning AVERTISSEMENT
36
+ L'utilisation de Git Bash comme terminal par défaut est fortement recommandée.
37
+ :::
38
+
39
+ Une fois le répertoire git cloné, il faut installer les dépendances.
40
+
41
+ ```shell
42
+ npm install
43
+ ```
44
+
45
+ Le script <b>watch</b> dans package.json sert à monitorer tout changement dans le code et à publier automatiquement vers yalc.
46
+
47
+ ```shell
48
+ npm run watch
49
+ ```
50
+
@@ -0,0 +1,58 @@
1
+ # Déploiement sur le registre npm
2
+
3
+ Le FCAD 2 est disponible en tant que paquet npm nommé <b>fcad-core-dragon</b>.
4
+
5
+ https://www.npmjs.com/package/fcad-core-dragon
6
+
7
+ ## Pré-requis
8
+ Il faut d’abord s’assurer d’être connecté à npm en exécutant la commande :
9
+ ```shell
10
+ npm login
11
+ ```
12
+ Le compte npm à utiliser est [<b>cg_distance</b>](https://www.npmjs.com/~cg_distance)
13
+
14
+ ## Version pre-release vs version stable
15
+
16
+ Par convention, il faut d'abord publier une version pre-release qui sera testée par les intégrateurs. Tout problème/bogue relevé pourra être corrigé avant d'en arriver à la publication d'une version stable. Une version pre-release portera le suffixe <b>-beta.x</b> et aura le tag <b>next</b> sur npm.
17
+
18
+ L'installation de la dernière version <b>pre-release</b> se fait à l'aide de la commande :
19
+ ```shell
20
+ npm install fcad-core-dragon@next
21
+ ```
22
+
23
+ L'installation de la dernière version <b>stable</b> se fait à l'aide de la commande :
24
+ ```shell
25
+ npm install fcad-core-dragon@latest
26
+ ```
27
+
28
+ ![Versions sur npm](/npm_version.png)
29
+ <small>*Capture écran de la page affichant [l'historique complet des versions sur npm](https://www.npmjs.com/package/fcad-core-dragon?activeTab=versions)</small>
30
+
31
+ ## Procédure à suivre
32
+
33
+ - La première étape du déploiement consiste à lister les derniers changements dans CHANGELOG.md suivi d'un commit/push.
34
+
35
+ - Il faut ensuite utiliser la commande <b>npm version</b> pour incrémenter le numéro de version de notre paquet npm.
36
+
37
+ <small>Admettons que nous sommes présentement sur la version <b>2.0.0</b></small>
38
+
39
+
40
+ ```shell
41
+ # pour une version pre-release
42
+ npm version 2.0.0-beta.1
43
+ # pour une version stable
44
+ npm version 2.0.1
45
+ ```
46
+ ::: warning AVERTISSEMENT
47
+ Un nouveau commit sera créé suite à l'exécution de la commande npm version. Il faut donc faire un push pour s'assurer que le changement aboutisse sur le serveur git.
48
+ :::
49
+
50
+
51
+ - Il faut finalement utiliser la commande <b>npm publish</b> pour déployer la nouvelle version sur le registre npm.
52
+
53
+ ```shell
54
+ # pour une version pre-release
55
+ npm publish --tag next
56
+ # pour une version stable
57
+ npm publish
58
+ ```
@@ -0,0 +1,33 @@
1
+ ---
2
+ # https://vitepress.dev/reference/default-theme-home-page
3
+ layout: home
4
+
5
+ hero:
6
+ name: 'FCAD 2'
7
+ text: 'Documentation technique'
8
+ tagline: Pour les développeurs
9
+ actions:
10
+ - theme: brand
11
+ text: Guide de démarrage
12
+ link: /demarrage
13
+ - theme: alt
14
+ text: Code source sur Gitlab
15
+ link: https://git.crosemont.qc.ca/fcad/core/fcad-core-2
16
+ - theme: alt
17
+ text: fcad-core-dragon sur npm
18
+ link: https://www.npmjs.com/package/fcad-core-dragon
19
+
20
+ features:
21
+ - icon:
22
+ src: /vuejs.svg
23
+ title: Vue.js 3
24
+ details: Le FCAD 2 utilise la dernière version du framework JavaScript Vue.js
25
+ - icon:
26
+ src: /vite.svg
27
+ title: Vite
28
+ details: Vite est utilisé pour le développement local ainsi que la compilation finale
29
+ - icon:
30
+ src: /vuetify.svg
31
+ title: Vuetify
32
+ details: La librairie Vuetify est utilisée pour créer notre interface utilisateur
33
+ ---
@@ -0,0 +1,85 @@
1
+ # Markdown Extension Examples
2
+
3
+ This page demonstrates some of the built-in markdown extensions provided by VitePress.
4
+
5
+ ## Syntax Highlighting
6
+
7
+ VitePress provides Syntax Highlighting powered by [Shiki](https://github.com/shikijs/shiki), with additional features like line-highlighting:
8
+
9
+ **Input**
10
+
11
+ ````md
12
+ ```js{4}
13
+ export default {
14
+ data () {
15
+ return {
16
+ msg: 'Highlighted!'
17
+ }
18
+ }
19
+ }
20
+ ```
21
+ ````
22
+
23
+ **Output**
24
+
25
+ ```js{4}
26
+ export default {
27
+ data () {
28
+ return {
29
+ msg: 'Highlighted!'
30
+ }
31
+ }
32
+ }
33
+ ```
34
+
35
+ ## Custom Containers
36
+
37
+ **Input**
38
+
39
+ ```md
40
+ ::: info
41
+ This is an info box.
42
+ :::
43
+
44
+ ::: tip
45
+ This is a tip.
46
+ :::
47
+
48
+ ::: warning
49
+ This is a warning.
50
+ :::
51
+
52
+ ::: danger
53
+ This is a dangerous warning.
54
+ :::
55
+
56
+ ::: details
57
+ This is a details block.
58
+ :::
59
+ ```
60
+
61
+ **Output**
62
+
63
+ ::: info
64
+ This is an info box.
65
+ :::
66
+
67
+ ::: tip
68
+ This is a tip.
69
+ :::
70
+
71
+ ::: warning
72
+ This is a warning.
73
+ :::
74
+
75
+ ::: danger
76
+ This is a dangerous warning.
77
+ :::
78
+
79
+ ::: details
80
+ This is a details block.
81
+ :::
82
+
83
+ ## More
84
+
85
+ Check out the documentation for the [full list of markdown extensions](https://vitepress.dev/guide/markdown).
@@ -0,0 +1,15 @@
1
+ <svg width="410" height="404" viewBox="0 0 410 404" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M399.641 59.5246L215.643 388.545C211.844 395.338 202.084 395.378 198.228 388.618L10.5817 59.5563C6.38087 52.1896 12.6802 43.2665 21.0281 44.7586L205.223 77.6824C206.398 77.8924 207.601 77.8904 208.776 77.6763L389.119 44.8058C397.439 43.2894 403.768 52.1434 399.641 59.5246Z" fill="url(#paint0_linear)"/>
3
+ <path d="M292.965 1.5744L156.801 28.2552C154.563 28.6937 152.906 30.5903 152.771 32.8664L144.395 174.33C144.198 177.662 147.258 180.248 150.51 179.498L188.42 170.749C191.967 169.931 195.172 173.055 194.443 176.622L183.18 231.775C182.422 235.487 185.907 238.661 189.532 237.56L212.947 230.446C216.577 229.344 220.065 232.527 219.297 236.242L201.398 322.875C200.278 328.294 207.486 331.249 210.492 326.603L212.5 323.5L323.454 102.072C325.312 98.3645 322.108 94.137 318.036 94.9228L279.014 102.454C275.347 103.161 272.227 99.746 273.262 96.1583L298.731 7.86689C299.767 4.27314 296.636 0.855181 292.965 1.5744Z" fill="url(#paint1_linear)"/>
4
+ <defs>
5
+ <linearGradient id="paint0_linear" x1="6.00017" y1="32.9999" x2="235" y2="344" gradientUnits="userSpaceOnUse">
6
+ <stop stop-color="#41D1FF"/>
7
+ <stop offset="1" stop-color="#BD34FE"/>
8
+ </linearGradient>
9
+ <linearGradient id="paint1_linear" x1="194.651" y1="8.81818" x2="236.076" y2="292.989" gradientUnits="userSpaceOnUse">
10
+ <stop stop-color="#FFEA83"/>
11
+ <stop offset="0.0833333" stop-color="#FFDD35"/>
12
+ <stop offset="1" stop-color="#FFA800"/>
13
+ </linearGradient>
14
+ </defs>
15
+ </svg>
@@ -0,0 +1,2 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg version="1.1" viewBox="0 0 261.76 226.69" xmlns="http://www.w3.org/2000/svg"><g transform="matrix(1.3333 0 0 -1.3333 -76.311 313.34)"><g transform="translate(178.06 235.01)"><path d="m0 0-22.669-39.264-22.669 39.264h-75.491l98.16-170.02 98.16 170.02z" fill="#41b883"/></g><g transform="translate(178.06 235.01)"><path d="m0 0-22.669-39.264-22.669 39.264h-36.227l58.896-102.01 58.896 102.01z" fill="#34495e"/></g></g></svg>
@@ -0,0 +1,6 @@
1
+ <svg width="400" height="400" viewBox="0 0 400 400" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M203.087 130.155L144.963 230.852L200 326.236L272.896 199.975L345.758 73.7152H235.651L203.087 130.155Z" fill="#1697F6"/>
3
+ <path d="M127.137 199.975L130.955 206.615L185.328 112.393L207.668 73.7152H200H54.2415L127.137 199.975Z" fill="#AEDDFF"/>
4
+ <path d="M235.651 73.7152C263.203 164.385 200 326.236 200 326.236L144.963 230.852L235.651 73.7152Z" fill="#1867C0"/>
5
+ <path d="M207.668 73.7152C91.586 73.7152 130.955 206.615 130.955 206.615L207.668 73.7152Z" fill="#7BC6FF"/>
6
+ </svg>
@@ -0,0 +1,60 @@
1
+ import js from '@eslint/js'
2
+ import globals from 'globals'
3
+ import pluginVue from 'eslint-plugin-vue'
4
+ import { defineConfig, globalIgnores } from 'eslint/config'
5
+ import skipFormatting from '@vue/eslint-config-prettier/skip-formatting'
6
+
7
+ export default defineConfig([
8
+ {
9
+ files: ['**/*.{js,mjs,cjs,vue}']
10
+ },
11
+ globalIgnores([
12
+ '**/.DS_Store',
13
+ '**/node_modules',
14
+ '**/dist/**',
15
+ '**/coverage/**',
16
+ '**/yalc.lock',
17
+ '**/package-lock.json',
18
+ '**/.zip',
19
+ '**/.env.local',
20
+ '**/.env.*.local',
21
+ '**/npm-debug.log*',
22
+ '**/.idea',
23
+ '**/.vscode',
24
+ '**/*.suo',
25
+ '**/*.ntvs*',
26
+ '**/*.njsproj',
27
+ '**/*.sln',
28
+ '**/*.sw?',
29
+ '**/\\_*',
30
+ '**/.gitignore'
31
+ ]),
32
+ {
33
+ languageOptions: {
34
+ globals: {
35
+ ...globals.node,
36
+ ...globals.browser
37
+ }
38
+ }
39
+ },
40
+ js.configs.recommended,
41
+ ...pluginVue.configs['flat/recommended'],
42
+ {
43
+ rules: {
44
+ 'no-unused-vars': [
45
+ 'warn',
46
+ { vars: 'local', args: 'none', ignoreRestSiblings: true }
47
+ ],
48
+ 'vue/no-unused-vars': 'warn',
49
+ 'no-prototype-builtins': 'off',
50
+ 'vue/html-self-closing': 'off',
51
+ 'vue/no-v-html': 'off',
52
+ 'vue/no-v-text-v-html-on-component': 'off',
53
+ 'vue/no-deprecated-delete-set': 'warn',
54
+ 'vue/max-attributes-per-line': 'off',
55
+ 'vue/singleline-html-element-content-newline': 'off',
56
+ 'vue/component-name-in-template-casing': ['error', 'kebab-case']
57
+ }
58
+ },
59
+ skipFormatting
60
+ ])