Storing data on terminate/finish and calling listeners for LMS sequencing

This commit is contained in:
Jonathan Putney
2019-11-19 12:16:31 -05:00
parent fa5f60401c
commit 1257df6d18
7 changed files with 111 additions and 54 deletions

View File

@@ -5,7 +5,7 @@ import {
CMIInteractionsCorrectResponsesObject,
CMIInteractionsObject,
CMIInteractionsObjectivesObject,
CMIObjectivesObject,
CMIObjectivesObject, NAV,
} from './cmi/scorm12_cmi';
import * as Utilities from './utilities';
import {global_constants, scorm12_constants} from './constants/api_constants';
@@ -31,6 +31,8 @@ export default class Scorm12API extends BaseAPI {
super(scorm12_error_codes, finalSettings);
this.cmi = new CMI();
this.nav = new NAV();
// Rename functions to match 1.2 Spec and expose to modules
this.LMSInitialize = this.lmsInitialize;
this.LMSFinish = this.lmsFinish;
@@ -59,7 +61,21 @@ export default class Scorm12API extends BaseAPI {
* @return {string} bool
*/
lmsFinish() {
return this.terminate('LMSFinish', false);
const result = this.terminate('LMSFinish', false);
if (result === global_constants.SCORM_TRUE) {
if (this.nav.event !== '') {
if (this.nav.event === 'continue') {
this.processListeners('SequenceNext');
} else {
this.processListeners('SequencePrevious');
}
} else if (this.settings.auto_progress) {
this.processListeners('SequenceNext');
}
}
return result;
}
/**