@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.
- package/lib/SCORMAdapter.js +39 -16
- package/lib/loadContent.js +3 -0
- package/package.json +1 -1
package/lib/SCORMAdapter.js
CHANGED
|
@@ -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 =
|
|
257
|
+
var duration = convertToTimeInterval(msSessionTime);
|
|
258
|
+
this.LMSSetValue("cmi.session_time", duration);
|
|
254
259
|
}
|
|
255
260
|
else {
|
|
256
|
-
var
|
|
257
|
-
|
|
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
|
+
};
|
package/lib/loadContent.js
CHANGED
|
@@ -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
|
}
|