fcad-core-dragon 2.3.0-test.1 → 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/.releaserc CHANGED
@@ -1,9 +1,18 @@
1
1
  {
2
2
  "branches": [
3
3
  "master",
4
- { "name": "beta", "prerelease": true },
5
- { "name": "alpha", "prerelease": true },
6
- { "name": "test", "prerelease": true }
4
+ {
5
+ "name": "beta",
6
+ "prerelease": true
7
+ },
8
+ {
9
+ "name": "alpha",
10
+ "prerelease": true
11
+ },
12
+ {
13
+ "name": "test",
14
+ "prerelease": "test"
15
+ }
7
16
  ],
8
17
  "plugins": [
9
18
  "@semantic-release/commit-analyzer",
@@ -18,7 +27,10 @@
18
27
  [
19
28
  "@semantic-release/git",
20
29
  {
21
- "assets": ["package.json", "CHANGELOG.md"],
30
+ "assets": [
31
+ "package.json",
32
+ "CHANGELOG.md"
33
+ ],
22
34
  "message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"
23
35
  }
24
36
  ],
package/CHANGELOG.md CHANGED
@@ -1,10 +1,17 @@
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
+
1
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)
2
9
 
3
10
 
4
11
  ### Bug Fixes
5
12
 
6
- * **ci-config:** fixed the rule for npm deployment on granches beta, apha and test ([38923e7](https://git.crosemont.qc.ca/fcad/core/fcad-core-2/commit/38923e7ad775795f2ea27f0d304915a740185892))
7
- * **ci-config:** fixed the rule for npm deployment on granches beta, apha and test ([808d3de](https://git.crosemont.qc.ca/fcad/core/fcad-core-2/commit/808d3de37bf1d03d420e05fa13412ce17ca72ad1))
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))
8
15
  * **dependencies:** fixed depentencies conflicts causing npm ci to fail ([469918e](https://git.crosemont.qc.ca/fcad/core/fcad-core-2/commit/469918e24d0b2948adf7d2f0135d80aeba2b35a8))
9
16
  * remaning release config file to .releaserc ([2a746d0](https://git.crosemont.qc.ca/fcad/core/fcad-core-2/commit/2a746d0b294577128937a22fae8f556984e97fda))
10
17
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fcad-core-dragon",
3
- "version": "2.3.0-test.1",
3
+ "version": "2.3.0-test.2",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "./src/main.js",
@@ -28,7 +28,6 @@
28
28
  "axios": "^1.6.8",
29
29
  "gsap": "^3.12.5",
30
30
  "idb": "^8.0.0",
31
- "mathjs": "^15.1.0",
32
31
  "mobile-detect": "^1.4.5",
33
32
  "pinia": "^3.0.3",
34
33
  "tiny-emitter": "^2.1.0",
@@ -205,7 +205,9 @@ export default {
205
205
  appReady: {
206
206
  handler(newValue) {
207
207
  if (newValue) {
208
- this.setInitialLoadingDone()
208
+ this.$nextTick(() => {
209
+ this.setInitialLoadingDone()
210
+ })
209
211
  }
210
212
  }
211
213
  }
@@ -372,8 +374,9 @@ export default {
372
374
  )
373
375
  },
374
376
 
375
- setInitialLoadingDone() {
377
+ async setInitialLoadingDone() {
376
378
  this.initialLoading = false
379
+
377
380
  if (this.bookmarkActive) {
378
381
  const bookmark = this.getLessonPosition[0]
379
382
  this.$router.push({ name: bookmark })
@@ -763,11 +766,25 @@ export default {
763
766
  extensions: [
764
767
  {
765
768
  id: 'ending-point',
766
- content: (() =>
767
- this.$route.name == 'menu'
768
- ? this.$helper.getRoutesFromVueRouter().meta.children[0]
769
- ._namedRoute
770
- : this.$route.name)()
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
+ })()
771
788
  },
772
789
  {
773
790
  id: 'user-data',
@@ -775,15 +792,11 @@ export default {
775
792
  routeHistory: (() => {
776
793
  const history = this.getRouteHistory.toReversed() //get the route history from the last
777
794
 
778
- 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
779
796
 
780
797
  return history.toReversed()
781
798
  })(),
782
- savedPoint: (() =>
783
- this.$route.name == 'menu'
784
- ? this.$helper.getRoutesFromVueRouter().meta.children[0]
785
- ._namedRoute
786
- : this.$route.name)(),
799
+
787
800
  playbarValues: {
788
801
  ...this.getMediaPlaybarValues()
789
802
  },
@@ -918,7 +931,6 @@ export default {
918
931
  }
919
932
 
920
933
  const fetchParams = [lessonProgressParam, lessonStateParam]
921
-
922
934
  const { userData, savedPoint, playbarValues, lessonStatus } =
923
935
  await this.$xapi._getBulkData(fetchParams)
924
936
 
@@ -374,6 +374,7 @@ export default {
374
374
  'normal',
375
375
  'branching'
376
376
  ]
377
+
377
378
  if (trackedRouteType.includes(this.$route.meta.type)) {
378
379
  //Navigation should only trigger timer and xapi statement when app is ready and activity has changed
379
380
  if (!this.activityHasChanged || !this.appReady) return
@@ -468,11 +469,26 @@ export default {
468
469
  extensions: [
469
470
  {
470
471
  id: 'ending-point',
471
- content: (() =>
472
- this.$route.name == 'menu'
473
- ? this.$helper.getRoutesFromVueRouter().meta.children[0]
474
- ._namedRoute
475
- : this.$route.name)()
472
+ content: (() => {
473
+ const {
474
+ name,
475
+ meta: { activity_ref, id, type }
476
+ } = this.$route
477
+ let bookmark = {
478
+ name,
479
+ activity_ref,
480
+ id,
481
+ type
482
+ }
483
+ if (this.$route.name == 'menu') {
484
+ bookmark =
485
+ this.getLessonPosition.length > 0
486
+ ? this.getLessonPosition[0]
487
+ : this.$helper.getRoutesFromVueRouter().meta
488
+ .children[0]
489
+ }
490
+ return bookmark
491
+ })()
476
492
  }
477
493
  ],
478
494
  duration: this.appTimer.ISOTimeParser(this.lessonDuration)
@@ -545,21 +561,13 @@ export default {
545
561
  this.updateIntroStatus(this.theIntroIsActivated)
546
562
  //Communication events
547
563
  this.$bus.$on('open-popup', this.openPopup)
548
-
549
564
  this.$bus.$on('close-popup', this.closePopup)
550
-
551
565
  this.$bus.$on('start-onboarding', this.startOnboarding)
552
-
553
566
  this.$bus.$on('open-sidebar', this.openSidebar)
554
-
555
567
  this.$bus.$on('close-sidebar', this.closeSidebar)
556
-
557
568
  this.$bus.$on('videoFullScreen', this.onVideoFullScreen)
558
-
559
569
  this.$bus.$on('save-to-scorm', this.saveToScorm)
560
-
561
570
  this.$bus.$on('launch-xapi-resource', this.launchResource)
562
-
563
571
  this.$bus.$on('update-route-history', this.updateRouteHistory)
564
572
  this.$bus.$on('update-content', this.updateContent)
565
573
  this.$bus.$on('show-transcript', this.openTranscript)
@@ -661,7 +669,6 @@ export default {
661
669
  //delay animation
662
670
  this.rightSidebarVisible = true
663
671
  this.updatesideBIsOpen(this.rightSidebarVisible)
664
- // setTimeout(() => {
665
672
  const rightSidebarContent = this.getRightSidebar() // Emelent displayed in the sidebar-body
666
673
  if (!rightSidebarContent) return
667
674
  rightSidebarContent.scrollTop = 0
@@ -669,7 +676,6 @@ export default {
669
676
  rSidebar.dispatchEvent(this.rightSidebarEvent)
670
677
  rSidebar.setAttribute('tabindex', -1)
671
678
  this.resetFocus(rSidebar) //set focus on the sidebar
672
- // }, 100)
673
679
  },
674
680
  /**
675
681
  * @description close the right sidebar component
@@ -849,7 +855,6 @@ export default {
849
855
  this.$bus.$emit('set-comp-status', 'appBaseModule', 'loading')
850
856
  this.updateCurrentTimeline(null)
851
857
  this.updateCurrentMediaElements([])
852
- // this.updateCurrentPage({})
853
858
  this.$bus.$emit('set-comp-status', 'appBaseModule', 'ready')
854
859
  res(this.getCompStatusTracker)
855
860
  })
@@ -1013,7 +1018,6 @@ export default {
1013
1018
 
1014
1019
  // Add route route in history
1015
1020
  this.routeData.push(from.meta)
1016
-
1017
1021
  if (this.routeData.length >= 4) this.routeData.shift()
1018
1022
  },
1019
1023
 
@@ -1419,15 +1423,12 @@ export default {
1419
1423
  routeHistory: (() => {
1420
1424
  const history = this.getRouteHistory.toReversed() //get the route history from the last
1421
1425
 
1422
- history[0] = this.$route.meta // change the last recored route to the current route
1426
+ if (this.$route.name !== 'menu')
1427
+ history[0] = this.$route.meta // change the last recored route to the current route
1423
1428
 
1424
1429
  return history.toReversed()
1425
1430
  })(),
1426
- savedPoint: (() =>
1427
- this.$route.name == 'menu'
1428
- ? this.$helper.getRoutesFromVueRouter().meta.children[0]
1429
- ._namedRoute
1430
- : this.$route.name)(),
1431
+
1431
1432
  playbarValues: {
1432
1433
  ...this.getMediaPlaybarValues()
1433
1434
  },
@@ -1481,15 +1482,11 @@ export default {
1481
1482
  routeHistory: (() => {
1482
1483
  const history = this.getRouteHistory.toReversed() //get the route history from the last
1483
1484
 
1484
- history[0] = this.$route.meta // change the last recored route to the current route
1485
+ if (this.$route.name !== 'menu')
1486
+ history[0] = this.$route.meta // change the last recored route to the current route
1485
1487
 
1486
1488
  return history.toReversed()
1487
1489
  })(),
1488
- savedPoint: (() =>
1489
- this.$route.name == 'menu'
1490
- ? this.$helper.getRoutesFromVueRouter().meta.children[0]
1491
- ._namedRoute
1492
- : this.$route.name)(),
1493
1490
  playbarValues: {
1494
1491
  ...this.getMediaPlaybarValues()
1495
1492
  },
@@ -112,7 +112,8 @@ export default {
112
112
  'getMenuSettings',
113
113
  'getAppDebugMode',
114
114
  'getAppConfigs',
115
- 'getAllCompleted'
115
+ 'getAllCompleted',
116
+ 'getLessonPosition'
116
117
  ]),
117
118
  appDebugMode() {
118
119
  return this.getAppDebugMode
@@ -177,10 +178,12 @@ export default {
177
178
  }
178
179
  }, 2000)
179
180
  },
181
+
180
182
  //Go to the last route you were before the menu
181
183
  GoToLastRoute() {
182
184
  let lastRoute
183
185
  let path
186
+
184
187
  //Get all activity state (menu not included)
185
188
  const { allActivitiesState } = this.progressWithMenu()
186
189
  let state = Object.values(allActivitiesState)
@@ -200,7 +203,10 @@ export default {
200
203
  }
201
204
 
202
205
  // create path from the last you saw
203
- if (lastRoute) path = this.createdRoute(lastRoute)
206
+ if (lastRoute)
207
+ path = this.createdRoute(
208
+ this.getRouteHistory[this.getRouteHistory.length - 1]
209
+ )
204
210
 
205
211
  return path
206
212
  },
@@ -236,6 +242,10 @@ export default {
236
242
 
237
243
  //Define path
238
244
  path = page !== ' ' ? `${activity}.page_${page}` : activity
245
+
246
+ if (path == 'activite_0') path = 'introduction'
247
+ if (path == 'activite_99') path = 'conclusion'
248
+
239
249
  return path
240
250
  },
241
251
  progressWithMenu() {
package/src/main.js CHANGED
@@ -340,7 +340,7 @@ export default {
340
340
  }
341
341
  /* Local Method for data fetching */
342
342
  const fetchDatasFromServer = async (config) => {
343
- const {
343
+ let {
344
344
  $scorm,
345
345
  $xapi,
346
346
  $idb,
@@ -352,7 +352,10 @@ export default {
352
352
  remote
353
353
  } = config
354
354
 
355
+ if (window.location.hostname.includes('cegepadistance.ca')) remote = true
356
+
355
357
  let server = remote ? specification : 'local'
358
+
356
359
  const unknownHost =
357
360
  !window.location.hostname.includes('cegepadistance.ca') &&
358
361
  window.location.hostname !== 'localhost'
@@ -416,18 +419,13 @@ export default {
416
419
 
417
420
  const fetchParams = [lessonProgressParam, lessonStateParam]
418
421
 
419
- const { userData, preferredSettings, lessonStatus } =
422
+ const { userData, preferredSettings, lessonStatus, savedPoint } =
420
423
  await $xapi._getBulkData(fetchParams)
421
424
 
422
- const {
423
- routeHistory = [],
424
- savedPoint,
425
- playbarValues,
426
- ...progress
427
- } = userData
425
+ const { routeHistory = [], playbarValues, ...progress } = userData
428
426
 
429
427
  const completedState = lessonStatus || {}
430
- const lessonPosition = savedPoint || ''
428
+ const lessonPosition = savedPoint.name ? savedPoint : null
431
429
 
432
430
  data = {
433
431
  progress,
@@ -4,7 +4,6 @@ import xAPILaunch from './launch'
4
4
  import { defineUtils } from './utils'
5
5
  import { xapiwrapper } from './wrapper'
6
6
  import { xapiStatement } from './xapiStatement'
7
- import { de } from 'vuetify/locale'
8
7
 
9
8
  //ref: https://github.com/adlnet/xAPI-Spec/blob/master/xAPI-Communication.md#partthree
10
9
 
@@ -284,7 +283,7 @@ export default class ADL {
284
283
  }
285
284
  }
286
285
 
287
- return savedPoint && savedPoint.length > 0 ? savedPoint[0] : ''
286
+ return savedPoint && savedPoint.length > 0 ? savedPoint[0] : null
288
287
  }
289
288
 
290
289
  /* @description: Helper to get the Preferred Settings of the user
@@ -435,7 +434,8 @@ export default class ADL {
435
434
  }
436
435
  let userData = {},
437
436
  preferredSettings = {},
438
- lessonStatus = {}
437
+ lessonStatus = {},
438
+ savedPoint = null
439
439
 
440
440
  let { response } = await this.XAPIWrapper.getStatements(paramList)
441
441
 
@@ -492,6 +492,14 @@ export default class ADL {
492
492
 
493
493
  break
494
494
  }
495
+ case extension.includes('ending-point'): {
496
+ const dataExtension = allExtensionsKeys.filter((extension) =>
497
+ extension.includes('ending-point')
498
+ )
499
+ savedPoint =
500
+ lastRecord.object.definition.extensions[dataExtension[0]]
501
+ break
502
+ }
495
503
  default: {
496
504
  return
497
505
  }
@@ -503,7 +511,8 @@ export default class ADL {
503
511
  return {
504
512
  userData,
505
513
  lessonStatus,
506
- preferredSettings
514
+ preferredSettings,
515
+ savedPoint
507
516
  }
508
517
  }
509
518
  }
@@ -31,7 +31,6 @@ router.beforeResolve((to, from, next) => {
31
31
  if (getWidgetOpen) app.config.globalProperties.$bus.$emit('close-widget') //close opened widget
32
32
  if (getPopupIsOpen) app.config.globalProperties.$bus.$emit('close-popup') //close the popup
33
33
  if (getSidebarIsOpen) app.config.globalProperties.$bus.$emit('close-sidebar') //close the sidebar
34
-
35
34
  if (from.name !== 'module')
36
35
  app.config.globalProperties.$bus.$emit('update-route-history', from)
37
36
 
@@ -129,9 +129,9 @@ const fileAssets = {
129
129
  },
130
130
 
131
131
  /**
132
- * @description Validator for the content of menu setting file
132
+ * @description build a map tree of all the file in the folder
133
+ * './src/module' of the project with name respecting following condition:
133
134
  * @param {String} a- array of file for use case
134
- * @param {Object} [requiredArgs] list of arguments to include consider in validation ()
135
135
  */
136
136
  buildMapTree: (a) => {
137
137
  // Load files in module folder
@@ -1,20 +0,0 @@
1
- <template>
2
- <div>
3
- <v-text-field
4
- :id="id"
5
- autocomplete="off"
6
- max-width="80"
7
- class="mx-3"
8
- />
9
- </div>
10
- </template>
11
- <script>
12
- export default {
13
- props: {
14
- id: {
15
- type: String,
16
- default: ''
17
- }
18
- }
19
- }
20
- </script>