fcad-core-dragon 2.2.0 → 2.3.0-test.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.
- package/.gitlab-ci.yml +14 -28
- package/.releaserc +39 -0
- package/CHANGELOG.md +21 -0
- package/documentation/.vitepress/config.js +109 -32
- package/package.json +49 -36
- package/src/components/AppBase.vue +39 -73
- package/src/components/AppBaseModule.vue +48 -28
- package/src/components/AppBasePage.vue +0 -3
- package/src/components/AppCompInputTextToFillNx.vue +2 -1
- package/src/components/AppCompMenu.vue +12 -2
- package/src/components/AppCompNoteCredit.vue +0 -4
- package/src/components/AppCompPlayBarNext.vue +0 -2
- package/src/components/AppCompQuizNext.vue +13 -0
- package/src/main.js +34 -49
- package/src/module/stores/appStore.js +3 -3
- package/src/module/xapi/ADL.js +74 -76
- package/src/router/index.js +0 -1
- package/src/shared/generalfuncs.js +2 -3
- package/vitest.setup.js +0 -5
- package/artifacts/playwright-report/index.html +0 -85
package/.gitlab-ci.yml
CHANGED
|
@@ -18,11 +18,11 @@ cache:
|
|
|
18
18
|
# Global variables to ensure clean clones and token-based authentication
|
|
19
19
|
variables:
|
|
20
20
|
GIT_STRATEGY: clone
|
|
21
|
-
GIT_CHECKOUT:
|
|
21
|
+
GIT_CHECKOUT: 'true'
|
|
22
22
|
GIT_SUBMODULE_STRATEGY: recursive
|
|
23
23
|
GIT_DEPTH: 1 # Faster, shallow clone
|
|
24
|
-
GIT_SSL_NO_VERIFY:
|
|
25
|
-
NPM_TOKEN:
|
|
24
|
+
GIT_SSL_NO_VERIFY: 'true' # Optional: if your GitLab server uses self-signed SSL
|
|
25
|
+
NPM_TOKEN: '$NPM_ACCESS_KEY' # hold value of Auth key for npm access
|
|
26
26
|
|
|
27
27
|
# Install stage
|
|
28
28
|
install_dependencies:
|
|
@@ -41,8 +41,7 @@ lint_code:
|
|
|
41
41
|
#unit-test stage
|
|
42
42
|
run_tests_unit:
|
|
43
43
|
stage: test
|
|
44
|
-
|
|
45
|
-
- install_dependencies
|
|
44
|
+
needs: ['install_dependencies', 'lint_code']
|
|
46
45
|
script:
|
|
47
46
|
- echo "🏃 Running tests..."
|
|
48
47
|
- npm run test:unit:coverage -- --reporter=junit --outputFile=junit-report.xml
|
|
@@ -62,23 +61,19 @@ run_tests_unit:
|
|
|
62
61
|
#Components-test stage with playwright
|
|
63
62
|
run_components_test:
|
|
64
63
|
stage: test
|
|
65
|
-
|
|
66
|
-
dependencies:
|
|
67
|
-
- install_dependencies
|
|
64
|
+
needs: ['install_dependencies', 'lint_code']
|
|
68
65
|
script:
|
|
69
66
|
- echo "🏃 Running Components tests..."
|
|
67
|
+
- npm ci
|
|
70
68
|
- npx playwright install
|
|
71
69
|
- npm run test-ct
|
|
72
|
-
- mkdir -p artifacts
|
|
73
|
-
- cp -r playwright-report artifacts/playwright-report || true
|
|
74
|
-
- if [ -f results.xml ]; then cp results.xml artifacts/results.xml; fi
|
|
75
70
|
artifacts:
|
|
76
71
|
when: always
|
|
77
72
|
reports:
|
|
78
|
-
junit:
|
|
73
|
+
junit: results.xml
|
|
79
74
|
paths:
|
|
80
|
-
-
|
|
81
|
-
-
|
|
75
|
+
- playwright-report/
|
|
76
|
+
- results.xml
|
|
82
77
|
allow_failure: true
|
|
83
78
|
|
|
84
79
|
#Deploy to npm
|
|
@@ -86,21 +81,12 @@ publish_to_npm:
|
|
|
86
81
|
stage: deploy
|
|
87
82
|
#image: node:22
|
|
88
83
|
script:
|
|
89
|
-
# Get version from package.json
|
|
90
|
-
- VERSION=$(node -p "require('./package.json').version")
|
|
91
|
-
- echo "Detected version => $VERSION"
|
|
92
|
-
# Set the right tag (next or latest) according to version
|
|
93
|
-
- if [[ "$VERSION" == *beta* ]]; then TAG="next"; else TAG="latest"; fi
|
|
94
|
-
- echo "Using dist-tag => $TAG"
|
|
95
84
|
- echo " //registry.npmjs.org/:_authToken=${NPM_TOKEN}" > ~/.npmrc
|
|
96
|
-
-
|
|
97
|
-
-
|
|
98
|
-
- npm whoami || true
|
|
85
|
+
- npm ci
|
|
86
|
+
- npx semantic-release # Check semantic-release version
|
|
99
87
|
- echo "🚀 Publishing package version from tag $CI_COMMIT_TAG"
|
|
100
|
-
- npm publish --access public --tag "$TAG" # scoped of publication (public)
|
|
101
|
-
when: on_success
|
|
102
88
|
rules:
|
|
103
89
|
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH # Deploy only from the default branch (e.g., main)
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
90
|
+
- if: $CI_COMMIT_BRANCH == "beta" # Deploy from branch (e.g., beta)
|
|
91
|
+
- if: $CI_COMMIT_BRANCH == "alpha" # Deploy from branch (e.g., alpha)
|
|
92
|
+
- if: $CI_COMMIT_BRANCH == "test" # Deploy from branch (e.g., test)
|
package/.releaserc
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"branches": [
|
|
3
|
+
"master",
|
|
4
|
+
{
|
|
5
|
+
"name": "beta",
|
|
6
|
+
"prerelease": true
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
"name": "alpha",
|
|
10
|
+
"prerelease": true
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"name": "test",
|
|
14
|
+
"prerelease": "test"
|
|
15
|
+
}
|
|
16
|
+
],
|
|
17
|
+
"plugins": [
|
|
18
|
+
"@semantic-release/commit-analyzer",
|
|
19
|
+
"@semantic-release/release-notes-generator",
|
|
20
|
+
[
|
|
21
|
+
"@semantic-release/changelog",
|
|
22
|
+
{
|
|
23
|
+
"changelogFile": "CHANGELOG.md"
|
|
24
|
+
}
|
|
25
|
+
],
|
|
26
|
+
"@semantic-release/npm",
|
|
27
|
+
[
|
|
28
|
+
"@semantic-release/git",
|
|
29
|
+
{
|
|
30
|
+
"assets": [
|
|
31
|
+
"package.json",
|
|
32
|
+
"CHANGELOG.md"
|
|
33
|
+
],
|
|
34
|
+
"message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"
|
|
35
|
+
}
|
|
36
|
+
],
|
|
37
|
+
"@semantic-release/gitlab"
|
|
38
|
+
]
|
|
39
|
+
}
|
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# [2.3.0-test.2](https://git.crosemont.qc.ca/fcad/core/fcad-core-2/compare/v2.3.0-test.1...v2.3.0-test.2) (2026-04-10)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* **server connection:** remote parameter prevent production build to connect to LRS when deployed on Moodle ([994e702](https://git.crosemont.qc.ca/fcad/core/fcad-core-2/commit/994e702ce0ed69633798adec8830d33b87680e92))
|
|
7
|
+
|
|
8
|
+
# [2.3.0-test.1](https://git.crosemont.qc.ca/fcad/core/fcad-core-2/compare/v2.2.0...v2.3.0-test.1) (2026-03-27)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* **ci-config:** fixed the rule for npm deployment on branches beta, apha and test ([38923e7](https://git.crosemont.qc.ca/fcad/core/fcad-core-2/commit/38923e7ad775795f2ea27f0d304915a740185892))
|
|
14
|
+
* **ci-config:** fixed the rule for npm deployment on branches beta, apha and test ([808d3de](https://git.crosemont.qc.ca/fcad/core/fcad-core-2/commit/808d3de37bf1d03d420e05fa13412ce17ca72ad1))
|
|
15
|
+
* **dependencies:** fixed depentencies conflicts causing npm ci to fail ([469918e](https://git.crosemont.qc.ca/fcad/core/fcad-core-2/commit/469918e24d0b2948adf7d2f0135d80aeba2b35a8))
|
|
16
|
+
* remaning release config file to .releaserc ([2a746d0](https://git.crosemont.qc.ca/fcad/core/fcad-core-2/commit/2a746d0b294577128937a22fae8f556984e97fda))
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
### Features
|
|
20
|
+
|
|
21
|
+
* **core:** expose app-store and app-router via provide for to external plugins and libraries ([42e776f](https://git.crosemont.qc.ca/fcad/core/fcad-core-2/commit/42e776f9af103490d58d067389d28223c61d7ee8))
|
|
@@ -15,8 +15,8 @@ export default defineConfig({
|
|
|
15
15
|
prev: 'Page précédente',
|
|
16
16
|
next: 'Page suivante'
|
|
17
17
|
},
|
|
18
|
-
darkModeSwitchTitle
|
|
19
|
-
lightModeSwitchTitle
|
|
18
|
+
darkModeSwitchTitle: 'Activer le thème sombre',
|
|
19
|
+
lightModeSwitchTitle: 'Activer le thème clair',
|
|
20
20
|
lastUpdated: {
|
|
21
21
|
text: 'Dernière modification ',
|
|
22
22
|
formatOptions: {
|
|
@@ -26,7 +26,7 @@ export default defineConfig({
|
|
|
26
26
|
},
|
|
27
27
|
search: {
|
|
28
28
|
provider: 'local',
|
|
29
|
-
options:{
|
|
29
|
+
options: {
|
|
30
30
|
locales: {
|
|
31
31
|
root: {
|
|
32
32
|
translations: {
|
|
@@ -42,7 +42,7 @@ export default defineConfig({
|
|
|
42
42
|
footer: {
|
|
43
43
|
selectText: 'accéder à la page',
|
|
44
44
|
navigateText: 'parcourir les résultats',
|
|
45
|
-
closeText: 'quitter la recherche'
|
|
45
|
+
closeText: 'quitter la recherche'
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
48
|
}
|
|
@@ -56,17 +56,24 @@ export default defineConfig({
|
|
|
56
56
|
{ text: 'Accueil', link: '/' },
|
|
57
57
|
{ text: 'Démarrage', link: '/demarrage' },
|
|
58
58
|
{ text: 'Composants', link: '/composants' },
|
|
59
|
-
{ text: 'Déploiement', link: '/deploiement' }
|
|
59
|
+
{ text: 'Déploiement', link: '/deploiement' }
|
|
60
60
|
// { text: 'Examples', link: '/markdown-examples' }
|
|
61
61
|
],
|
|
62
62
|
sidebar: [
|
|
63
|
-
{
|
|
63
|
+
{
|
|
64
|
+
text: 'Composants critiques',
|
|
64
65
|
collapsed: true,
|
|
65
66
|
items: [
|
|
66
67
|
{ text: 'app-base', link: '/composants_critiques/app-base' },
|
|
67
|
-
{
|
|
68
|
-
|
|
69
|
-
|
|
68
|
+
{
|
|
69
|
+
text: 'app-base-module',
|
|
70
|
+
link: '/composants_critiques/app-base-module'
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
text: 'app-base-page',
|
|
74
|
+
link: '/composants_critiques/app-base-page'
|
|
75
|
+
},
|
|
76
|
+
{ text: 'main', link: '/composants_critiques/main' }
|
|
70
77
|
]
|
|
71
78
|
},
|
|
72
79
|
{
|
|
@@ -74,41 +81,111 @@ export default defineConfig({
|
|
|
74
81
|
collapsed: true,
|
|
75
82
|
items: [
|
|
76
83
|
{ text: 'app-base-button', link: '/composants/app-base-button' },
|
|
77
|
-
{
|
|
84
|
+
{
|
|
85
|
+
text: 'app-base-error-display',
|
|
86
|
+
link: '/composants/app-base-error-display'
|
|
87
|
+
},
|
|
78
88
|
{ text: 'app-base-popover', link: '/composants/app-base-popover' },
|
|
79
89
|
{ text: 'app-comp-audio', link: '/composants/app-comp-audio' },
|
|
80
|
-
{
|
|
81
|
-
|
|
90
|
+
{
|
|
91
|
+
text: 'app-comp-branch-buttons',
|
|
92
|
+
link: '/composants/app-comp-branch-buttons'
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
text: 'app-comp-button-progress',
|
|
96
|
+
link: '/composants/app-comp-button-progress'
|
|
97
|
+
},
|
|
82
98
|
{ text: 'app-comp-carousel', link: '/composants/app-comp-carousel' },
|
|
83
|
-
{
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
{
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
99
|
+
{
|
|
100
|
+
text: 'app-comp-container',
|
|
101
|
+
link: '/composants/app-comp-container'
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
text: 'app-comp-input-checkbox-next',
|
|
105
|
+
link: '/composants/app-comp-input-checkbox-next'
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
text: 'app-comp-input-dropdown-next',
|
|
109
|
+
link: '/composants/app-comp-input-dropdown-next'
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
text: 'app-comp-input-radio-next',
|
|
113
|
+
link: '/composants/app-comp-input-radio-next'
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
text: 'app-comp-input-text-next',
|
|
117
|
+
link: '/composants/app-comp-input-text-next'
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
text: 'app-comp-input-text-table-next',
|
|
121
|
+
link: '/composants/app-comp-input-text-table-next'
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
text: 'app-comp-input-text-to-fill-dropdown-next',
|
|
125
|
+
link: '/composants/app-comp-input-text-to-fill-dropdown-next'
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
text: 'app-comp-input-text-to-fill-next',
|
|
129
|
+
link: '/composants/app-comp-input-text-to-fill-next'
|
|
130
|
+
},
|
|
91
131
|
{ text: 'app-comp-jauge', link: '/composants/app-comp-jauge' },
|
|
132
|
+
{ text: 'app-comp-math', link: '/composants/app-comp-math' },
|
|
92
133
|
{ text: 'app-comp-menu', link: '/composants/app-comp-menu' },
|
|
93
|
-
{
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
{
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
{
|
|
134
|
+
{
|
|
135
|
+
text: 'app-comp-menu-item',
|
|
136
|
+
link: '/composants/app-comp-menu-item'
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
text: 'app-comp-navigation',
|
|
140
|
+
link: '/composants/app-comp-navigation'
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
text: 'app-comp-note-call',
|
|
144
|
+
link: '/composants/app-comp-note-call'
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
text: 'app-comp-note-credit',
|
|
148
|
+
link: '/composants/app-comp-note-credit'
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
text: 'app-comp-play-bar-next',
|
|
152
|
+
link: '/composants/app-comp-play-bar-next'
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
text: 'app-comp-play-bar-progress',
|
|
156
|
+
link: '/composants/app-comp-play-bar-progress'
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
text: 'app-comp-pop-up-next',
|
|
160
|
+
link: '/composants/app-comp-pop-up-next'
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
text: 'app-comp-quiz-next',
|
|
164
|
+
link: '/composants/app-comp-quiz-next'
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
text: 'app-comp-quiz-recall',
|
|
168
|
+
link: '/composants/app-comp-quiz-recall'
|
|
169
|
+
},
|
|
102
170
|
// { text: 'app-comp-settings-menu', link: '/composants/app-comp-settings-menu' },
|
|
103
171
|
{ text: 'app-comp-svg-next', link: '/composants/app-comp-svg-next' },
|
|
104
|
-
{
|
|
105
|
-
|
|
172
|
+
{
|
|
173
|
+
text: 'app-comp-table-of-content',
|
|
174
|
+
link: '/composants/app-comp-table-of-content'
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
text: 'app-comp-video-player',
|
|
178
|
+
link: '/composants/app-comp-video-player'
|
|
179
|
+
}
|
|
106
180
|
]
|
|
107
181
|
}
|
|
108
182
|
],
|
|
109
183
|
|
|
110
184
|
socialLinks: [
|
|
111
|
-
{
|
|
185
|
+
{
|
|
186
|
+
icon: 'gitlab',
|
|
187
|
+
link: 'https://git.crosemont.qc.ca/fcad/core/fcad-core-2'
|
|
188
|
+
}
|
|
112
189
|
]
|
|
113
190
|
}
|
|
114
191
|
})
|
package/package.json
CHANGED
|
@@ -1,11 +1,28 @@
|
|
|
1
1
|
{
|
|
2
|
-
"
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
"
|
|
8
|
-
"
|
|
2
|
+
"name": "fcad-core-dragon",
|
|
3
|
+
"version": "2.3.0-test.2",
|
|
4
|
+
"private": false,
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./src/main.js",
|
|
7
|
+
"engines": {
|
|
8
|
+
"node": ">0.11.9"
|
|
9
|
+
},
|
|
10
|
+
"scripts": {
|
|
11
|
+
"build": "vite build",
|
|
12
|
+
"dev": "vite",
|
|
13
|
+
"docs:build": "vitepress build documentation",
|
|
14
|
+
"docs:dev": "vitepress dev documentation",
|
|
15
|
+
"docs:preview": "vitepress preview documentation",
|
|
16
|
+
"format": "prettier --write src/",
|
|
17
|
+
"lintfix": "eslint --fix src",
|
|
18
|
+
"lintreport": "eslint ./src",
|
|
19
|
+
"preview": "vite preview",
|
|
20
|
+
"reset": "rm -rf ./node_modules package-lock.json .cache dist && npm i && npm run watch",
|
|
21
|
+
"test-ct": "npx playwright test -c playwright-ct.config.js",
|
|
22
|
+
"test:unit": "vitest",
|
|
23
|
+
"test:unit:coverage": "vitest --coverage",
|
|
24
|
+
"vue": "vue",
|
|
25
|
+
"watch": "nodemon -e js,vue,html,json -x yalc publish --push"
|
|
9
26
|
},
|
|
10
27
|
"dependencies": {
|
|
11
28
|
"axios": "^1.6.8",
|
|
@@ -19,14 +36,21 @@
|
|
|
19
36
|
"devDependencies": {
|
|
20
37
|
"@eslint/js": "^9.38.0",
|
|
21
38
|
"@pinia/testing": "^1.0.3",
|
|
22
|
-
"@playwright/experimental-ct-vue": "^1.
|
|
23
|
-
"@playwright/test": "^1.
|
|
39
|
+
"@playwright/experimental-ct-vue": "^1.50.1",
|
|
40
|
+
"@playwright/test": "^1.50.1",
|
|
41
|
+
"@semantic-release/changelog": "^6.0.3",
|
|
42
|
+
"@semantic-release/commit-analyzer": "^13.0.1",
|
|
43
|
+
"@semantic-release/git": "^10.0.1",
|
|
44
|
+
"@semantic-release/gitlab": "^13.3.2",
|
|
45
|
+
"@semantic-release/npm": "^12.0.2",
|
|
46
|
+
"@semantic-release/release-notes-generator": "^14.1.0",
|
|
24
47
|
"@testing-library/jest-dom": "^6.9.1",
|
|
25
|
-
"@types/node": "^
|
|
48
|
+
"@types/node": "^22.10.0",
|
|
26
49
|
"@vitejs/plugin-vue": "^6.0.1",
|
|
27
|
-
"@vitest/coverage-v8": "^
|
|
50
|
+
"@vitest/coverage-v8": "^3.0.0",
|
|
28
51
|
"@vue/eslint-config-prettier": "^10.2.0",
|
|
29
52
|
"@vue/test-utils": "^2.4.6",
|
|
53
|
+
"esbuild": "0.25.12",
|
|
30
54
|
"eslint": "^9.38.0",
|
|
31
55
|
"eslint-plugin-cypress": "^5.1.0",
|
|
32
56
|
"eslint-plugin-vue": "~10.3.0",
|
|
@@ -36,35 +60,24 @@
|
|
|
36
60
|
"nodemon": "^3.1.0",
|
|
37
61
|
"prettier": "^3.6.2",
|
|
38
62
|
"sass-embedded": "^1.91.0",
|
|
63
|
+
"vite": "^6.0.1",
|
|
39
64
|
"vitepress": "^1.6.3",
|
|
40
|
-
"vitest": "^
|
|
65
|
+
"vitest": "^3.0.0",
|
|
41
66
|
"vue-i18n": "^11.1.12",
|
|
42
67
|
"vue-router": "^4.4.5",
|
|
43
68
|
"vuetify": "^3.10.10"
|
|
44
69
|
},
|
|
45
|
-
"
|
|
46
|
-
"
|
|
70
|
+
"overrides": {
|
|
71
|
+
"esbuild": "0.25.12",
|
|
72
|
+
"vite": "^6.0.1",
|
|
73
|
+
"@vitejs/plugin-vue": "^6.0.1"
|
|
47
74
|
},
|
|
48
|
-
"
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
"
|
|
55
|
-
|
|
56
|
-
"docs:preview": "vitepress preview documentation",
|
|
57
|
-
"format": "prettier --write src/",
|
|
58
|
-
"lintfix": "eslint --fix src",
|
|
59
|
-
"lintreport": "eslint ./src",
|
|
60
|
-
"preview": "vite preview",
|
|
61
|
-
"reset": "rm -rf ./node_modules package-lock.json .cache dist && npm i && npm run watch",
|
|
62
|
-
"test-ct": "playwright test -c playwright-ct.config.js",
|
|
63
|
-
"test:unit": "vitest",
|
|
64
|
-
"test:unit:coverage": "vitest --coverage",
|
|
65
|
-
"vue": "vue",
|
|
66
|
-
"watch": "nodemon -e js,vue,html,json -x yalc publish --push"
|
|
67
|
-
},
|
|
68
|
-
"type": "module",
|
|
69
|
-
"version": "2.2.0"
|
|
75
|
+
"browserslist": [
|
|
76
|
+
"> 1%",
|
|
77
|
+
"last 2 versions",
|
|
78
|
+
"not dead"
|
|
79
|
+
],
|
|
80
|
+
"config": {
|
|
81
|
+
"projname": ""
|
|
82
|
+
}
|
|
70
83
|
}
|
|
@@ -131,6 +131,7 @@ export default {
|
|
|
131
131
|
'getRouteHistory',
|
|
132
132
|
'getBookmarkEnabled',
|
|
133
133
|
'getAppDebugMode',
|
|
134
|
+
'getLessonPosition',
|
|
134
135
|
'getApplicationSettings'
|
|
135
136
|
]),
|
|
136
137
|
appDebugMode() {
|
|
@@ -204,7 +205,9 @@ export default {
|
|
|
204
205
|
appReady: {
|
|
205
206
|
handler(newValue) {
|
|
206
207
|
if (newValue) {
|
|
207
|
-
this
|
|
208
|
+
this.$nextTick(() => {
|
|
209
|
+
this.setInitialLoadingDone()
|
|
210
|
+
})
|
|
208
211
|
}
|
|
209
212
|
}
|
|
210
213
|
}
|
|
@@ -371,8 +374,13 @@ export default {
|
|
|
371
374
|
)
|
|
372
375
|
},
|
|
373
376
|
|
|
374
|
-
setInitialLoadingDone() {
|
|
377
|
+
async setInitialLoadingDone() {
|
|
375
378
|
this.initialLoading = false
|
|
379
|
+
|
|
380
|
+
if (this.bookmarkActive) {
|
|
381
|
+
const bookmark = this.getLessonPosition[0]
|
|
382
|
+
this.$router.push({ name: bookmark })
|
|
383
|
+
} // navigate to menu to start the app
|
|
376
384
|
},
|
|
377
385
|
/**
|
|
378
386
|
* @description set the desired language for the app default is french
|
|
@@ -758,11 +766,25 @@ export default {
|
|
|
758
766
|
extensions: [
|
|
759
767
|
{
|
|
760
768
|
id: 'ending-point',
|
|
761
|
-
content: (() =>
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
769
|
+
content: (() => {
|
|
770
|
+
const {
|
|
771
|
+
name,
|
|
772
|
+
meta: { activity_ref, id, type }
|
|
773
|
+
} = this.$route
|
|
774
|
+
let bookmark = {
|
|
775
|
+
name,
|
|
776
|
+
activity_ref,
|
|
777
|
+
id,
|
|
778
|
+
type
|
|
779
|
+
}
|
|
780
|
+
if (this.$route.name == 'menu') {
|
|
781
|
+
bookmark =
|
|
782
|
+
this.getLessonPosition.length > 0
|
|
783
|
+
? this.getLessonPosition[0]
|
|
784
|
+
: this.$helper.getRoutesFromVueRouter().meta.children[0]
|
|
785
|
+
}
|
|
786
|
+
return bookmark
|
|
787
|
+
})()
|
|
766
788
|
},
|
|
767
789
|
{
|
|
768
790
|
id: 'user-data',
|
|
@@ -770,10 +792,14 @@ export default {
|
|
|
770
792
|
routeHistory: (() => {
|
|
771
793
|
const history = this.getRouteHistory.toReversed() //get the route history from the last
|
|
772
794
|
|
|
773
|
-
history[0] = this.$route.meta // change the last recored route to the current route
|
|
795
|
+
if (this.$route.name !== 'menu') history[0] = this.$route.meta // change the last recored route to the current route
|
|
774
796
|
|
|
775
797
|
return history.toReversed()
|
|
776
798
|
})(),
|
|
799
|
+
|
|
800
|
+
playbarValues: {
|
|
801
|
+
...this.getMediaPlaybarValues()
|
|
802
|
+
},
|
|
777
803
|
...lessonsData
|
|
778
804
|
}
|
|
779
805
|
}
|
|
@@ -783,21 +809,7 @@ export default {
|
|
|
783
809
|
|
|
784
810
|
const endStmt = { ...stmt }
|
|
785
811
|
endStmt.verb = 'terminated'
|
|
786
|
-
|
|
787
|
-
//Creating custom statement
|
|
788
|
-
const stmtPlaybar = {
|
|
789
|
-
verb: 'played',
|
|
790
|
-
definition: text,
|
|
791
|
-
description: text,
|
|
792
|
-
extensions: [
|
|
793
|
-
{
|
|
794
|
-
id: 'playbar-values',
|
|
795
|
-
content: {
|
|
796
|
-
...this.getMediaPlaybarValues()
|
|
797
|
-
}
|
|
798
|
-
}
|
|
799
|
-
]
|
|
800
|
-
}
|
|
812
|
+
|
|
801
813
|
//================================STATEMENT FOR THE SETTINGS ===============================================
|
|
802
814
|
|
|
803
815
|
//Creating custom statement
|
|
@@ -815,19 +827,12 @@ export default {
|
|
|
815
827
|
content: {
|
|
816
828
|
...this.getApplicationSettings
|
|
817
829
|
}
|
|
818
|
-
// content: {
|
|
819
|
-
// bookmark: false
|
|
820
|
-
// } //for testing
|
|
821
830
|
}
|
|
822
831
|
]
|
|
823
832
|
}
|
|
824
833
|
//================================END STATEMENT ===============================================
|
|
825
834
|
|
|
826
|
-
this.sendXapiStatements(
|
|
827
|
-
[stmtPlaybar, stmtUserSettings, stmt, endStmt],
|
|
828
|
-
null,
|
|
829
|
-
option
|
|
830
|
-
) //send xapi statement
|
|
835
|
+
this.sendXapiStatements([stmtUserSettings, stmt, endStmt], null, option) //send xapi statement
|
|
831
836
|
|
|
832
837
|
if (this.appTimer.getTimerState() === 'started')
|
|
833
838
|
setTimeout(() => this.stopAppTimer(), 0) //clear the timer
|
|
@@ -881,14 +886,6 @@ export default {
|
|
|
881
886
|
...baseStmt,
|
|
882
887
|
verb: 'terminated',
|
|
883
888
|
extensions: [
|
|
884
|
-
{
|
|
885
|
-
id: 'ending-point',
|
|
886
|
-
content: (() =>
|
|
887
|
-
this.$route.name == 'menu'
|
|
888
|
-
? this.$helper.getRoutesFromVueRouter().meta.children[0]
|
|
889
|
-
._namedRoute
|
|
890
|
-
: this.$route.name)()
|
|
891
|
-
},
|
|
892
889
|
{
|
|
893
890
|
id: 'user-data',
|
|
894
891
|
content: new Object()
|
|
@@ -926,51 +923,20 @@ export default {
|
|
|
926
923
|
const fetchData = async () => {
|
|
927
924
|
//funtion that will make a multiple request on the server
|
|
928
925
|
const requests = async () => {
|
|
929
|
-
const _url = new URL(activityId)
|
|
930
|
-
const parentID = `${_url.origin}/${this.getModuleInfo.courseID}` // redefining activity id for statement
|
|
931
|
-
|
|
932
926
|
const lessonProgressParam = { email: actorMbox, activityId }
|
|
933
927
|
const lessonStateParam = {
|
|
934
928
|
email: actorMbox,
|
|
935
929
|
activityId,
|
|
936
930
|
verb: 'suspended'
|
|
937
931
|
}
|
|
938
|
-
const lessonPosionParam = {
|
|
939
|
-
email: actorMbox,
|
|
940
|
-
activityId
|
|
941
|
-
}
|
|
942
|
-
const playbarParam = {
|
|
943
|
-
email: actorMbox,
|
|
944
|
-
activityId,
|
|
945
|
-
verb: 'played'
|
|
946
|
-
}
|
|
947
|
-
const preferencesParam = {
|
|
948
|
-
email: actorMbox,
|
|
949
|
-
activityId: parentID,
|
|
950
|
-
verb: 'preferred'
|
|
951
|
-
}
|
|
952
932
|
|
|
953
|
-
const fetchParams = [
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
lessonPosionParam,
|
|
957
|
-
playbarParam,
|
|
958
|
-
preferencesParam
|
|
959
|
-
]
|
|
960
|
-
|
|
961
|
-
// Using Promise.all to make parallel requests
|
|
962
|
-
const {
|
|
963
|
-
userData,
|
|
964
|
-
savedPoint,
|
|
965
|
-
preferredSettings,
|
|
966
|
-
playbarValues,
|
|
967
|
-
lessonStatus
|
|
968
|
-
} = await this.$xapi._getBulkData(fetchParams)
|
|
933
|
+
const fetchParams = [lessonProgressParam, lessonStateParam]
|
|
934
|
+
const { userData, savedPoint, playbarValues, lessonStatus } =
|
|
935
|
+
await this.$xapi._getBulkData(fetchParams)
|
|
969
936
|
|
|
970
937
|
return {
|
|
971
938
|
userData,
|
|
972
939
|
savedPoint,
|
|
973
|
-
preferredSettings,
|
|
974
940
|
playbarValues,
|
|
975
941
|
lessonStatus
|
|
976
942
|
}
|