Merge pull request #4 from garemoko/garemoko-issue-2
Add support for result.success & completionpull/6/head
commit
e7fe53c235
|
@ -18,18 +18,40 @@ H5P.XAPIEvent.prototype.constructor = H5P.XAPIEvent;
|
||||||
*
|
*
|
||||||
* @param {number} score
|
* @param {number} score
|
||||||
* @param {number} maxScore
|
* @param {number} maxScore
|
||||||
|
* @param {object} instance
|
||||||
|
* @param {boolean} completion
|
||||||
|
* @param {boolean} success
|
||||||
*/
|
*/
|
||||||
H5P.XAPIEvent.prototype.setScoredResult = function (score, maxScore, instance) {
|
H5P.XAPIEvent.prototype.setScoredResult = function (score, maxScore, instance, completion, success) {
|
||||||
this.data.statement.result = {
|
this.data.statement.result = {};
|
||||||
'score': {
|
|
||||||
|
if (typeof score !== 'undefined') {
|
||||||
|
if (typeof maxScore === 'undefined') {
|
||||||
|
this.data.statement.result.score = {'raw': score};
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.data.statement.result.score = {
|
||||||
'min': 0,
|
'min': 0,
|
||||||
'max': maxScore,
|
'max': maxScore,
|
||||||
'raw': score
|
'raw': score
|
||||||
}
|
|
||||||
};
|
};
|
||||||
if (maxScore > 0) {
|
if (maxScore > 0) {
|
||||||
this.data.statement.result.score.scaled = Math.round(score / maxScore * 10000) / 10000;
|
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) {
|
if (instance && instance.activityStartTime) {
|
||||||
var duration = Math.round((Date.now() - instance.activityStartTime ) / 10) / 100;
|
var duration = Math.round((Date.now() - instance.activityStartTime ) / 10) / 100;
|
||||||
// xAPI spec allows a precision of 0.01 seconds
|
// xAPI spec allows a precision of 0.01 seconds
|
||||||
|
|
|
@ -65,9 +65,16 @@ H5P.EventDispatcher.prototype.createXAPIEventTemplate = function (verb, extra) {
|
||||||
* Will be set as the 'raw' value of the score object
|
* Will be set as the 'raw' value of the score object
|
||||||
* @param {number} maxScore
|
* @param {number} maxScore
|
||||||
* will be set as the "max" value of the score object
|
* will be set as the "max" value of the score object
|
||||||
|
* @param {boolean} success
|
||||||
|
* will be set as the "success" value of the result object
|
||||||
*/
|
*/
|
||||||
H5P.EventDispatcher.prototype.triggerXAPICompleted = function (score, maxScore) {
|
H5P.EventDispatcher.prototype.triggerXAPICompleted = function (score, maxScore, success) {
|
||||||
this.triggerXAPIScored(score, maxScore, 'completed');
|
var verb = 'completed';
|
||||||
|
if (typeof success !== 'undefined') {
|
||||||
|
if (success) {verb = "passed";}
|
||||||
|
else {verb = "failed";}
|
||||||
|
}
|
||||||
|
this.triggerXAPIScored(score, maxScore, verb, true, success);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -80,9 +87,9 @@ H5P.EventDispatcher.prototype.triggerXAPICompleted = function (score, maxScore)
|
||||||
* @param {string} verb
|
* @param {string} verb
|
||||||
* Short form of adl verb
|
* Short form of adl verb
|
||||||
*/
|
*/
|
||||||
H5P.EventDispatcher.prototype.triggerXAPIScored = function (score, maxScore, verb) {
|
H5P.EventDispatcher.prototype.triggerXAPIScored = function (score, maxScore, verb, completion, success) {
|
||||||
var event = this.createXAPIEventTemplate(verb);
|
var event = this.createXAPIEventTemplate(verb);
|
||||||
event.setScoredResult(score, maxScore, this);
|
event.setScoredResult(score, maxScore, this, completion, success);
|
||||||
this.trigger(event);
|
this.trigger(event);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue