fcad-core-dragon 2.1.1 → 2.1.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 (160) hide show
  1. package/.editorconfig +7 -7
  2. package/.gitlab-ci.yml +124 -0
  3. package/.prettierrc +11 -11
  4. package/.vscode/extensions.json +8 -8
  5. package/.vscode/settings.json +46 -16
  6. package/CHANGELOG +520 -520
  7. package/README.md +57 -57
  8. package/documentation/.vitepress/config.js +114 -114
  9. package/documentation/api-examples.md +49 -49
  10. package/documentation/composants/app-base-button.md +58 -58
  11. package/documentation/composants/app-base-error-display.md +59 -59
  12. package/documentation/composants/app-base-popover.md +68 -68
  13. package/documentation/composants/app-comp-audio.md +75 -75
  14. package/documentation/composants/app-comp-branch-buttons.md +111 -111
  15. package/documentation/composants/app-comp-button-progress.md +53 -53
  16. package/documentation/composants/app-comp-carousel.md +53 -53
  17. package/documentation/composants/app-comp-container.md +53 -53
  18. package/documentation/composants/app-comp-input-checkbox-next.md +42 -42
  19. package/documentation/composants/app-comp-input-dropdown-next.md +34 -34
  20. package/documentation/composants/app-comp-input-radio-next.md +39 -39
  21. package/documentation/composants/app-comp-input-text-next.md +35 -35
  22. package/documentation/composants/app-comp-input-text-table-next.md +34 -34
  23. package/documentation/composants/app-comp-input-text-to-fill-dropdown-next.md +53 -53
  24. package/documentation/composants/app-comp-input-text-to-fill-next.md +31 -31
  25. package/documentation/composants/app-comp-jauge.md +31 -31
  26. package/documentation/composants/app-comp-menu-item.md +55 -55
  27. package/documentation/composants/app-comp-menu.md +29 -29
  28. package/documentation/composants/app-comp-navigation.md +41 -41
  29. package/documentation/composants/app-comp-note-call.md +53 -53
  30. package/documentation/composants/app-comp-note-credit.md +53 -53
  31. package/documentation/composants/app-comp-play-bar-next.md +53 -53
  32. package/documentation/composants/app-comp-pop-up-next.md +93 -93
  33. package/documentation/composants/app-comp-quiz-next.md +235 -235
  34. package/documentation/composants/app-comp-quiz-recall.md +53 -53
  35. package/documentation/composants/app-comp-svg-next.md +53 -53
  36. package/documentation/composants/app-comp-table-of-content.md +50 -50
  37. package/documentation/composants/app-comp-video-player.md +82 -82
  38. package/documentation/composants.md +46 -46
  39. package/documentation/composants_critiques/ModelPageComposant.md +53 -53
  40. package/documentation/composants_critiques/app-base-module.md +43 -43
  41. package/documentation/composants_critiques/app-base-page.md +48 -48
  42. package/documentation/composants_critiques/app-base.md +311 -311
  43. package/documentation/composants_critiques/main.md +15 -15
  44. package/documentation/demarrage.md +50 -50
  45. package/documentation/deploiement.md +57 -57
  46. package/documentation/index.md +33 -33
  47. package/documentation/markdown-examples.md +85 -85
  48. package/documentation/public/vite.svg +14 -14
  49. package/documentation/public/vuejs.svg +1 -1
  50. package/documentation/public/vuetify.svg +5 -5
  51. package/eslint.config.js +60 -60
  52. package/junit-report.xml +182 -0
  53. package/package.json +66 -59
  54. package/playwright/index.html +12 -0
  55. package/playwright/index.js +21 -0
  56. package/playwright-ct.config.js +95 -0
  57. package/src/$locales/en.json +157 -157
  58. package/src/$locales/fr.json +120 -120
  59. package/src/assets/data/onboardingMessages.json +47 -47
  60. package/src/components/AppBase.vue +1171 -1169
  61. package/src/components/AppBaseButton.vue +90 -95
  62. package/src/components/AppBaseErrorDisplay.vue +438 -438
  63. package/src/components/AppBaseFlipCard.vue +84 -84
  64. package/src/components/AppBaseModule.vue +1639 -1634
  65. package/src/components/AppBasePage.vue +867 -866
  66. package/src/components/AppBasePopover.vue +41 -41
  67. package/src/components/AppBaseSkeleton.vue +66 -66
  68. package/src/components/AppCompAudio.vue +261 -256
  69. package/src/components/AppCompBranchButtons.vue +508 -508
  70. package/src/components/AppCompButtonProgress.vue +137 -132
  71. package/src/components/AppCompCarousel.vue +342 -336
  72. package/src/components/AppCompContainer.vue +29 -29
  73. package/src/components/AppCompInputCheckBoxNx.vue +325 -323
  74. package/src/components/AppCompInputDropdownNx.vue +302 -299
  75. package/src/components/AppCompInputRadioNx.vue +287 -284
  76. package/src/components/AppCompInputTextNx.vue +156 -153
  77. package/src/components/AppCompInputTextTableNx.vue +205 -202
  78. package/src/components/AppCompInputTextToFillDropdownNx.vue +343 -340
  79. package/src/components/AppCompInputTextToFillNx.vue +316 -313
  80. package/src/components/AppCompJauge.vue +81 -81
  81. package/src/components/AppCompMenu.vue +6 -1
  82. package/src/components/AppCompMenuItem.vue +246 -240
  83. package/src/components/AppCompNavigation.vue +977 -972
  84. package/src/components/AppCompNoteCall.vue +167 -161
  85. package/src/components/AppCompNoteCredit.vue +496 -491
  86. package/src/components/AppCompPlayBarNext.vue +2290 -2288
  87. package/src/components/AppCompPopUpNext.vue +508 -504
  88. package/src/components/AppCompQuizNext.vue +515 -510
  89. package/src/components/AppCompQuizRecall.vue +355 -350
  90. package/src/components/AppCompSVGNext.vue +346 -346
  91. package/src/components/AppCompSettingsMenu.vue +177 -172
  92. package/src/components/AppCompTableOfContent.vue +433 -427
  93. package/src/components/AppCompVideoPlayer.vue +377 -377
  94. package/src/components/AppCompViewDisplay.vue +6 -6
  95. package/src/components/BaseModule.vue +55 -55
  96. package/src/composables/useIdleDetector.js +56 -56
  97. package/src/composables/useQuiz.js +89 -89
  98. package/src/composables/useTimer.js +172 -172
  99. package/src/directives/nvdaFix.js +53 -53
  100. package/src/externalComps/ModuleView.vue +22 -22
  101. package/src/externalComps/SummaryView.vue +91 -91
  102. package/src/main.js +493 -476
  103. package/src/module/stores/appStore.js +960 -947
  104. package/src/module/xapi/ADL.js +520 -520
  105. package/src/module/xapi/Crypto/Hasher.js +241 -241
  106. package/src/module/xapi/Crypto/WordArray.js +278 -278
  107. package/src/module/xapi/Crypto/algorithms/BufferedBlockAlgorithm.js +103 -103
  108. package/src/module/xapi/Crypto/algorithms/C_algo.js +315 -315
  109. package/src/module/xapi/Crypto/algorithms/HMAC.js +9 -9
  110. package/src/module/xapi/Crypto/algorithms/SHA1.js +9 -9
  111. package/src/module/xapi/Crypto/encoders/Base.js +105 -105
  112. package/src/module/xapi/Crypto/encoders/Base64.js +99 -99
  113. package/src/module/xapi/Crypto/encoders/Hex.js +61 -61
  114. package/src/module/xapi/Crypto/encoders/Latin1.js +61 -61
  115. package/src/module/xapi/Crypto/encoders/Utf8.js +45 -45
  116. package/src/module/xapi/Crypto/index.js +53 -53
  117. package/src/module/xapi/Statement/activity.js +47 -47
  118. package/src/module/xapi/Statement/agent.js +55 -55
  119. package/src/module/xapi/Statement/group.js +26 -26
  120. package/src/module/xapi/Statement/index.js +259 -259
  121. package/src/module/xapi/Statement/statement.js +253 -253
  122. package/src/module/xapi/Statement/statementRef.js +23 -23
  123. package/src/module/xapi/Statement/substatement.js +22 -22
  124. package/src/module/xapi/Statement/verb.js +36 -36
  125. package/src/module/xapi/activitytypes.js +17 -17
  126. package/src/module/xapi/launch.js +157 -157
  127. package/src/module/xapi/utils.js +167 -167
  128. package/src/module/xapi/verbs.js +294 -294
  129. package/src/module/xapi/wrapper.js +1895 -1895
  130. package/src/module/xapi/xapiStatement.js +444 -444
  131. package/src/plugins/analytics.js +34 -34
  132. package/src/plugins/bus.js +12 -8
  133. package/src/plugins/gsap.js +17 -17
  134. package/src/plugins/helper.js +355 -358
  135. package/src/plugins/i18n.js +27 -26
  136. package/src/plugins/idb.js +227 -227
  137. package/src/plugins/save.js +37 -37
  138. package/src/plugins/scorm.js +287 -287
  139. package/src/plugins/xapi.js +11 -11
  140. package/src/public/index.html +33 -33
  141. package/src/router/index.js +57 -57
  142. package/src/router/routes.js +312 -312
  143. package/src/shared/generalfuncs.js +344 -344
  144. package/src/shared/validators.js +1018 -1018
  145. package/tests/component/AppBaseButton.spec.js +53 -0
  146. package/tests/component/pinia.spec.js +24 -0
  147. package/{src/components/tests__ → tests/unit}/AppBaseButton.spec.js +53 -53
  148. package/tests/unit/AppCompInputCheckBoxNx.spec.js +59 -0
  149. package/tests/unit/AppCompInputDropdownNx.spec.js +51 -0
  150. package/tests/unit/AppCompInputRadioNx.spec.js +59 -0
  151. package/tests/unit/AppCompInputTextNx.spec.js +44 -0
  152. package/tests/unit/AppCompInputTextTableNx.spec.js +77 -0
  153. package/tests/unit/AppCompInputTextToFillDropdownNx.spec.js +60 -0
  154. package/tests/unit/AppCompInputTextToFillNx.spec.js +45 -0
  155. package/tests/unit/AppCompQuizNext.spec.js +114 -0
  156. package/tests/unit/AppCompVideoPlayer.spec.js +177 -0
  157. package/{src/components/tests__ → tests/unit}/useTimer.spec.js +91 -91
  158. package/vitest.config.js +28 -19
  159. package/vitest.setup.js +28 -0
  160. package/src/components/AppBaseButton.test.js +0 -21
