Forum Discussion
ScottDellinger
8 years agoCommunity Member
How to access xAPI/Tin Can LMS variables in JavaScript
When Storyline 360 publishes a SCORM 1.2 or 2004 package, an entire library of SCORM JavaScript functions are created and can be used inside Storyline (for instance: SCORM_CallLMSGetValue("cmi.core....
ScottDellinger
8 years agoCommunity Member
This ended up working for me (this is the "passed" version... I also have a failed version):
var player = GetPlayer();
var iascore = { raw: player.GetVar("FinalPercent"),min:0,max:100 };
var iatc = new TinCan({url: window.location.href});
var stmt = { verb: "passed", inProgress: false, result: { } };
stmt.result.success = true;
stmt.result.score = iascore;
iatc.sendStatement(stmt);
I used a custom variable in Storyline called "FinalPercent" to obtain the Results.ScorePercent and report it back to the LMS.
- ScotTaylor6 years agoCommunity Member
I am trying to achieve something similar in xAPI. In SCORM I would use the following code to pass score, success status and complete.
var player = GetPlayer();
var passPercent = player.GetVar("passPercent");
var percentScore = player.GetVar("percentScore");function findLMSAPI(win) {
if (win.hasOwnProperty("GetStudentID")) return win;
else if (win.parent == win) return null;
else return findLMSAPI(win.parent);
}var lmsAPI = findLMSAPI(this);
lmsAPI.SetScore(percentScore, 100, 0);
if (percentScore >= passPercent){
SCORM2004_CallSetValue("cmi.success_status", "passed");
}else{
SCORM2004_CallSetValue("cmi.success_status", "failed");
}lmsAPI.SetReachedEnd();
With xAPI I am attempting to use the following code based on above :
var player = GetPlayer();var passPercent = {raw: player.GetVar("passPercent")};var percentScore = {raw: player.GetVar("percentScore")};var iascore = { raw: player.GetVar("percentScore"),min:0,max:100};var iatc = new TinCan({url: window.location.href});var passStmt = { verb: "passed", inProgress: false, result:{ } };var failStmt = { verb: "failed", inProgress: false, result:{ } };if (percentScore >= passPercent){passStmt.result.success = true;passStmt.result.score = iascore;iatc.sendStatement(passStmt);}else{failStmt.result.success= false;failStmt.result.score = iascore;iatc.sendStatement(failStmt);}Any idea where I am making a mistake? I would greatly appreciate any insights.