@didask/scol-r 2.2.4 → 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.
@@ -29,6 +29,14 @@ var SCORMAdapter = /** @class */ (function () {
29
29
  _this._lastRequest.key === "cmi.objectives._children";
30
30
  },
31
31
  },
32
+ {
33
+ code: 351,
34
+ getShouldBeIgnored: function () {
35
+ return _this._lastRequest.method === "set" &&
36
+ new RegExp("^cmi.objectives.\\d+.id$").test(_this._lastRequest.key) &&
37
+ !!_this.LMSGetValue(_this._lastRequest.key);
38
+ },
39
+ },
32
40
  ];
33
41
  this._API = null;
34
42
  this._isSCORM2004 = false;
@@ -245,26 +253,14 @@ var SCORMAdapter = /** @class */ (function () {
245
253
  }
246
254
  };
247
255
  SCORMAdapter.prototype.setSessionTime = function (msSessionTime) {
248
- var CMIVariableName = this._isSCORM2004
249
- ? "cmi.session_time"
250
- : "cmi.core.session_time";
251
- var duration;
252
256
  if (this._isSCORM2004) {
253
- duration = Math.round(msSessionTime / 1000);
257
+ var duration = convertToTimeInterval(msSessionTime);
258
+ this.LMSSetValue("cmi.session_time", duration);
254
259
  }
255
260
  else {
256
- var hours = Math.floor(msSessionTime / 1000 / 60 / 60);
257
- msSessionTime -= hours * 1000 * 60 * 60;
258
- var minutes = Math.floor(msSessionTime / 1000 / 60);
259
- msSessionTime -= minutes * 1000 * 60;
260
- var seconds = Math.floor(msSessionTime / 1000);
261
- var formattedSeconds = seconds < 10 ? "0" + seconds : seconds;
262
- var formattedMinutes = minutes < 10 ? "0" + minutes : minutes;
263
- var formattedHours = hours < 10 ? "0" + hours : hours;
264
- duration =
265
- formattedHours + ":" + formattedMinutes + ":" + formattedSeconds;
261
+ var duration = convertMsToCMITimespan(msSessionTime);
262
+ this.LMSSetValue("cmi.core.session_time", duration);
266
263
  }
267
- this.LMSSetValue(CMIVariableName, duration);
268
264
  };
269
265
  Object.defineProperty(SCORMAdapter.prototype, "objectivesAreAvailable", {
270
266
  get: function () {
@@ -340,3 +336,30 @@ var SCORMAdapter = /** @class */ (function () {
340
336
  return SCORMAdapter;
341
337
  }());
342
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.4",
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",