scorm-again
Version:
A modern SCORM JavaScript run-time library for AICC, SCORM 1.2, and SCORM 2004
90 lines (83 loc) • 2.05 kB
text/typescript
/**
* Class for SCORM 2004's cmi *.score object
*/
import { CMIScore } from "../common/score";
import { scorm2004_constants } from "../../constants/api_constants";
import { scorm2004_errors } from "../../constants/error_codes";
import { scorm2004_regex } from "../../constants/regex";
import { Scorm2004ValidationError } from "../../exceptions/scorm2004_exceptions";
import { check2004ValidFormat, check2004ValidRange } from "./validation";
export class Scorm2004CMIScore extends CMIScore {
private _scaled = "";
/**
* Constructor for cmi *.score
*/
constructor() {
super({
score_children: scorm2004_constants.score_children,
max: "",
invalidErrorCode: scorm2004_errors.READ_ONLY_ELEMENT as number,
invalidTypeCode: scorm2004_errors.TYPE_MISMATCH as number,
invalidRangeCode: scorm2004_errors.VALUE_OUT_OF_RANGE as number,
decimalRegex: scorm2004_regex.CMIDecimal,
errorClass: Scorm2004ValidationError,
});
}
/**
* Called when the API has been reset
*/
override reset(): void {
this._initialized = false;
this._scaled = "";
this._raw = "";
this._min = "";
this._max = "";
}
/**
* Getter for _scaled
* @return {string}
*/
get scaled(): string {
return this._scaled;
}
/**
* Setter for _scaled
* @param {string} scaled
*/
set scaled(scaled: string) {
if (
check2004ValidFormat(scaled, scorm2004_regex.CMIDecimal) &&
check2004ValidRange(scaled, scorm2004_regex.scaled_range)
) {
this._scaled = scaled;
}
}
/**
* toJSON for cmi *.score
*
* @return {
* {
* scaled: string,
* raw: string,
* min: string,
* max: string
* }
* }
*/
override toJSON(): {
scaled: string;
raw: string;
min: string;
max: string;
} {
this.jsonString = true;
const result = {
scaled: this.scaled,
raw: this.raw,
min: this.min,
max: this.max,
};
delete this.jsonString;
return result;
}
}