fcad-core-dragon 2.0.2-beta.1 → 2.0.2-beta.2

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 (55) hide show
  1. package/.editorconfig +33 -33
  2. package/.eslintignore +29 -29
  3. package/.eslintrc.cjs +81 -81
  4. package/CHANGELOG +4 -3
  5. package/bk.scss +117 -117
  6. package/package.json +1 -1
  7. package/src/assets/data/onboardingMessages.json +47 -47
  8. package/src/components/AppBaseErrorDisplay.vue +438 -438
  9. package/src/components/AppBaseFlipCard.vue +84 -84
  10. package/src/components/AppBasePopover.vue +41 -41
  11. package/src/components/AppCompInputCheckBoxNx.vue +1 -1
  12. package/src/components/AppCompInputDropdownNx.vue +1 -1
  13. package/src/components/AppCompInputRadioNx.vue +1 -1
  14. package/src/components/AppCompInputTextNx.vue +1 -1
  15. package/src/components/AppCompInputTextTableNx.vue +1 -1
  16. package/src/components/AppCompInputTextToFillDropdownNx.vue +1 -1
  17. package/src/components/AppCompInputTextToFillNx.vue +1 -1
  18. package/src/components/AppCompPlayBarProgress.vue +82 -82
  19. package/src/components/AppCompSettingsMenu.vue +172 -172
  20. package/src/components/AppCompViewDisplay.vue +6 -6
  21. package/src/externalComps/ModuleView.vue +22 -22
  22. package/src/externalComps/SummaryView.vue +91 -91
  23. package/src/main.js +2 -2
  24. package/src/module/xapi/Crypto/Hasher.js +241 -241
  25. package/src/module/xapi/Crypto/WordArray.js +278 -278
  26. package/src/module/xapi/Crypto/algorithms/BufferedBlockAlgorithm.js +103 -103
  27. package/src/module/xapi/Crypto/algorithms/C_algo.js +315 -315
  28. package/src/module/xapi/Crypto/algorithms/HMAC.js +9 -9
  29. package/src/module/xapi/Crypto/algorithms/SHA1.js +9 -9
  30. package/src/module/xapi/Crypto/encoders/Base.js +105 -105
  31. package/src/module/xapi/Crypto/encoders/Base64.js +99 -99
  32. package/src/module/xapi/Crypto/encoders/Hex.js +61 -61
  33. package/src/module/xapi/Crypto/encoders/Latin1.js +61 -61
  34. package/src/module/xapi/Crypto/encoders/Utf8.js +45 -45
  35. package/src/module/xapi/Crypto/index.js +53 -53
  36. package/src/module/xapi/Statement/activity.js +47 -47
  37. package/src/module/xapi/Statement/agent.js +55 -55
  38. package/src/module/xapi/Statement/group.js +26 -26
  39. package/src/module/xapi/Statement/index.js +259 -259
  40. package/src/module/xapi/Statement/statement.js +253 -253
  41. package/src/module/xapi/Statement/statementRef.js +23 -23
  42. package/src/module/xapi/Statement/substatement.js +22 -22
  43. package/src/module/xapi/Statement/verb.js +36 -36
  44. package/src/module/xapi/activitytypes.js +17 -17
  45. package/src/module/xapi/utils.js +167 -167
  46. package/src/module/xapi/verbs.js +294 -294
  47. package/src/module/xapi/xapiStatement.js +444 -444
  48. package/src/plugins/bus.js +8 -8
  49. package/src/plugins/gsap.js +14 -14
  50. package/src/plugins/i18n.js +44 -44
  51. package/src/plugins/save.js +37 -37
  52. package/src/plugins/scorm.js +287 -287
  53. package/src/plugins/xapi.js +11 -11
  54. package/src/public/index.html +33 -33
  55. /package/src/components/{AppCompQuizNx.vue → AppCompQuiz.vue} +0 -0
