UNPKG

scorm-again

Version:

A modern SCORM JavaScript run-time library for AICC, SCORM 1.2, and SCORM 2004

78 lines (68 loc) 2.06 kB
import { Scorm12API } from "./Scorm12API"; import { CMI } from "./cmi/aicc/cmi"; import { BaseCMI } from "./cmi/common/base_cmi"; import { CMITriesObject } from "./cmi/aicc/tries"; import { CMIAttemptRecordsObject } from "./cmi/aicc/attempts"; import { CMIEvaluationCommentsObject } from "./cmi/aicc/evaluation"; import { NAV } from "./cmi/scorm12/nav"; import { CMIPathsObject } from "./cmi/aicc/paths"; import { Settings } from "./types/api_types"; import { stringMatches } from "./utilities"; /** * The AICC API class */ class AICCImpl extends Scorm12API { /** * Constructor to create AICC API object * @param {Settings} settings */ constructor(settings?: Settings) { super(settings); this.cmi = new CMI(); this.nav = new NAV(); } override cmi: CMI; override nav: NAV; /** * Gets or builds a new child element to add to the array. * * @param {string} CMIElement * @param {any} value * @param {boolean} foundFirstIndex * @return {BaseCMI | null} */ override getChildElement( CMIElement: string, value: any, foundFirstIndex: boolean, ): BaseCMI | null { let newChild = super.getChildElement(CMIElement, value, foundFirstIndex); if (!newChild) { if (stringMatches(CMIElement, "cmi\\.evaluation\\.comments\\.\\d+")) { newChild = new CMIEvaluationCommentsObject(); } else if ( stringMatches(CMIElement, "cmi\\.student_data\\.tries\\.\\d+") ) { newChild = new CMITriesObject(); } else if ( stringMatches(CMIElement, "cmi\\.student_data\\.attempt_records\\.\\d+") ) { newChild = new CMIAttemptRecordsObject(); } else if (stringMatches(CMIElement, "cmi\\.paths\\.\\d+")) { newChild = new CMIPathsObject(); } } return newChild; } /** * Replace the whole API with another * * @param {AICCImpl} newAPI */ override replaceWithAnotherScormAPI(newAPI: AICCImpl) { // Data Model this.cmi = newAPI.cmi; this.nav = newAPI.nav; } } export { AICCImpl as AICC };