fcad-core-dragon 2.0.2-beta.2 → 2.0.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 (46) hide show
  1. package/.editorconfig +33 -33
  2. package/.eslintignore +29 -29
  3. package/.eslintrc.cjs +81 -81
  4. package/CHANGELOG +5 -0
  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/AppCompPlayBarProgress.vue +82 -82
  12. package/src/components/AppCompSettingsMenu.vue +172 -172
  13. package/src/components/AppCompViewDisplay.vue +6 -6
  14. package/src/externalComps/ModuleView.vue +22 -22
  15. package/src/externalComps/SummaryView.vue +91 -91
  16. package/src/module/xapi/Crypto/Hasher.js +241 -241
  17. package/src/module/xapi/Crypto/WordArray.js +278 -278
  18. package/src/module/xapi/Crypto/algorithms/BufferedBlockAlgorithm.js +103 -103
  19. package/src/module/xapi/Crypto/algorithms/C_algo.js +315 -315
  20. package/src/module/xapi/Crypto/algorithms/HMAC.js +9 -9
  21. package/src/module/xapi/Crypto/algorithms/SHA1.js +9 -9
  22. package/src/module/xapi/Crypto/encoders/Base.js +105 -105
  23. package/src/module/xapi/Crypto/encoders/Base64.js +99 -99
  24. package/src/module/xapi/Crypto/encoders/Hex.js +61 -61
  25. package/src/module/xapi/Crypto/encoders/Latin1.js +61 -61
  26. package/src/module/xapi/Crypto/encoders/Utf8.js +45 -45
  27. package/src/module/xapi/Crypto/index.js +53 -53
  28. package/src/module/xapi/Statement/activity.js +47 -47
  29. package/src/module/xapi/Statement/agent.js +55 -55
  30. package/src/module/xapi/Statement/group.js +26 -26
  31. package/src/module/xapi/Statement/index.js +259 -259
  32. package/src/module/xapi/Statement/statement.js +253 -253
  33. package/src/module/xapi/Statement/statementRef.js +23 -23
  34. package/src/module/xapi/Statement/substatement.js +22 -22
  35. package/src/module/xapi/Statement/verb.js +36 -36
  36. package/src/module/xapi/activitytypes.js +17 -17
  37. package/src/module/xapi/utils.js +167 -167
  38. package/src/module/xapi/verbs.js +294 -294
  39. package/src/module/xapi/xapiStatement.js +444 -444
  40. package/src/plugins/bus.js +8 -8
  41. package/src/plugins/gsap.js +14 -14
  42. package/src/plugins/i18n.js +44 -44
  43. package/src/plugins/save.js +37 -37
  44. package/src/plugins/scorm.js +287 -287
  45. package/src/plugins/xapi.js +11 -11
  46. package/src/public/index.html +33 -33