package/.editorconfig CHANGED
@@ -1,33 +1,33 @@
1
- # http://editorconfig.org
2
- root = true
3
-
4
- [*]
5
- indent_style = space
6
- indent_size = 2
7
- end_of_line = lf
8
- charset = utf-8
9
- trim_trailing_whitespace = true
10
- insert_final_newline = true
11
-
12
-
13
- # The JSON files contain newlines inconsistently
14
- [*.json]
15
- insert_final_newline = ignore
16
-
17
- # Minified JavaScript files shouldn't be changed
18
- [**.min.js]
19
- indent_style = ignore
20
- insert_final_newline = ignore
21
-
22
- # Makefiles always use tabs for indentation
23
- [Makefile]
24
- indent_style = tab
25
-
26
- # Batch files use tabs for indentation
27
- [*.bat]
28
- indent_style = tab
29
-
30
- [*.md]
31
- trim_trailing_whitespace = false
32
- insert_final_newline = false
33
-
1
+ # http://editorconfig.org
2
+ root = true
3
+
4
+ [*]
5
+ indent_style = space
6
+ indent_size = 2
7
+ end_of_line = lf
8
+ charset = utf-8
9
+ trim_trailing_whitespace = true
10
+ insert_final_newline = true
11
+
12
+
13
+ # The JSON files contain newlines inconsistently
14
+ [*.json]
15
+ insert_final_newline = ignore
16
+
17
+ # Minified JavaScript files shouldn't be changed
18
+ [**.min.js]
19
+ indent_style = ignore
20
+ insert_final_newline = ignore
21
+
22
+ # Makefiles always use tabs for indentation
23
+ [Makefile]
24
+ indent_style = tab
25
+
26
+ # Batch files use tabs for indentation
27
+ [*.bat]
28
+ indent_style = tab
29
+
30
+ [*.md]
31
+ trim_trailing_whitespace = false
32
+ insert_final_newline = false
33
+
package/.eslintignore CHANGED
@@ -1,29 +1,29 @@
1
- .DS_Store
2
- node_modules
3
- /dist
4
- yalc.lock
5
- package-lock.json
6
- .zip
7
-
8
- # local env files
9
- .env.local
10
- .env.*.local
11
-
12
- # Log files
13
- npm-debug.log*
14
- yarn-debug.log*
15
- yarn-error.log*
16
- pnpm-debug.log*
17
-
18
- # Editor directories and files
19
- .idea
20
- .vscode
21
- *.suo
22
- *.ntvs*
23
- *.njsproj
24
- *.sln
25
- *.sw?
26
- \_*
27
- .eslintrc
28
- .gitignore
29
-
1
+ .DS_Store
2
+ node_modules
3
+ /dist
4
+ yalc.lock
5
+ package-lock.json
6
+ .zip
7
+
8
+ # local env files
9
+ .env.local
10
+ .env.*.local
11
+
12
+ # Log files
13
+ npm-debug.log*
14
+ yarn-debug.log*
15
+ yarn-error.log*
16
+ pnpm-debug.log*
17
+
18
+ # Editor directories and files
19
+ .idea
20
+ .vscode
21
+ *.suo
22
+ *.ntvs*
23
+ *.njsproj
24
+ *.sln
25
+ *.sw?
26
+ \_*
27
+ .eslintrc
28
+ .gitignore
29
+
package/.eslintrc.cjs CHANGED
@@ -1,81 +1,81 @@
1
- // Special confirugation for pettier for this project. Creating this file is optional in a project.
2
- module.exports = {
3
- root: true,
4
- env: {
5
- node: true,
6
- browser: true
7
- },
8
- plugins: ['prettier'],
9
- extends: ['eslint:recommended', 'plugin:vue/vue3-recommended', 'prettier'],
10
- rules: {
11
- // Only allow debugger in development
12
- 'no-debugger': process.env.PRE_COMMIT ? 'error' : 'off',
13
- // Only allow `console.log` in development
14
- 'no-console': process.env.PRE_COMMIT
15
- ? ['error', { allow: ['warn', 'error'] }]
16
- : 'off',
17
- //'comma-dangle': ['error', 'never'],
18
- 'no-alert': 'off',
19
- //'vue/array-bracket-spacing': 'error',
20
- //'vue/block-spacing': 'error',
21
- // 'vue/comma-dangle': ['error', 'never'],
22
- //'vue/object-curly-spacing': ['error', 'always'],
23
- 'vue/no-v-for-template-key': 'off',
24
- 'vue/valid-template-root': 'off',
25
- // 'vue/no-v-for-template-key-on-child':'off',
26
- 'vue/component-name-in-template-casing': [
27
- 'error',
28
- 'kebab-case',
29
- {
30
- ignores: []
31
- }
32
- ],
33
- 'vue/no-v-html': 'off',
34
- 'prettier/prettier': [
35
- 'error',
36
- {
37
- singleQuote: true,
38
- semi: false,
39
- tabWidth: 2,
40
- trailingComma: 'none',
41
- arrowParens: 'always',
42
- htmlWhitespaceSensitivity: 'ignore',
43
- endOfLine: 'auto'
44
- }
45
- ],
46
- 'no-param-reassign': [0, { allowPassedByValue: true }],
47
- 'no-shadow': 'off',
48
- 'prefer-const': [
49
- 'off',
50
- {
51
- destructuring: 'any',
52
- ignoreReadBeforeAssign: false
53
- }
54
- ],
55
- 'consistent-return': 'off',
56
- camelcase: 'off',
57
- 'no-underscore-dangle': 'off',
58
- 'no-restricted-syntax': 'off',
59
- 'no-lonely-if': 'off',
60
- 'default-case': 'off',
61
- 'no-plusplus': 'off',
62
- 'no-loop-func': 'off',
63
- 'no-prototype-builtins': 'off',
64
- 'func-names': 'off',
65
- 'no-unused-vars': ['error', { args: 'none', ignoreRestSiblings: true }]
66
- },
67
- parserOptions: {
68
- sourceType: 'module'
69
- },
70
- overrides: [
71
- {
72
- files: [
73
- '**/__tests__/*.{j,t}s?(x)',
74
- '**/tests/unit/**/*.spec.{j,t}s?(x)'
75
- ],
76
- env: {
77
- jest: true
78
- }
79
- }
80
- ]
81
- }
1
+ // Special confirugation for pettier for this project. Creating this file is optional in a project.
2
+ module.exports = {
3
+ root: true,
4
+ env: {
5
+ node: true,
6
+ browser: true
7
+ },
8
+ plugins: ['prettier'],
9
+ extends: ['eslint:recommended', 'plugin:vue/vue3-recommended', 'prettier'],
10
+ rules: {
11
+ // Only allow debugger in development
12
+ 'no-debugger': process.env.PRE_COMMIT ? 'error' : 'off',
13
+ // Only allow `console.log` in development
14
+ 'no-console': process.env.PRE_COMMIT
15
+ ? ['error', { allow: ['warn', 'error'] }]
16
+ : 'off',
17
+ //'comma-dangle': ['error', 'never'],
18
+ 'no-alert': 'off',
19
+ //'vue/array-bracket-spacing': 'error',
20
+ //'vue/block-spacing': 'error',
21
+ // 'vue/comma-dangle': ['error', 'never'],
22
+ //'vue/object-curly-spacing': ['error', 'always'],
23
+ 'vue/no-v-for-template-key': 'off',
24
+ 'vue/valid-template-root': 'off',
25
+ // 'vue/no-v-for-template-key-on-child':'off',
26
+ 'vue/component-name-in-template-casing': [
27
+ 'error',
28
+ 'kebab-case',
29
+ {
30
+ ignores: []
31
+ }
32
+ ],
33
+ 'vue/no-v-html': 'off',
34
+ 'prettier/prettier': [
35
+ 'error',
36
+ {
37
+ singleQuote: true,
38
+ semi: false,
39
+ tabWidth: 2,
40
+ trailingComma: 'none',
41
+ arrowParens: 'always',
42
+ htmlWhitespaceSensitivity: 'ignore',
43
+ endOfLine: 'auto'
44
+ }
45
+ ],
46
+ 'no-param-reassign': [0, { allowPassedByValue: true }],
47
+ 'no-shadow': 'off',
48
+ 'prefer-const': [
49
+ 'off',
50
+ {
51
+ destructuring: 'any',
52
+ ignoreReadBeforeAssign: false
53
+ }
54
+ ],
55
+ 'consistent-return': 'off',
56
+ camelcase: 'off',
57
+ 'no-underscore-dangle': 'off',
58
+ 'no-restricted-syntax': 'off',
59
+ 'no-lonely-if': 'off',
60
+ 'default-case': 'off',
61
+ 'no-plusplus': 'off',
62
+ 'no-loop-func': 'off',
63
+ 'no-prototype-builtins': 'off',
64
+ 'func-names': 'off',
65
+ 'no-unused-vars': ['error', { args: 'none', ignoreRestSiblings: true }]
66
+ },
67
+ parserOptions: {
68
+ sourceType: 'module'
69
+ },
70
+ overrides: [
71
+ {
72
+ files: [
73
+ '**/__tests__/*.{j,t}s?(x)',
74
+ '**/tests/unit/**/*.spec.{j,t}s?(x)'
75
+ ],
76
+ env: {
77
+ jest: true
78
+ }
79
+ }
80
+ ]
81
+ }
package/CHANGELOG CHANGED
@@ -1,7 +1,10 @@
1
+ 2.0.2-beta.2(25 août 2025)
2
+ Exercices : Renommer app-comp-quiz-nx en app-comp-quiz pour assurer la compatibilité avec les projets existants
3
+
1
4
  2.0.2-beta.1(19 août 2025)
