From: Vincent Vanwaelscappel Date: Wed, 15 Dec 2021 10:25:29 +0000 (+0100) Subject: wip #4907 @1.5 X-Git-Url: http://git.cubedesigners.com/?a=commitdiff_plain;h=6d32d2648cf91bbe4bc0f9f9c3bc404e5955220d;p=hf-scorm-package.git wip #4907 @1.5 --- diff --git a/js/libs/scorm/facade.js b/js/libs/scorm/facade.js index fd27768..78e60d9 100644 --- a/js/libs/scorm/facade.js +++ b/js/libs/scorm/facade.js @@ -12,18 +12,35 @@ SCORMFacade.prototype = { }, GetValue: function (key) { this._log('Get value ' + key); - if(key==='cmi.completion_status'){ + var d = savedState[currentModule.id]; + if (key === 'cmi.core.lesson_status' || key === 'cmi.completion_status') { + return d.completion_status; + } else if (key === 'cmi.location' || key === 'cmi.core.lesson_location') { + return JSON.stringify(d.location); + } else if (key === 'cmi.success_status') { + return d.success_status; } - return getScormValue(key); + return d.cmi[key] === null ? 'null' : d.cmi[key]; }, SetValue: function (key, value) { this._log('Set value ' + key + ' :: ' + value); - if(key===''){ - + var data = {cmi: {}}; + if (key === 'cmi.core.lesson_status' || key === 'cmi.completion_status') { + key = 'completion_status'; + data[key] = value; + } else if (key === 'cmi.location' || key === 'cmi.core.lesson_location') { + key = 'location'; + data[key] = value; + } else if (key === 'cmi.success_status') { + key = 'success_status'; + data[key] = value; + } else { + data.cmi[key] = value; } - // TODO save data in module + setModuleState(currentModule.id, data); + return true; }, Commit: function (d) { this._log('Commit'); diff --git a/js/scormpackage.js b/js/scormpackage.js index ce38a76..1e0db21 100644 --- a/js/scormpackage.js +++ b/js/scormpackage.js @@ -1,4 +1,6 @@ window.savedState = {}; +window.currentModule = null; + SCORM_INITED = false; SCORM_START_TIME = null; @@ -79,18 +81,46 @@ function initScorm() { } - setContents(); - initEvents(); if (SCORM_OK) { scormExit(); startScormTimer(); initScormEvents(); } + initState(); + setContents(); + initEvents(); window.API = null; window.API_1484_11 = new SCORMFacade(); return SCORM_OK; } +function initState() { + var currentLocation = ''; + if (SCORM_OK) { + currentLocation = getScormValue('location'); + } + + if (currentLocation === undefined || currentLocation === null || currentLocation === 'null' || currentLocation === '') { + window.savedState = {}; + } else { + window.savedState = JSON.parse(currentLocation); + } + + + if (window.savedState === undefined || window.savedState === null || window.savedState === 'null') { + window.savedState = {}; + } + + var defaultState = {completion_status: 'incomplete', success_status: 'unknown', score: 0, location: {}, cmi: {}}; + $.each(DATA.modules, function (k, v) { + if (window.savedState[v.id] === undefined || window.savedState[v.id] === null) { + window.savedState[v.id] = defaultState; + } else { + window.savedState[v.id] = $.extend(true, defaultState, window.savedState[v.id]) + } + }); +} + function scormMarkAsComplete() { if (!SCORM_OK) { return; @@ -160,6 +190,7 @@ function closeSubSCO() { function openSubSCO(id) { var module = getModuleData(id); + currentModule = module; var path = module.path; var e = path.split('.'); @@ -176,16 +207,14 @@ function openSubSCO(id) { $("#sco").attr('src', path); if (!module.scorm) { - setModuleState(module.id, 'completed', 'passed', 100); + setModuleState(module.id, {completion_status: 'completed', success_status: 'passed', score: 100}); } } -function setModuleState(id, completion_status, success_status, score, location) { - if (location === undefined) { - location = {}; - } - var s = {completion_status: completion_status, success_status: success_status, score: score, location: location}; - window.savedState[id] = s; +function setModuleState(id, data) { + console.log('setModuleState', id, JSON.stringify(data)); + window.savedState[id] = $.extend(true, window.savedState[id], data); + console.log(savedState[id]); saveStatus(); setContents(); } @@ -211,14 +240,17 @@ function setContents() { $('header h1').text(DATA.title); $('title').text(DATA.title); $('tbody').html(''); + + $.each(DATA.modules, function (k, v) { - var s = (status[v.id] === undefined) ? {complete_status: 'incomplete', success_status: 'unknown', score: 0, location: {}} : status[v.id]; + var s = window.savedState[v.id]; + var tr = $('' + getSpriteIcon('icon-' + v.type) + ''); $('tbody').append(tr); tr.append('' + v.title + ''); tr.append('' + types[v.type] + ''); tr.append('' + (v.mandatory ? vcheck : xcheck) + ''); - tr.append('' + (s.complete_status === 'completed' ? vcheck : xcheck) + ''); + tr.append('' + (s.completion_status === 'completed' ? vcheck : xcheck) + ''); tr.append('
' + s.score + ' %
'); }); @@ -258,22 +290,10 @@ function initScormEvents() { } SCORM_LOCATION_INITED = true; - var currentLocation = getScormValue('location'); - if (currentLocation !== 'null' && currentLocation !== '') { - window.savedState = {}; - } else { - window.savedState = JSON.parse(currentLocation); - } - - - if (window.savedState === undefined || window.savedState === null || window.savedState === 'null') { - window.savedState = {}; - } initEvents(); setContents(); - setInterval(function () { pipwerks.SCORM.save(); }, 5000); diff --git a/style/style.css b/style/style.css index 520dc59..d253454 100644 --- a/style/style.css +++ b/style/style.css @@ -191,7 +191,8 @@ header h1 { border-left: 10px solid #000000; } #wrapper main table tbody td.score div { - width: 50px; + white-space: nowrap; + width: 60px; padding: 5px; margin: 0 auto; background-color: #e4ff19; diff --git a/style/style.css.map b/style/style.css.map index 1abca19..0dcea50 100644 --- a/style/style.css.map +++ b/style/style.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["style.sass"],"names":[],"mappings":"AAEA;EACE;;;AAEF;EACE;EACA;EACA;EACA;;;AAGF;EACE;;;AAEF;EACE;EACA;;AACA;EACE;EACA;EACA;EACA;;AACA;EACE;;AAEJ;EACE;EACA;EACA;;AAEA;EACE;EACA;;AAEJ;EACE;EACA;EACA;;;AAEJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAII;EACE,kBAvDA;;AAsDF;EACE,kBAvDA;;AAsDF;EACE,kBAvDA;;AAsDF;EACE,kBAvDA;;AAsDF;EACE,kBAvDA;;AAsDF;EACE,kBAvDA;;AAyDN;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAEJ;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAEJ;EACE;EACA;EACA;EACA;EACA;EACA;;;AAEJ;EACE;EACA;;AAGE;EACE;EACA;;AAEA;EACE;EACA;;AACA;EACE;;AAEF;EACE;;AAEF;EACE;;AAMI;EACE,mBAjIR;;AAmIQ;EACE,OApIV;;AAgIM;EACE,mBAjIR;;AAmIQ;EACE,OApIV;;AAgIM;EACE,mBAjIR;;AAmIQ;EACE,OApIV;;AAgIM;EACE,mBAjIR;;AAmIQ;EACE,OApIV;;AAgIM;EACE,mBAjIR;;AAmIQ;EACE,OApIV;;AAgIM;EACE,mBAjIR;;AAmIQ;EACE,OApIV;;AAuII;EACE;;AAGF;EACE;EACA;EACA;;AACJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAGA;EACE;EACA;EACA;EACA;EACA;;AAEJ;EACE;;;AAEZ;AACA;EACE;EACA;EACA;EACA;;AAGF;AACA;EACE;EACA;EACA;EACA;;AAGF;AACA;EACE;EACA;EACA;EACA;;AAGF;AACA;EACE;EACA;EACA;EACA;;AAGF;AACA;EACE;EACA;EACA;EACA;;AAGF;AACA;EACE;EACA;EACA;EACA","file":"style.css"} \ No newline at end of file +{"version":3,"sourceRoot":"","sources":["style.sass"],"names":[],"mappings":"AAEA;EACE;;;AAEF;EACE;EACA;EACA;EACA;;;AAGF;EACE;;;AAEF;EACE;EACA;;AACA;EACE;EACA;EACA;EACA;;AACA;EACE;;AAEJ;EACE;EACA;EACA;;AAEA;EACE;EACA;;AAEJ;EACE;EACA;EACA;;;AAEJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAII;EACE,kBAvDA;;AAsDF;EACE,kBAvDA;;AAsDF;EACE,kBAvDA;;AAsDF;EACE,kBAvDA;;AAsDF;EACE,kBAvDA;;AAsDF;EACE,kBAvDA;;AAyDN;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAEJ;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAEJ;EACE;EACA;EACA;EACA;EACA;EACA;;;AAEJ;EACE;EACA;;AAGE;EACE;EACA;;AAEA;EACE;EACA;;AACA;EACE;;AAEF;EACE;;AAEF;EACE;;AAMI;EACE,mBAjIR;;AAmIQ;EACE,OApIV;;AAgIM;EACE,mBAjIR;;AAmIQ;EACE,OApIV;;AAgIM;EACE,mBAjIR;;AAmIQ;EACE,OApIV;;AAgIM;EACE,mBAjIR;;AAmIQ;EACE,OApIV;;AAgIM;EACE,mBAjIR;;AAmIQ;EACE,OApIV;;AAgIM;EACE,mBAjIR;;AAmIQ;EACE,OApIV;;AAuII;EACE;;AAGF;EACE;EACA;EACA;;AACJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAGA;EACE;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACE;;;AAEZ;AACA;EACE;EACA;EACA;EACA;;AAGF;AACA;EACE;EACA;EACA;EACA;;AAGF;AACA;EACE;EACA;EACA;EACA;;AAGF;AACA;EACE;EACA;EACA;EACA;;AAGF;AACA;EACE;EACA;EACA;EACA;;AAGF;AACA;EACE;EACA;EACA;EACA","file":"style.css"} \ No newline at end of file diff --git a/style/style.sass b/style/style.sass index f123354..7dbc73c 100644 --- a/style/style.sass +++ b/style/style.sass @@ -152,12 +152,14 @@ header &.score div - width: 50px + white-space: nowrap + width: 60px padding: 5px margin: 0 auto background-color: #e4ff19 font-weight: 600 + svg height: 30px