update
This commit is contained in:
@@ -0,0 +1,241 @@
|
||||
// JavaScript Document
|
||||
var startDate = 0;
|
||||
var debug = false;
|
||||
pipwerks.debug.isActive = debug;
|
||||
pipwerks.SCORM.handleExitMode = false; // super importante para el LMS de succesFactor
|
||||
/*
|
||||
Se especifica la version de scorm a usar, se esta usando el warpper de pipwerks
|
||||
*/
|
||||
pipwerks.SCORM.version = "1.2";
|
||||
var unloaded = false;
|
||||
/**
|
||||
* Descripción funcion que se encargar de enviar los datos al lms
|
||||
* @method unloadHandler
|
||||
* @return
|
||||
*/
|
||||
function unloadHandler() {
|
||||
if (pipwerks.SCORM.connection.isActive) {
|
||||
if (!unloaded) {
|
||||
var tiempo = computeTime();
|
||||
pipwerks.SCORM.set("cmi.core.session_time", tiempo);
|
||||
pipwerks.SCORM.save(); //save all data that has already been sent
|
||||
pipwerks.SCORM.quit(); //close the SCORM API connection properly
|
||||
unloaded = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Descripción: Obtiene la ultima pantalla visitada
|
||||
* @method getLocation
|
||||
* @return visitada
|
||||
*/
|
||||
function getLocation() {
|
||||
if (pipwerks.SCORM.connection.isActive) {
|
||||
var visitada = eval(pipwerks.SCORM.get("cmi.core.lesson_location")) || 0;
|
||||
return visitada;
|
||||
} else {
|
||||
if (sessionStorage.getItem("offlinemp.intentos")) {
|
||||
return Number(sessionStorage.getItem("offlinemp.intentos"));
|
||||
}else{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Descripción: Envia al LMS la pantlla actual o visitada
|
||||
* @return
|
||||
* @method setLocation
|
||||
* @param loc es un string con el valor de la pantalla a guardar
|
||||
* @return
|
||||
*/
|
||||
function setLocation(loc) {
|
||||
if (pipwerks.SCORM.connection.isActive) {
|
||||
scorm = pipwerks.SCORM;
|
||||
if (scorm.connection.isActive) {
|
||||
var current = getLocation() || 0;
|
||||
if (Number(current) < Number(loc)) {
|
||||
var success = pipwerks.SCORM.set("cmi.core.lesson_location", loc);
|
||||
pipwerks.SCORM.save(); //save all data that has already been sent
|
||||
}
|
||||
}
|
||||
} else {
|
||||
sessionStorage.setItem("offlinemp.intentos", loc);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Descripción: Envia al LMS la calificación reportada por el sco
|
||||
* @return
|
||||
* @method setScore
|
||||
* @param score es un string con el valor calificacion en porcentaje
|
||||
* @return
|
||||
*/
|
||||
function setScore(score) {
|
||||
if (pipwerks.SCORM.connection.isActive) {
|
||||
if( score >= getScore() ){
|
||||
pipwerks.SCORM.set("cmi.core.score.raw", score);
|
||||
pipwerks.SCORM.save();
|
||||
}
|
||||
}else{
|
||||
if( score >= getScore() ){
|
||||
sessionStorage.setItem("offlinemp.score", score);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function getScore() {
|
||||
if (pipwerks.SCORM.connection.isActive) {
|
||||
var currentScore = pipwerks.SCORM.get("cmi.core.score.raw") || 0;
|
||||
if (currentScore == "") {
|
||||
currentScore = 0;
|
||||
}
|
||||
return Number(currentScore);
|
||||
} else {
|
||||
if (sessionStorage.getItem("offlinemp.score")) {
|
||||
return Number(sessionStorage.getItem("offlinemp.score"));
|
||||
}else{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
/**
|
||||
* Descripción: Inica el conteo del tiempo en el sco
|
||||
* @return
|
||||
* @method startTimer
|
||||
* @return
|
||||
*/
|
||||
function startTimer() {
|
||||
startDate = new Date().getTime();
|
||||
}
|
||||
/**
|
||||
* Descripción: calucla el tiempo que el usuario permance en el sco
|
||||
* @method computeTime
|
||||
* @return formattedTime
|
||||
*/
|
||||
function computeTime() {
|
||||
var formattedTime = "00:00:00.0";
|
||||
if (startDate != 0) {
|
||||
var currentDate = new Date().getTime();
|
||||
var elapsedSeconds = ((currentDate - startDate) / 1000);
|
||||
formattedTime = convertTotalSeconds(elapsedSeconds);
|
||||
}
|
||||
return formattedTime;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Descripción: convierte el tiempo en segundos
|
||||
* @method convertTotalSeconds
|
||||
* @param ts de tipo time
|
||||
* @return rtnVal
|
||||
*/
|
||||
function convertTotalSeconds(ts) {
|
||||
var Sec = (ts % 60);
|
||||
ts -= Sec;
|
||||
var tmp = (ts % 3600);
|
||||
ts -= tmp;
|
||||
if ((ts % 3600) != 0) var Hour = "00";
|
||||
else var Hour = "" + (ts / 3600);
|
||||
if ((tmp % 60) != 0) var Min = "00";
|
||||
else var Min = "" + (tmp / 60);
|
||||
Sec = "" + Sec
|
||||
Sec = Sec.substring(0, Sec.indexOf("."))
|
||||
if (Hour.length < 2) Hour = "0" + Hour;
|
||||
if (Min.length < 2) Min = "0" + Min;
|
||||
if (Sec.length < 2) Sec = "0" + Sec;
|
||||
var rtnVal = Hour + ":" + Min + ":" + Sec;
|
||||
return rtnVal;
|
||||
}
|
||||
|
||||
/**
|
||||
* Descripción: envia al lms valores para guardar en suspend_data
|
||||
* @return
|
||||
* @method setSuspendData
|
||||
* @param data de tipo string
|
||||
* @return
|
||||
*/
|
||||
function setSuspendData(data) {
|
||||
if (pipwerks.SCORM.connection.isActive) {
|
||||
var success = pipwerks.SCORM.set("cmi.suspend_data", data);
|
||||
pipwerks.SCORM.save();
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Descripción: obtiene el valores del lms para suspend_data
|
||||
* @method getSuspendData
|
||||
* @return CallExpression
|
||||
*/
|
||||
function getSuspendData() {
|
||||
if (pipwerks.SCORM.connection.isActive) {
|
||||
var _data = pipwerks.SCORM.get("cmi.suspend_data");
|
||||
if (_data == "") {
|
||||
return null;
|
||||
} else {
|
||||
return _data;
|
||||
}
|
||||
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Description
|
||||
* @method getStudentName
|
||||
* @return CallExpression
|
||||
*/
|
||||
function getStudentName() {
|
||||
if (pipwerks.SCORM.connection.isActive) {
|
||||
var student_name = pipwerks.SCORM.get("cmi.core.student_name");
|
||||
if (!student_name) {
|
||||
student_name = "";
|
||||
}
|
||||
return student_name;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
cmi.core.lesson_status - indicates SCO completion -
|
||||
returns one of the following: "passed", "completed", "failed", "incomplete",
|
||||
"browsed", or "not attempted"
|
||||
*/
|
||||
function getLessonStatus() {
|
||||
if (pipwerks.SCORM.connection.isActive) {
|
||||
return pipwerks.SCORM.get("cmi.core.lesson_status");
|
||||
} else {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
function setLessonStatus(status) {
|
||||
if (pipwerks.SCORM.connection.isActive) {
|
||||
pipwerks.SCORM.set("cmi.core.lesson_status", status);
|
||||
pipwerks.SCORM.save(); //save all data that has already been sent
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
function iniciarScorm() {
|
||||
var success = pipwerks.SCORM.init();
|
||||
var status = "";
|
||||
startTimer();
|
||||
if (success) {
|
||||
status = pipwerks.SCORM.get("cmi.core.lesson_status");
|
||||
if (!(status.localeCompare("completed") == 0 || status.localeCompare("passed") == 0)) {
|
||||
success = pipwerks.SCORM.set("cmi.core.lesson_status", "incomplete");
|
||||
if (success) {
|
||||
pipwerks.SCORM.save();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//window.addEventListener("load", iniciarScorm);
|
||||
window.addEventListener("beforeunload", unloadHandler);
|
||||
window.addEventListener("unload", unloadHandler);
|
||||
Reference in New Issue
Block a user