diff --git a/js/h5p-x-api-event.js b/js/h5p-x-api-event.js index 98b287a..1653b0c 100644 --- a/js/h5p-x-api-event.js +++ b/js/h5p-x-api-event.js @@ -18,18 +18,40 @@ H5P.XAPIEvent.prototype.constructor = H5P.XAPIEvent; * * @param {number} score * @param {number} maxScore + * @param {object} instance + * @param {boolean} completion + * @param {boolean} success */ -H5P.XAPIEvent.prototype.setScoredResult = function (score, maxScore, instance) { - this.data.statement.result = { - 'score': { - 'min': 0, - 'max': maxScore, - 'raw': score +H5P.XAPIEvent.prototype.setScoredResult = function (score, maxScore, instance, completion, success) { + this.data.statement.result = {}; + + if (typeof score !== 'undefined') { + if (typeof maxScore === 'undefined') { + this.data.statement.result.score = {'raw': score}; + } + else { + this.data.statement.result.score = { + 'min': 0, + 'max': maxScore, + 'raw': score + }; + if (maxScore > 0) { + this.data.statement.result.score.scaled = Math.round(score / maxScore * 10000) / 10000; + } } - }; - if (maxScore > 0) { - this.data.statement.result.score.scaled = Math.round(score / maxScore * 10000) / 10000; } + + if (typeof completion === 'undefined') { + this.data.statement.result.completion = true; + } + else { + this.data.statement.result.completion = completion; + } + + if (typeof success !== 'undefined') { + this.data.statement.result.success = success; + } + if (instance && instance.activityStartTime) { var duration = Math.round((Date.now() - instance.activityStartTime ) / 10) / 100; // xAPI spec allows a precision of 0.01 seconds