@didask/scol-r 2.2.5 → 2.2.6

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.
@@ -253,26 +253,14 @@ var SCORMAdapter = /** @class */ (function () {
253
253
  }
254
254
  };
255
255
  SCORMAdapter.prototype.setSessionTime = function (msSessionTime) {
256
- var CMIVariableName = this._isSCORM2004
257
- ? "cmi.session_time"
258
- : "cmi.core.session_time";
259
- var duration;
260
256
  if (this._isSCORM2004) {
261
- duration = Math.round(msSessionTime / 1000);
257
+ var duration = convertToTimeInterval(msSessionTime);
258
+ this.LMSSetValue("cmi.session_time", duration);
262
259
  }
263
260
  else {
264
- var hours = Math.floor(msSessionTime / 1000 / 60 / 60);
265
- msSessionTime -= hours * 1000 * 60 * 60;
266
- var minutes = Math.floor(msSessionTime / 1000 / 60);
267
- msSessionTime -= minutes * 1000 * 60;
268
- var seconds = Math.floor(msSessionTime / 1000);
269
- var formattedSeconds = seconds < 10 ? "0" + seconds : seconds;
270
- var formattedMinutes = minutes < 10 ? "0" + minutes : minutes;
271
- var formattedHours = hours < 10 ? "0" + hours : hours;
272
- duration =
273
- formattedHours + ":" + formattedMinutes + ":" + formattedSeconds;
261
+ var duration = convertMsToCMITimespan(msSessionTime);
262
+ this.LMSSetValue("cmi.core.session_time", duration);
274
263
  }
275
- this.LMSSetValue(CMIVariableName, duration);
276
264
  };
277
265
  Object.defineProperty(SCORMAdapter.prototype, "objectivesAreAvailable", {
278
266
  get: function () {
@@ -348,3 +336,30 @@ var SCORMAdapter = /** @class */ (function () {
348
336
  return SCORMAdapter;
349
337
  }());
350
338
  exports.SCORMAdapter = SCORMAdapter;
339
+ // timeinterval (second,10,2),
340
+ var convertToTimeInterval = function (milliseconds) {
341
+ var data = getDurationData(milliseconds);
342
+ var days = data.days;
343
+ var hours = data.hours % 24;
344
+ var minutes = data.minutes % 60;
345
+ var seconds = data.seconds % 60;
346
+ var cents = data.cents % 100;
347
+ var daysString = days ? days + 'D' : '';
348
+ var hoursString = hours ? hours + 'H' : '';
349
+ var minutesString = minutes ? minutes + 'M' : '';
350
+ var secondsString = seconds || '0' + (cents ? '.' + cents : '') + 'S';
351
+ var hms = [hoursString, minutesString, secondsString].join('');
352
+ return 'P' + daysString + 'T' + hms;
353
+ };
354
+ var convertMsToCMITimespan = function (milliseconds) {
355
+ var _a = getDurationData(milliseconds), seconds = _a.seconds, minutes = _a.minutes, hours = _a.hours;
356
+ return hours + ":" + minutes % 60 + ":" + seconds % 60;
357
+ };
358
+ var getDurationData = function (milliseconds) {
359
+ var cents = Math.floor(milliseconds / 10);
360
+ var seconds = Math.floor(milliseconds / 1000);
361
+ var minutes = Math.floor(seconds / 60);
362
+ var hours = Math.floor(minutes / 60);
363
+ var days = Math.floor(hours / 24);
364
+ return { days: days, hours: hours, minutes: minutes, seconds: seconds, cents: cents };
365
+ };
@@ -117,7 +117,10 @@ function loadContent() {
117
117
  }
118
118
  var sourceOrigin = sourceUrlParser.protocol + "//" + host;
119
119
  new MessageReceiver(window, sourceOrigin, ADAPTER);
120
+ var sessionStart = new Date().getTime();
120
121
  window.addEventListener("beforeunload", function (e) {
122
+ var sessionEnd = new Date().getTime();
123
+ ADAPTER.setSessionTime(sessionEnd - sessionStart);
121
124
  ADAPTER.LMSTerminate();
122
125
  });
123
126
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@didask/scol-r",
3
- "version": "2.2.5",
3
+ "version": "2.2.6",
4
4
  "description": "Shareable Cross-Origin Learning Resources",
5
5
  "main": "index.html",
6
6
  "types": "lib/index.d.ts",