require('./bootstrap');
+import {SCORM} from 'pipwerks-scorm-api-wrapper';
+import Plyr from 'plyr';
+
+window.openTime = Date.now();
+
document.addEventListener("DOMContentLoaded", function () {
- const player = new Plyr('#player');
+ window.player = new Plyr('#player');
+
SCORM.init();
+ SCORM.set('cmi.exit', 'suspend');
+ if (SCORM.get('cmi.completion_status') !== 'completed') {
+ SCORM.set('cmi.completion_status', 'incomplete');
+ }
+
+ var pc = (parseInt(progressComplete) / 100);
var interval = setInterval(function () {
- if (player.duration > 0 && currentTime > (player.duration * (progressComplete / 100))) {
- SCORM.set('cmi.core.lesson_status', 'completed');
+ if (player.duration > 0 && player.currentTime > (player.duration * pc)) {
+ SCORM.set('cmi.completion_status', 'completed');
+ SCORM.set('cmi.success_status', 'passed');
SCORM.save();
clearInterval(interval);
}
}, 1000);
});
+
+function setSessionTime() {
+ var endTime = Date.now();
+ SCORM.set('cmi.session_time', scormSecondsToTimeInterval((endTime.getTime() - window.openTime.getTime()) / 1000));
+}
+
+function scormSecondsToTimeInterval(diff) {
+ var diff = Math.round(diff);
+ var h = Math.floor(diff / 3600);
+ diff = diff % 3600;
+ var m = Math.floor(diff / 60);
+ var s = diff % 60;
+ return 'PT' + h + 'H' + m + 'M' + s + 'S';
+}
+
+function finishScorm(quit) {
+ if (quit === undefined) {
+ quit = true;
+ }
+
+ setSessionTime();
+ SCORM.save();
+ if (quit) {
+ SCORM.quit();
+ }
+}
+
+window.addEventListener('unload', function (event) {
+ finishScorm();
+});