2
5
  Exercices : Réécriture complète de la logique derrière les exercices
3
6
 
4
- Rappel de réponse : Mise à jour automatique du contenu quand la réponse change.
7
+ Rappel de réponse : Mise à jour automatique du contenu quand la réponse change
5
8
 
6
9
  Accessibilité : Balise fieldset qui annonce la marche \ suivre quand on arrive sur un exercice
7
10
 
@@ -16,8 +19,6 @@
16
19
 
17
20
  TOC : Alignement vertical du libellé "terminé"
18
21
 
19
- Nouveau fichier (vuetify.scss) pour overrider les variables SASS vuetify, La liste complète des variables SASS globales pouvant être modifiées se trouve ici : https://vuetifyjs.com/en/api/globals/#sass
20
-
21
22
  2.0.1-beta.1(12 mai 2025)
22
23
  Vitepress : La documentation du FCAD 2 est maintenant dans le dossier "documentation"
23
24
 
package/bk.scss CHANGED
@@ -1,117 +1,117 @@
1
-
2
-
3
- .navbar {
4
- position: absolute;
5
- top: 0;
6
- left: 0;
7
- z-index: 10;
8
- display: flex;
9
- flex-direction: column;
10
- flex-wrap: wrap;
11
- align-content: start;
12
- width: 67px;
13
- height: 100%;
14
- }
15
-
16
- .module-wrapper {
17
- width: 100%;
18
- position: relative;
19
-
20
- #wrapper-content {
21
- width: 100%;
22
- position: relative;
23
- padding-right: 0 !important;
24
- padding-left: 0 !important;
25
-
26
- &.active {
27
- overflow: hidden;
28
- }
29
-
30
- .box {
31
- width: 100%;
32
- height: 95%;
33
-
34
- .app-page {
35
- width: 100%;
36
- margin-top: 60px;
37
-
38
- .row {
39
- width: 100%;
40
- margin-right: 0;
41
- margin-left: 0;
42
- }
43
- }
44
- }
45
- }
46
-
47
- .app-comp-table-of-content {
48
- display: -webkit-flex;
49
- display: flex;
50
- flex-direction: column;
51
- flex-wrap: wrap;
52
- position: absolute;
53
- top: 0px;
54
- min-height: 100%;
55
- z-index: 1;
56
- }
57
- }
58
-
59
- .app-nav {
60
- .md-controller {
61
- display: -webkit-flex;
62
- display: flex;
63
- flex-direction: row;
64
- align-items: baseline;
65
- //width: $widthPlayer;
66
- width: 50%;
67
-
68
- .ctrl-play {
69
- display: -webkit-flex;
70
- display: flex;
71
- flex-direction: row;
72
- align-items: baseline;
73
- //width: $widthPlayer;
74
- width: 50%;
75
-
76
- #progress-bar {
77
- display: block;
78
- //width: $widthProgressBar;
79
- width: 150px;
80
- //height: $heigthProgressBar;
81
- height: 10px;
82
- position: relative;
83
- overflow: hidden;
84
-
85
- #progress {
86
- display: block;
87
- height: 100%;
88
- background-color: red;
89
- }
90
-
91
- #progress-shaddow {
92
- display: block;
93
- height: 100%;
94
- position: absolute;
95
- top: 0px;
96
- left: 0px;
97
- z-index: -1;
98
- }
99
- }
100
- }
101
-
102
- .ctrl-subtitle {
103
- //width: $widthCtrSubtitle;
104
- width: 10%;
105
- }
106
-
107
- .ctrl-sound {
108
- display: -webkit-flex;
109
- display: flex;
110
- flex-direction: row;
111
- align-items: baseline;
112
- justify-content: space-between;
113
- //width: $widthCtrlSound;
114
- width: 40%;
115
- }
116
- }
117
- }
1
+
2
+
3
+ .navbar {
4
+ position: absolute;
5
+ top: 0;
6
+ left: 0;
7
+ z-index: 10;
8
+ display: flex;
9
+ flex-direction: column;
10
+ flex-wrap: wrap;
11
+ align-content: start;
12
+ width: 67px;
13
+ height: 100%;
14
+ }
15
+
16
+ .module-wrapper {
17
+ width: 100%;
18
+ position: relative;
19
+
20
+ #wrapper-content {
21
+ width: 100%;
22
+ position: relative;
23
+ padding-right: 0 !important;
24
+ padding-left: 0 !important;
25
+
26
+ &.active {
27
+ overflow: hidden;
28
+ }
29
+
30
+ .box {
31
+ width: 100%;
32
+ height: 95%;
33
+
34
+ .app-page {
35
+ width: 100%;
36
+ margin-top: 60px;
37
+
38
+ .row {
39
+ width: 100%;
40
+ margin-right: 0;
41
+ margin-left: 0;
42
+ }
43
+ }
44
+ }
45
+ }
46
+
47
+ .app-comp-table-of-content {
48
+ display: -webkit-flex;
49
+ display: flex;
50
+ flex-direction: column;
51
+ flex-wrap: wrap;
52
+ position: absolute;
53
+ top: 0px;
54
+ min-height: 100%;
55
+ z-index: 1;
56
+ }
57
+ }
58
+
59
+ .app-nav {
60
+ .md-controller {
61
+ display: -webkit-flex;
62
+ display: flex;
63
+ flex-direction: row;
64
+ align-items: baseline;
65
+ //width: $widthPlayer;
66
+ width: 50%;
67
+
68
+ .ctrl-play {
69
+ display: -webkit-flex;
70
+ display: flex;
71
+ flex-direction: row;
72
+ align-items: baseline;
73
+ //width: $widthPlayer;
74
+ width: 50%;
75
+
76
+ #progress-bar {
77
+ display: block;
78
+ //width: $widthProgressBar;
79
+ width: 150px;
80
+ //height: $heigthProgressBar;
81
+ height: 10px;
82
+ position: relative;
83
+ overflow: hidden;
84
+
85
+ #progress {
86
+ display: block;
87
+ height: 100%;
88
+ background-color: red;
89
+ }
90
+
91
+ #progress-shaddow {
92
+ display: block;
93
+ height: 100%;
94
+ position: absolute;
95
+ top: 0px;
96
+ left: 0px;
97
+ z-index: -1;
98
+ }
99
+ }
100
+ }
101
+
102
+ .ctrl-subtitle {
103
+ //width: $widthCtrSubtitle;
104
+ width: 10%;
105
+ }
106
+
107
+ .ctrl-sound {
108
+ display: -webkit-flex;
109
+ display: flex;
110
+ flex-direction: row;
111
+ align-items: baseline;
112
+ justify-content: space-between;
113
+ //width: $widthCtrlSound;
114
+ width: 40%;
115
+ }
116
+ }
117
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fcad-core-dragon",
3
- "version": "2.0.2-beta.1",
3
+ "version": "2.0.2-beta.2",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "./src/main.js",
@@ -1,47 +1,47 @@
1
- {
2
- "message_1": {
3
- "type": "popup-avert",
4
- "value": {
5
- "title": "Bienvenue dans la visite guidée du FCAD !",
6
- "hypertext_1": "<p>Le bouton Confirmer vous fera passer à la prochaine étape de la visite.</p><p>Vous pouvez y mettre fin en tout temps avec le bouton Annuler.</p>"
7
- }
8
- },
9
- "message_2": {
10
- "type": "tooltip",
11
- "value": {
12
- "target": "activity_progress",
13
- "title": "Navigation secondaire",
14
- "content": "<p>Les flèches permettent de passer à la page précédente ou suivante de l'activité.</p><p>Les rectangles représentent une section de l'activité.</p>"
15
- }
16
- },
17
- "message_3": {
18
- "type": "tooltip",
19
- "value": {
20
- "target": "btn_back_summary",
21
- "title": "Navigation secondaire",
22
- "content": "<p>Ce bouton permet de retourner au sommaire de l'activité en tout temps.</p>"
23
- }
24
- },
25
- "message_4": {
26
- "type": "tooltip",
27
- "value": {
28
- "target": "primary_activity",
29
- "title": "Navigation principale",
30
- "content": "<p>La navigation principale permet de valider ses réponses de quiz et de passer à la page suivante.</p>"
31
- }
32
- },
33
- "message_5": {
34
- "type": "popup-avert",
35
- "value": {
36
- "title": "Visite guidée",
37
- "hypertext_1": "<p>Message pour la barre de lecture.</p>"
38
- }
39
- },
40
- "message_6": {
41
- "type": "popup-avert",
42
- "value": {
43
- "title": "Visite guidée",
44
- "hypertext_1": "<p>Message pour les Paramètres.</p>"
45
- }
46
- }
47
- }
1
+ {
2
+ "message_1": {
3
+ "type": "popup-avert",
4
+ "value": {
5
+ "title": "Bienvenue dans la visite guidée du FCAD !",
6
+ "hypertext_1": "<p>Le bouton Confirmer vous fera passer à la prochaine étape de la visite.</p><p>Vous pouvez y mettre fin en tout temps avec le bouton Annuler.</p>"
7
+ }
8
+ },
9
+ "message_2": {
10
+ "type": "tooltip",
11
+ "value": {
12
+ "target": "activity_progress",
13
+ "title": "Navigation secondaire",
14
+ "content": "<p>Les flèches permettent de passer à la page précédente ou suivante de l'activité.</p><p>Les rectangles représentent une section de l'activité.</p>"
15
+ }
16
+ },
17
+ "message_3": {
18
+ "type": "tooltip",
19
+ "value": {
20
+ "target": "btn_back_summary",
21
+ "title": "Navigation secondaire",
22
+ "content": "<p>Ce bouton permet de retourner au sommaire de l'activité en tout temps.</p>"
23
+ }
24
+ },
25
+ "message_4": {
26
+ "type": "tooltip",
27
+ "value": {
28
+ "target": "primary_activity",
29
+ "title": "Navigation principale",
30
+ "content": "<p>La navigation principale permet de valider ses réponses de quiz et de passer à la page suivante.</p>"
31
+ }
32
+ },
33
+ "message_5": {
34
+ "type": "popup-avert",
35
+ "value": {
36
+ "title": "Visite guidée",
37
+ "hypertext_1": "<p>Message pour la barre de lecture.</p>"
38
+ }
39
+ },
40
+ "message_6": {
41
+ "type": "popup-avert",
42
+ "value": {
43
+ "title": "Visite guidée",
44
+ "hypertext_1": "<p>Message pour les Paramètres.</p>"
45
+ }
46
+ }
47
+ }