@@ -1,172 +1,172 @@
1
- <template>
2
- <b-sidebar
3
- id="sidebar-settings"
4
- title="Settings"
5
- right
6
- shadow
7
- backdrop
8
- no-header
9
- @hidden="onClose"
10
- >
11
- <div class="pl-3 pr-3">
12
- <b-form-group :label="$t('user_settings.title')">
13
- <b-form-checkbox
14
- v-for="(setting, index) in Object.entries(settingsSelected)"
15
- :key="index"
16
- v-model="settingsSelected[setting[0]]"
17
- :aria-describedby="ariaDescribedby"
18
- :name="`parameter-${setting[0]}`"
19
- :text-field="$t(`user_settings.${setting[0]}`)"
20
- switch
21
- stacked
22
- size="lg"
23
- @change="onSettingsChange"
24
- >
25
- <span>{{ $t(`user_settings.${setting[0]}`) }}</span>
26
- </b-form-checkbox>
27
- </b-form-group>
28
- <app-base-button
29
- v-b-toggle.sidebar-settings
30
- class="float-right btn-primary"
31
- :title="$t('user_settings.close')"
32
- >
33
- {{ $t('user_settings.close') }}
34
- </app-base-button>
35
- </div>
36
- </b-sidebar>
37
- </template>
38
-
39
- <script>
40
- import { mapState, mapActions } from 'pinia'
41
- import { useAppStore } from '../module/stores/appStore'
42
- import AppBaseButton from './AppBaseButton.vue'
43
-
44
- export default {
45
- components: { AppBaseButton },
46
- props: {},
47
- data() {
48
- return {
49
- settingsSelected: {},
50
- settingsNeedUpdate: false
51
- }
52
- },
53
- computed: {
54
- ...mapState(useAppStore, [
55
- 'getApplicationSettings',
56
- 'getModuleInfo',
57
- 'getUserInteraction',
58
- 'getConnectionInfo',
59
- 'onboardingEnabled'
60
- ]),
61
- settingsOptions() {
62
- return this.settingsOptionsELPlus
63
- }
64
- },
65
- watch: {
66
- getApplicationSettings: {
67
- immediate: true,
68
- deep: true,
69
- handler() {
70
- this.getAppSettingsInStore()
71
- }
72
- }
73
- },
74
- created() {
75
- setTimeout(() => this.getAppSettingsInStore(), 1700)
76
-
77
- this.$bus.$on('save-settings', (settings) => {
78
- this.saveSettings(settings)
79
- })
80
- },
81
- methods: {
82
- ...mapActions(useAppStore, [
83
- 'setApplicationSettings',
84
- 'updateUserMetaData'
85
- ]),
86
- getAppSettingsInStore() {
87
- this.settingsSelected = { ...this.getApplicationSettings }
88
- },
89
-
90
- //Save user settings to the store
91
- onSettingsChange() {
92
- this.settingsNeedUpdate = true
93
- this.saveSettingsToStore(this.settingsSelected)
94
- },
95
- saveSettingsToStore(settings) {
96
- this.setApplicationSettings(settings)
97
- },
98
- /**
99
- * @description Save the user preferred settings to vue store and LRS or local store:
100
- * LRS: Send a XAPI Statement to the LRS
101
- * IndexedDB: Set a new Key for preferred settings in the userInteraction in store
102
- * Update current value of settings
103
- * @param {Object} appSettings - group of application settings {autoplay, subtitles, onboarding}
104
- *
105
- */
106
- saveSettings(appSettings) {
107
- this.saveSettingsToStore(appSettings) //save to store
108
-
109
- if (
110
- this.getModuleInfo.packageType === 'xapi' &&
111
- this.getConnectionInfo &&
112
- this.getConnectionInfo.remote
113
- ) {
114
- let text
115
- //Defining the text to display for stmt description and definition
116
- switch (this.$i18n.locale) {
117
- case 'fr':
118
- if (this.getModuleInfo.courseID)
119
- text = `Le ${this.getModuleInfo.id} de ${this.getModuleInfo.courseID}`
120
- else text = `Le ${this.getModuleInfo.id}`
121
- break
122
- case 'en':
123
- if (this.getModuleInfo.courseID)
124
- text = `The ${this.getModuleInfo.id} of ${this.getModuleInfo.courseID}`
125
- else text = `The ${this.getModuleInfo.id}`
126
- break
127
- }
128
- //Creating custom statement
129
- const stmt = {
130
- id: (() => {
131
- return this.getModuleInfo.courseID
132
- ? this.getModuleInfo.courseID
133
- : null
134
- })(),
135
- verb: 'preferred',
136
- definition: text,
137
- description: text,
138
- extensions: [
139
- {
140
- id: 'application-settings',
141
- content: {
142
- userSettings: { ...appSettings }
143
- }
144
- }
145
- ]
146
- }
147
-
148
- setTimeout(() => {
149
- this.$bus.$emit('send-xapi-statement', stmt) //send xapi statement
150
- }, 1000)
151
- } else {
152
- this.$set(this.getUserInteraction, 'userSettings', appSettings) // adding the usersettings to user Interaction to save to save to the local DB
153
- this.updateUserMetaData(this.getUserInteraction) //force update of the userInteraction to ensure saving of settings in local DB
154
- }
155
-
156
- //update sidebar data
157
- this.getAppSettingsInStore()
158
- },
159
-
160
- /**
161
- * @description -Action to perform when the sidebar closed- will require saving when changing occurred
162
- */
163
- onClose() {
164
- if (this.settingsNeedUpdate) {
165
- this.saveSettingsToStore(this.settingsSelected)
166
- this.saveSettings(this.getApplicationSettings)
167
- this.settingsNeedUpdate = false
168
- }
169
- }
170
- }
171
- }
172
- </script>
1
+ <template>
2
+ <b-sidebar
3
+ id="sidebar-settings"
4
+ title="Settings"
5
+ right
6
+ shadow
7
+ backdrop
8
+ no-header
9
+ @hidden="onClose"
10
+ >
11
+ <div class="pl-3 pr-3">
12
+ <b-form-group :label="$t('user_settings.title')">
13
+ <b-form-checkbox
14
+ v-for="(setting, index) in Object.entries(settingsSelected)"
15
+ :key="index"
16
+ v-model="settingsSelected[setting[0]]"
17
+ :aria-describedby="ariaDescribedby"
18
+ :name="`parameter-${setting[0]}`"
19
+ :text-field="$t(`user_settings.${setting[0]}`)"
20
+ switch
21
+ stacked
22
+ size="lg"
23
+ @change="onSettingsChange"
24
+ >
25
+ <span>{{ $t(`user_settings.${setting[0]}`) }}</span>
26
+ </b-form-checkbox>
27
+ </b-form-group>
28
+ <app-base-button
29
+ v-b-toggle.sidebar-settings
30
+ class="float-right btn-primary"
31
+ :title="$t('user_settings.close')"
32
+ >
33
+ {{ $t('user_settings.close') }}
34
+ </app-base-button>
35
+ </div>
36
+ </b-sidebar>
37
+ </template>
38
+
39
+ <script>
40
+ import { mapState, mapActions } from 'pinia'
41
+ import { useAppStore } from '../module/stores/appStore'
42
+ import AppBaseButton from './AppBaseButton.vue'
43
+
44
+ export default {
45
+ components: { AppBaseButton },
46
+ props: {},
47
+ data() {
48
+ return {
49
+ settingsSelected: {},
50
+ settingsNeedUpdate: false
51
+ }
52
+ },
53
+ computed: {
54
+ ...mapState(useAppStore, [
55
+ 'getApplicationSettings',
56
+ 'getModuleInfo',
57
+ 'getUserInteraction',
58
+ 'getConnectionInfo',
59
+ 'onboardingEnabled'
60
+ ]),
61
+ settingsOptions() {
62
+ return this.settingsOptionsELPlus
63
+ }
64
+ },
65
+ watch: {
66
+ getApplicationSettings: {
67
+ immediate: true,
68
+ deep: true,
69
+ handler() {
70
+ this.getAppSettingsInStore()
71
+ }
72
+ }
73
+ },
74
+ created() {
75
+ setTimeout(() => this.getAppSettingsInStore(), 1700)
76
+
77
+ this.$bus.$on('save-settings', (settings) => {
78
+ this.saveSettings(settings)
79
+ })
80
+ },
81
+ methods: {
82
+ ...mapActions(useAppStore, [
83
+ 'setApplicationSettings',
84
+ 'updateUserMetaData'
85
+ ]),
86
+ getAppSettingsInStore() {
87
+ this.settingsSelected = { ...this.getApplicationSettings }
88
+ },
89
+
90
+ //Save user settings to the store
91
+ onSettingsChange() {
92
+ this.settingsNeedUpdate = true
93
+ this.saveSettingsToStore(this.settingsSelected)
94
+ },
95
+ saveSettingsToStore(settings) {
96
+ this.setApplicationSettings(settings)
97
+ },
98
+ /**
99
+ * @description Save the user preferred settings to vue store and LRS or local store:
100
+ * LRS: Send a XAPI Statement to the LRS
101
+ * IndexedDB: Set a new Key for preferred settings in the userInteraction in store
102
+ * Update current value of settings
103
+ * @param {Object} appSettings - group of application settings {autoplay, subtitles, onboarding}
104
+ *
105
+ */
106
+ saveSettings(appSettings) {
107
+ this.saveSettingsToStore(appSettings) //save to store
108
+
109
+ if (
110
+ this.getModuleInfo.packageType === 'xapi' &&
111
+ this.getConnectionInfo &&
112
+ this.getConnectionInfo.remote
113
+ ) {
114
+ let text
115
+ //Defining the text to display for stmt description and definition
116
+ switch (this.$i18n.locale) {
117
+ case 'fr':
118
+ if (this.getModuleInfo.courseID)
119
+ text = `Le ${this.getModuleInfo.id} de ${this.getModuleInfo.courseID}`
120
+ else text = `Le ${this.getModuleInfo.id}`
121
+ break
122
+ case 'en':
123
+ if (this.getModuleInfo.courseID)
124
+ text = `The ${this.getModuleInfo.id} of ${this.getModuleInfo.courseID}`
125
+ else text = `The ${this.getModuleInfo.id}`
126
+ break
127
+ }
128
+ //Creating custom statement
129
+ const stmt = {
130
+ id: (() => {
131
+ return this.getModuleInfo.courseID
132
+ ? this.getModuleInfo.courseID
133
+ : null
134
+ })(),
135
+ verb: 'preferred',
136
+ definition: text,
137
+ description: text,
138
+ extensions: [
139
+ {
140
+ id: 'application-settings',
141
+ content: {
142
+ userSettings: { ...appSettings }
143
+ }
144
+ }
145
+ ]
146
+ }
147
+
148
+ setTimeout(() => {
149
+ this.$bus.$emit('send-xapi-statement', stmt) //send xapi statement
150
+ }, 1000)
151
+ } else {
152
+ this.$set(this.getUserInteraction, 'userSettings', appSettings) // adding the usersettings to user Interaction to save to save to the local DB
153
+ this.updateUserMetaData(this.getUserInteraction) //force update of the userInteraction to ensure saving of settings in local DB
154
+ }
155
+
156
+ //update sidebar data
157
+ this.getAppSettingsInStore()
158
+ },
159
+
160
+ /**
161
+ * @description -Action to perform when the sidebar closed- will require saving when changing occurred
162
+ */
163
+ onClose() {
164
+ if (this.settingsNeedUpdate) {
165
+ this.saveSettingsToStore(this.settingsSelected)
166
+ this.saveSettings(this.getApplicationSettings)
167
+ this.settingsNeedUpdate = false
168
+ }
169
+ }
170
+ }
171
+ }
172
+ </script>
@@ -1,6 +1,6 @@
1
- <template>
2
- <router-view />
3
- </template>
4
- <script>
5
- export default {}
6
- </script>
1
+ <template>
2
+ <router-view />
3
+ </template>
4
+ <script>
5
+ export default {}
6
+ </script>
@@ -1,22 +1,22 @@
1
- <template>
2
- <app-base-module :module-config="$data" />
3
- </template>
4
-
5
- <script>
6
- export default {
7
- data() {
8
- return {
9
- id: 'module_99',
10
- consigneBehavior: 'onHover', //Controle the behavior of desplaying instruction
11
- bookmarkActive: true, // Controle the use of saved point
12
- allowNavigationToActivity: null
13
-
14
- //main:''// Edit to define the ID of the node that will be main. When skipping to main content in the page.
15
- }
16
- },
17
- created() {
18
- this.allowNavigationToActivity =
19
- this.$helper.getSettingsFromStore('auto_next_activity')
20
- }
21
- }
22
- </script>
1
+ <template>
2
+ <app-base-module :module-config="$data" />
3
+ </template>
4
+
5
+ <script>
6
+ export default {
7
+ data() {
8
+ return {
9
+ id: 'module_99',
10
+ consigneBehavior: 'onHover', //Controle the behavior of desplaying instruction
11
+ bookmarkActive: true, // Controle the use of saved point
12
+ allowNavigationToActivity: null
13
+
14
+ //main:''// Edit to define the ID of the node that will be main. When skipping to main content in the page.
15
+ }
16
+ },
17
+ created() {
18
+ this.allowNavigationToActivity =
19
+ this.$helper.getSettingsFromStore('auto_next_activity')
20
+ }
21
+ }
22
+ </script>
@@ -1,91 +1,91 @@
1
- <template>
2
- <div>
3
- <app-comp-menu></app-comp-menu>
4
- <!-- <h6>normal</h6>
5
- <div class="t normal"></div>
6
- <h6>red</h6>
7
- <div class="t red"></div>
8
- <h6>green</h6>
9
- <div class="t green"></div>
10
- <h6>hue</h6>
11
- <div class="t hue"></div>
12
- <h6>Saturation</h6>
13
- <div class="t saturation"></div>
14
- <h6>desaturation</h6>
15
- <div class="t desaturation"></div>
16
- <h6>lighteness</h6>
17
- <div class="t lighteness"></div>
18
- <h6>darkness</h6>
19
- <div class="t darkness"></div>
20
- <h6>whiteness</h6>
21
- <div class="t whiteness"></div>
22
- <h6>blackness</h6>
23
- <div class="t blackness"></div> -->
24
- </div>
25
- </template>
26
-
27
- <script>
28
- export default {
29
- data() {
30
- return {}
31
- }
32
- }
33
- </script>
34
- <!-- <style lang="scss">
35
- @use 'sass:color';
36
- $color: #f11532;
37
- $color-red: color.change($color, $red: 155);
38
- $color-green: color.change($color, $green: 255);
39
- $color-hue: adjust-hue($color, -30deg);
40
- $color-saturation: color.scale($color, $saturation: 100%);
41
- $color-desaturate: color.scale($color, $saturation: -50%);
42
- $color-lighteness: color.scale($color, $lightness: 50%);
43
- $color-darkness: color.scale($color, $lightness: -50%);
44
- $color-whiteness: color.scale($color, $whiteness: 50%);
45
- $color-blackness: color.scale($color, $blackness: 50%);
46
-
47
- .t {
48
- width: 50px;
49
- height: 50px;
50
-
51
- &.normal {
52
- background: $color;
53
- }
54
-
55
- &.red {
56
- background: $color-red;
57
- }
58
-
59
- &.green {
60
- background: $color-green;
61
- }
62
-
63
- &.hue {
64
- background: $color-hue;
65
- }
66
-
67
- &.saturation {
68
- background: $color-saturation;
69
- }
70
-
71
- &.desaturation {
72
- background: $color-desaturate;
73
- }
74
-
75
- &.lighteness {
76
- background: $color-lighteness;
77
- }
78
-
79
- &.darkness {
80
- background: $color-darkness;
81
- }
82
-
83
- &.whiteness {
84
- background: $color-whiteness;
85
- }
86
-
87
- &.blackness {
88
- background: $color-blackness;
89
- }
90
- }
91
- </style> -->
1
+ <template>
2
+ <div>
3
+ <app-comp-menu></app-comp-menu>
4
+ <!-- <h6>normal</h6>
5
+ <div class="t normal"></div>
6
+ <h6>red</h6>
7
+ <div class="t red"></div>
8
+ <h6>green</h6>
9
+ <div class="t green"></div>
10
+ <h6>hue</h6>
11
+ <div class="t hue"></div>
12
+ <h6>Saturation</h6>
13
+ <div class="t saturation"></div>
14
+ <h6>desaturation</h6>
15
+ <div class="t desaturation"></div>
16
+ <h6>lighteness</h6>
17
+ <div class="t lighteness"></div>
18
+ <h6>darkness</h6>
19
+ <div class="t darkness"></div>
20
+ <h6>whiteness</h6>
21
+ <div class="t whiteness"></div>
22
+ <h6>blackness</h6>
23
+ <div class="t blackness"></div> -->
24
+ </div>
25
+ </template>
26
+
27
+ <script>
28
+ export default {
29
+ data() {
30
+ return {}
31
+ }
32
+ }
33
+ </script>
34
+ <!-- <style lang="scss">
35
+ @use 'sass:color';
36
+ $color: #f11532;
37
+ $color-red: color.change($color, $red: 155);
38
+ $color-green: color.change($color, $green: 255);
39
+ $color-hue: adjust-hue($color, -30deg);
40
+ $color-saturation: color.scale($color, $saturation: 100%);
41
+ $color-desaturate: color.scale($color, $saturation: -50%);
42
+ $color-lighteness: color.scale($color, $lightness: 50%);
43
+ $color-darkness: color.scale($color, $lightness: -50%);
44
+ $color-whiteness: color.scale($color, $whiteness: 50%);
45
+ $color-blackness: color.scale($color, $blackness: 50%);
46
+
47
+ .t {
48
+ width: 50px;
49
+ height: 50px;
50
+
51
+ &.normal {
52
+ background: $color;
53
+ }
54
+
55
+ &.red {
56
+ background: $color-red;
57
+ }
58
+
59
+ &.green {
60
+ background: $color-green;
61
+ }
62
+
63
+ &.hue {
64
+ background: $color-hue;
65
+ }
66
+
67
+ &.saturation {
68
+ background: $color-saturation;
69
+ }
70
+
71
+ &.desaturation {
72
+ background: $color-desaturate;
73
+ }
74
+
75
+ &.lighteness {
76
+ background: $color-lighteness;
77
+ }
78
+
79
+ &.darkness {
80
+ background: $color-darkness;
81
+ }
82
+
83
+ &.whiteness {
84
+ background: $color-whiteness;
85
+ }
86
+
87
+ &.blackness {
88
+ background: $color-blackness;
89
+ }
90
+ }
91
+ </style> -->