@@ -1,259 +1,259 @@
1
- import { Agent } from './agent'
2
- import { Group } from './group'
3
- import { StatementRef } from './statementRef'
4
- import { SubStatement } from './substatement'
5
- import { Activity } from './activity'
6
- import { Verb } from './verb'
7
- //import { xapiStatement } from '../xapiStatement'
8
-
9
- /*******************************************************************************
10
- * XAPIStatement - a convenience class to wrap statement objects
11
- *
12
- * This sub-API is supposed to make it easier to author valid xAPI statements
13
- * by adding constructors and encouraging best practices. All objects in this
14
- * API are fully JSON-compatible, so anything expecting an xAPI statement can
15
- * take an improved statement and vice versa.
16
- *
17
- * A working knowledge of what exactly the LRS expects is still expected,
18
- * but it's easier to map an 'I did this' statement to xAPI now.
19
- *
20
- * Tech note: All constructors also double as shallow clone functions. E.g.
21
- *
22
- * var activity1 = new Activity('A walk in the park');
23
- * var activity2 = new Activity(activity1);
24
- * var activity3 = new Activity(stmt_from_lrs.object);
25
- *
26
- *******************************************************************************/
27
-
28
- /*
29
- * A convenient JSON-compatible xAPI statement wrapper
30
- * All args are optional, but the statement may not be complete or valid
31
- * Can also pass an Agent IFI, Verb ID, and an Activity ID in lieu of these args
32
- * @param {string} [actor] The Agent or Group committing the action described by the statement
33
- * @param {string} [verb] The Verb for the action described by the statement
34
- * @param {string} [object] The receiver of the action. An Agent, Group, Activity, SubStatement, or StatementRef
35
- * @example
36
- * var stmt = new ADL.XAPIStatement(
37
- * 'mailto:steve.vergenz.ctr@adlnet.gov',
38
- * 'http://adlnet.gov/expapi/verbs/launched',
39
- * 'http://vwf.adlnet.gov/xapi/virtual_world_sandbox'
40
- * );
41
- * >> {
42
- * "actor": {
43
- * "objectType": "Agent",
44
- * "mbox": "mailto:steve.vergenz.ctr@adlnet.gov" },
45
- * "verb": {
46
- * "id": "http://adlnet.gov/expapi/verbs/launched" },
47
- * "object": {
48
- * "objectType": "Activity",
49
- * "id": "http://vwf.adlnet.gov/xapi/virtual_world_sandbox" },
50
- * "result": {
51
- * "An optional property that represents a measured outcome related to the Statement in which it is included."}}
52
- */
53
-
54
- const Statement = function (actor, verb, object, result) {
55
- this.Agent = Agent
56
- this.Activity = Activity
57
- this.Group = Group
58
- this.StatementRef = StatementRef
59
- this.SubStatement = SubStatement
60
- this.Verb = Verb
61
-
62
- // if first arg is an xapi statement, parse
63
- if (actor && actor.actor && actor.verb && actor.object) {
64
- var stmt = actor
65
- for (var i in stmt) {
66
- if (i != 'actor' && i != 'verb' && i != 'object') this[i] = stmt[i]
67
- }
68
- actor = stmt.actor
69
- verb = stmt.verb
70
- object = stmt.object
71
- }
72
-
73
- if (actor) {
74
- if (actor instanceof Agent) this.actor = actor
75
- else if (actor.objectType === 'Agent' || !actor.objectType)
76
- this.actor = new Agent(actor)
77
- else if (actor.objectType === 'Group') this.actor = new Group(actor)
78
- } else this.actor = null
79
-
80
- if (verb) {
81
- if (verb instanceof Verb) this.verb = verb
82
- else this.verb = new Verb(verb)
83
- } else this.verb = null
84
-
85
- // decide what kind of object was passed
86
- if (object) {
87
- if (object.objectType === 'Activity' || !object.objectType) {
88
- if (object instanceof Activity) this.object = object
89
- else this.object = new Activity(object)
90
- } else if (object.objectType === 'Agent') {
91
- if (object instanceof Agent) this.object = object
92
- else this.object = new Agent(object)
93
- } else if (object.objectType === 'Group') {
94
- if (object instanceof Group) this.object = object
95
- else this.object = new Group(object)
96
- } else if (object.objectType === 'StatementRef') {
97
- if (object instanceof StatementRef) this.object = object
98
- else this.object = new StatementRef(object)
99
- } else if (object.objectType === 'SubStatement') {
100
- if (object instanceof SubStatement) this.object = object
101
- else this.object = new SubStatement(object)
102
- } else this.object = null
103
- } else this.object = null
104
-
105
- // add support for result object
106
- if (result) {
107
- this.result = result
108
- }
109
-
110
- //======================== FUNCTIONS===========================//
111
- function _getobj(obj, path) {
112
- var parts = path.split('.')
113
-
114
- var part = parts[0]
115
- path = parts.slice(1).join('.')
116
-
117
- if (!obj[part]) {
118
- if (/\[\]$/.test(part)) {
119
- part = part.slice(0, -2)
120
- if (!Array.isArray(obj[part])) {
121
- obj[part] = []
122
- }
123
- } else obj[part] = {}
124
- }
125
-
126
- if (!path) return obj[part]
127
- else return _getobj(obj[part], path)
128
- }
129
-
130
- function toString() {
131
- return (
132
- this.actor.toString() +
133
- ' ' +
134
- this.verb.toString() +
135
- ' ' +
136
- this.object.toString() +
137
- ' ' +
138
- this.result.toString()
139
- )
140
- }
141
-
142
- function isValid() {
143
- return (
144
- this.actor &&
145
- this.actor.isValid() &&
146
- this.verb &&
147
- this.verb.isValid() &&
148
- this.object &&
149
- this.object.isValid() &&
150
- this.result &&
151
- this.result.isValid()
152
- )
153
- }
154
- function generateRegistration() {
155
- this._getobj(this, 'context').registration = window.ADL.ruuid()
156
- }
157
-
158
- function addParentActivity(activity) {
159
- this._getobj(this, 'context.contextActivities.parent[]').push(
160
- new Activity(activity)
161
- )
162
- }
163
-
164
- function addGroupingActivity(activity) {
165
- this._getobj(this, 'context.contextActivities.grouping[]').push(
166
- new Activity(activity)
167
- )
168
- }
169
-
170
- function addOtherContextActivity(activity) {
171
- this._getobj(this, 'context.contextActivities.other[]').push(
172
- new Activity(activity)
173
- )
174
- }
175
-
176
- function generateId() {
177
- this.id = window.ADL.ruuid()
178
- }
179
-
180
- function setActor(email, name, objectType) {
181
- var actor = {
182
- mbox: 'mailto:' + email,
183
- name: name,
184
- objectType: ''
185
- }
186
- actor.objectType = objectType || 'Agent'
187
-
188
- this.actor = actor
189
- }
190
-
191
- function setVerb(verb) {
192
- //this.verb = this.verb[verb]
193
- //return this;
194
- }
195
-
196
- function setObject(objectId, objectName, objectDescription, objectType) {
197
- var object = {
198
- id: objectId,
199
- definition: {
200
- name: {
201
- 'en-US': objectName,
202
- 'fr-FR': objectName
203
- },
204
- description: {
205
- 'en-US': objectDescription,
206
- 'fr-FR': objectDescription
207
- }
208
- },
209
- objectType: ''
210
- }
211
- object.objectType = objectType || 'Activity'
212
-
213
- this.object = object
214
- }
215
-
216
- function setResultScore(score, scoreScale, scoreMin, scoreMax) {
217
- if (!this.result) this.result = {}
218
- this.result.score = {
219
- scaled: scoreScale || 1,
220
- min: scoreMin,
221
- max: scoreMax,
222
- raw: score
223
- }
224
- }
225
-
226
- function setResultKey(key, value) {
227
- if (!this.result) this.result = {} //define the result key
228
- //define the extra keys of the result
229
- if (key == 'success') this.result.success = value
230
- else if (key == 'response') this.result.response = value
231
- else if (key == 'duration') this.result.duration = value
232
- else if (key == 'extensions') this.result.extensions = value
233
- else if (key == 'completion') this.result.completion = value
234
- }
235
-
236
- function setContextKey(key, value) {
237
- if (!this.context) this.context = {}
238
- if (key == 'instructor') this.context.instructor = value
239
- else if (key == 'contextActivities') this.context.contextActivities = value
240
- }
241
-
242
- // customize(key, lang) {
243
- // let lang = lang
244
- // if (key == 'description') {
245
- // //this.
246
- // }
247
- // }
248
-
249
- function getStatement() {
250
- return this
251
- }
252
-
253
- //setContext(key, value) {
254
- // if (key == "context ") return;
255
- // else if (key == " contextActivities") return;
256
- //};
257
- }
258
-
259
- export { Statement as xapiStatement }
1
+ import { Agent } from './agent'
2
+ import { Group } from './group'
3
+ import { StatementRef } from './statementRef'
4
+ import { SubStatement } from './substatement'
5
+ import { Activity } from './activity'
6
+ import { Verb } from './verb'
7
+ //import { xapiStatement } from '../xapiStatement'
8
+
9
+ /*******************************************************************************
10
+ * XAPIStatement - a convenience class to wrap statement objects
11
+ *
12
+ * This sub-API is supposed to make it easier to author valid xAPI statements
13
+ * by adding constructors and encouraging best practices. All objects in this
14
+ * API are fully JSON-compatible, so anything expecting an xAPI statement can
15
+ * take an improved statement and vice versa.
16
+ *
17
+ * A working knowledge of what exactly the LRS expects is still expected,
18
+ * but it's easier to map an 'I did this' statement to xAPI now.
19
+ *
20
+ * Tech note: All constructors also double as shallow clone functions. E.g.
21
+ *
22
+ * var activity1 = new Activity('A walk in the park');
23
+ * var activity2 = new Activity(activity1);
24
+ * var activity3 = new Activity(stmt_from_lrs.object);
25
+ *
26
+ *******************************************************************************/
27
+
28
+ /*
29
+ * A convenient JSON-compatible xAPI statement wrapper
30
+ * All args are optional, but the statement may not be complete or valid
31
+ * Can also pass an Agent IFI, Verb ID, and an Activity ID in lieu of these args
32
+ * @param {string} [actor] The Agent or Group committing the action described by the statement
33
+ * @param {string} [verb] The Verb for the action described by the statement
34
+ * @param {string} [object] The receiver of the action. An Agent, Group, Activity, SubStatement, or StatementRef
35
+ * @example
36
+ * var stmt = new ADL.XAPIStatement(
37
+ * 'mailto:steve.vergenz.ctr@adlnet.gov',
38
+ * 'http://adlnet.gov/expapi/verbs/launched',
39
+ * 'http://vwf.adlnet.gov/xapi/virtual_world_sandbox'
40
+ * );
41
+ * >> {
42
+ * "actor": {
43
+ * "objectType": "Agent",
44
+ * "mbox": "mailto:steve.vergenz.ctr@adlnet.gov" },
45
+ * "verb": {
46
+ * "id": "http://adlnet.gov/expapi/verbs/launched" },
47
+ * "object": {
48
+ * "objectType": "Activity",
49
+ * "id": "http://vwf.adlnet.gov/xapi/virtual_world_sandbox" },
50
+ * "result": {
51
+ * "An optional property that represents a measured outcome related to the Statement in which it is included."}}
52
+ */
53
+
54
+ const Statement = function (actor, verb, object, result) {
55
+ this.Agent = Agent
56
+ this.Activity = Activity
57
+ this.Group = Group
58
+ this.StatementRef = StatementRef
59
+ this.SubStatement = SubStatement
60
+ this.Verb = Verb
61
+
62
+ // if first arg is an xapi statement, parse
63
+ if (actor && actor.actor && actor.verb && actor.object) {
64
+ var stmt = actor
65
+ for (var i in stmt) {
66
+ if (i != 'actor' && i != 'verb' && i != 'object') this[i] = stmt[i]
67
+ }
68
+ actor = stmt.actor
69
+ verb = stmt.verb
70
+ object = stmt.object
71
+ }
72
+
73
+ if (actor) {
74
+ if (actor instanceof Agent) this.actor = actor
75
+ else if (actor.objectType === 'Agent' || !actor.objectType)
76
+ this.actor = new Agent(actor)
77
+ else if (actor.objectType === 'Group') this.actor = new Group(actor)
78
+ } else this.actor = null
79
+
80
+ if (verb) {
81
+ if (verb instanceof Verb) this.verb = verb
82
+ else this.verb = new Verb(verb)
83
+ } else this.verb = null
84
+
85
+ // decide what kind of object was passed
86
+ if (object) {
87
+ if (object.objectType === 'Activity' || !object.objectType) {
88
+ if (object instanceof Activity) this.object = object
89
+ else this.object = new Activity(object)
90
+ } else if (object.objectType === 'Agent') {
91
+ if (object instanceof Agent) this.object = object
92
+ else this.object = new Agent(object)
93
+ } else if (object.objectType === 'Group') {
94
+ if (object instanceof Group) this.object = object
95
+ else this.object = new Group(object)
96
+ } else if (object.objectType === 'StatementRef') {
97
+ if (object instanceof StatementRef) this.object = object
98
+ else this.object = new StatementRef(object)
99
+ } else if (object.objectType === 'SubStatement') {
100
+ if (object instanceof SubStatement) this.object = object
101
+ else this.object = new SubStatement(object)
102
+ } else this.object = null
103
+ } else this.object = null
104
+
105
+ // add support for result object
106
+ if (result) {
107
+ this.result = result
108
+ }
109
+
110
+ //======================== FUNCTIONS===========================//
111
+ function _getobj(obj, path) {
112
+ var parts = path.split('.')
113
+
114
+ var part = parts[0]
115
+ path = parts.slice(1).join('.')
116
+
117
+ if (!obj[part]) {
118
+ if (/\[\]$/.test(part)) {
119
+ part = part.slice(0, -2)
120
+ if (!Array.isArray(obj[part])) {
121
+ obj[part] = []
122
+ }
123
+ } else obj[part] = {}
124
+ }
125
+
126
+ if (!path) return obj[part]
127
+ else return _getobj(obj[part], path)
128
+ }
129
+
130
+ function toString() {
131
+ return (
132
+ this.actor.toString() +
133
+ ' ' +
134
+ this.verb.toString() +
135
+ ' ' +
136
+ this.object.toString() +
137
+ ' ' +
138
+ this.result.toString()
139
+ )
140
+ }
141
+
142
+ function isValid() {
143
+ return (
144
+ this.actor &&
145
+ this.actor.isValid() &&
146
+ this.verb &&
147
+ this.verb.isValid() &&
148
+ this.object &&
149
+ this.object.isValid() &&
150
+ this.result &&
151
+ this.result.isValid()
152
+ )
153
+ }
154
+ function generateRegistration() {
155
+ this._getobj(this, 'context').registration = window.ADL.ruuid()
156
+ }
157
+
158
+ function addParentActivity(activity) {
159
+ this._getobj(this, 'context.contextActivities.parent[]').push(
160
+ new Activity(activity)
161
+ )
162
+ }
163
+
164
+ function addGroupingActivity(activity) {
165
+ this._getobj(this, 'context.contextActivities.grouping[]').push(
166
+ new Activity(activity)
167
+ )
168
+ }
169
+
170
+ function addOtherContextActivity(activity) {
171
+ this._getobj(this, 'context.contextActivities.other[]').push(
172
+ new Activity(activity)
173
+ )
174
+ }
175
+
176
+ function generateId() {
177
+ this.id = window.ADL.ruuid()
178
+ }
179
+
180
+ function setActor(email, name, objectType) {
181
+ var actor = {
182
+ mbox: 'mailto:' + email,
183
+ name: name,
184
+ objectType: ''
185
+ }
186
+ actor.objectType = objectType || 'Agent'
187
+
188
+ this.actor = actor
189
+ }
190
+
191
+ function setVerb(verb) {
192
+ //this.verb = this.verb[verb]
193
+ //return this;
194
+ }
195
+
196
+ function setObject(objectId, objectName, objectDescription, objectType) {
197
+ var object = {
198
+ id: objectId,
199
+ definition: {
200
+ name: {
201
+ 'en-US': objectName,
202
+ 'fr-FR': objectName
203
+ },
204
+ description: {
205
+ 'en-US': objectDescription,
206
+ 'fr-FR': objectDescription
207
+ }
208
+ },
209
+ objectType: ''
210
+ }
211
+ object.objectType = objectType || 'Activity'
212
+
213
+ this.object = object
214
+ }
215
+
216
+ function setResultScore(score, scoreScale, scoreMin, scoreMax) {
217
+ if (!this.result) this.result = {}
218
+ this.result.score = {
219
+ scaled: scoreScale || 1,
220
+ min: scoreMin,
221
+ max: scoreMax,
222
+ raw: score
223
+ }
224
+ }
225
+
226
+ function setResultKey(key, value) {
227
+ if (!this.result) this.result = {} //define the result key
228
+ //define the extra keys of the result
229
+ if (key == 'success') this.result.success = value
230
+ else if (key == 'response') this.result.response = value
231
+ else if (key == 'duration') this.result.duration = value
232
+ else if (key == 'extensions') this.result.extensions = value
233
+ else if (key == 'completion') this.result.completion = value
234
+ }
235
+
236
+ function setContextKey(key, value) {
237
+ if (!this.context) this.context = {}
238
+ if (key == 'instructor') this.context.instructor = value
239
+ else if (key == 'contextActivities') this.context.contextActivities = value
240
+ }
241
+
242
+ // customize(key, lang) {
243
+ // let lang = lang
244
+ // if (key == 'description') {
245
+ // //this.
246
+ // }
247
+ // }
248
+
249
+ function getStatement() {
250
+ return this
251
+ }
252
+
253
+ //setContext(key, value) {
254
+ // if (key == "context ") return;
255
+ // else if (key == " contextActivities") return;
256
+ //};
257
+ }
258
+
259
+ export { Statement as xapiStatement }