Jump to navigation

Class: SCORMStorage

Numbas.storage.SCORMStorage

new SCORMStorage()

SCORM storage object - controls saving and loading of data from the LMS.

Source:

Members

exam :Numbas.Exam

Reference to the Numbas.Exam object for the current exam.

Type:
Source:

lmsConnected :boolean

Indicates whether a true SCORM connection to an LMS exists.

Type:
Source:

mode

Mode the session started in:

  • ab-initio - starting a new attempt;
  • resume - loaded attempt in progress.
Source:

partIndices :object.<number>

Dictionary mapping Numbas.parts.partpath ids to cmi.interaction indices.

Type:
Source:

questionIndices :object.<number>

Dictionary mapping question ids (of the form qN) to cmi.objective indices.

Type:
Source:

Methods

adviceDisplayed(question)

Record that the student displayed question advice.

Parameters:
Name Type Description
question Numbas.Question
Overrides:
Source:

answerRevealed(question)

Record that the student revealed the answers to a question.

Parameters:
Name Type Description
question Numbas.Question
Overrides:
Source:

changeQuestion(question)

Call this when the student moves to a different question.

Parameters:
Name Type Description
question Numbas.Question
Overrides:
Source:

diagnosticSuspendData() → {object}

Create suspend data to do with diagnostic mode.

Returns:
Type Description
object
Source:

end()

Call this when the exam ends.

Overrides:
Source:
See:

examSuspendData() → {object}

Suspend data for the exam - all the other stuff that doesn't fit into the standard SCORM data model.

Returns:
Type Description
object
Source:

get(key) → {string}

Get a SCORM data model element.

Parameters:
Name Type Description
key string

Element name. This is prepended with cmi..

Returns:
Type Description
string
  • The value of the element.
Source:

get_student_name()

Load student's name and ID.

Overrides:
Source:

getDurationExtension() → {object}

Get an externally-set extension to the exam duration.

Returns:
Type Description
object
Overrides:
Source:

getEntry() → {string}

Get entry state: ab-initio, or resume.

Returns:
Type Description
string
Overrides:
Source:

getMode() → {string}

Get viewing mode:

  • browse - see exam info, not questions;
  • normal - sit exam;
  • review - look at completed exam.
Returns:
Type Description
string
Overrides:
Source:

getPartId(part) → {string}

Make an id string corresponding to a part, of the form qNpXgYsZ.

Parameters:
Name Type Description
part Numbas.parts.Part
Returns:
Type Description
string
Source:

getPartStorage(p) → {Numbas.storage.scorm.partTypeStorage}

Get the relevant part storage methods for the given part.

Parameters:
Name Type Description
p Numbas.parts.Part
Returns:
Type Description
Numbas.storage.scorm.partTypeStorage
Source:

getQuestionId(question) → {string}

Make an id string corresponding to a question, of the form qN, where N is the question's number.

Parameters:
Name Type Description
question Numbas.Question
Returns:
Type Description
string
Source:

getStudentID() → {string}

Get the student's ID.

Returns:
Type Description
string
Overrides:
Source:

getSuspendData() → {Numbas.storage.exam_suspend_data}

Get the suspend data from the SCORM data model.

Returns:
Type Description
Numbas.storage.exam_suspend_data
Source:

init(exam)

Initialise the SCORM data model and this storage object.

Parameters:
Name Type Description
exam Numbas.Exam
Overrides:
Source:

initPart(p)

Initialise a part - make an interaction for it, and set up correct responses.

Parameters:
Name Type Description
p Numbas.parts.Part
Overrides:
Source:

initQuestion(q)

Initialise a question - make an objective for it, and initialise all its parts.

Parameters:
Name Type Description
q Numbas.Question
Overrides:
Source:

load(exam) → {Numbas.storage.exam_suspend_data}

Get suspended exam info.

Parameters:
Name Type Description
exam Numbas.Exam
Returns:
Type Description
Numbas.storage.exam_suspend_data
Overrides:
Source:

(abstract) loadExtensionPart(part) → {Numbas.storage.part_suspend_data}

Parameters:
Name Type Description
part Numbas.parts.Part
Returns:
Type Description
Numbas.storage.part_suspend_data
Inherited From:
Source:

(abstract) loadJMEPart(part) → {Numbas.storage.part_suspend_data}

Parameters:
Name Type Description
part Numbas.parts.Part
Returns:
Type Description
Numbas.storage.part_suspend_data
Inherited From:
Source:

(abstract) loadMatrixEntryPart(part) → {Numbas.storage.part_suspend_data}

Parameters:
Name Type Description
part Numbas.parts.Part
Returns:
Type Description
Numbas.storage.part_suspend_data
Inherited From:
Source:

(abstract) loadMultipleResponsePart(part) → {Numbas.storage.part_suspend_data}

Parameters:
Name Type Description
part Numbas.parts.Part
Returns:
Type Description
Numbas.storage.part_suspend_data
Inherited From:
Source:

(abstract) loadNumberEntryPart(part) → {Numbas.storage.part_suspend_data}

Parameters:
Name Type Description
part Numbas.parts.Part
Returns:
Type Description
Numbas.storage.part_suspend_data
Inherited From:
Source:

loadPart(part) → {Numbas.storage.part_suspend_data}

Get suspended info for a part.

Parameters:
Name Type Description
part Numbas.parts.Part
Returns:
Type Description
Numbas.storage.part_suspend_data
Overrides:
Source:

(abstract) loadPatternMatchPart(part) → {Numbas.storage.part_suspend_data}

Parameters:
Name Type Description
part Numbas.parts.Part
Returns:
Type Description
Numbas.storage.part_suspend_data
Inherited From:
Source:

loadQuestion(question) → {Numbas.storage.question_suspend_data}

Get suspended info for a question.

Parameters:
Name Type Description
question Numbas.Question
Returns:
Type Description
Numbas.storage.question_suspend_data
Overrides:
Source:

loadVariables(vobj, scope) → {object.<Numbas.jme.token>}

Load a dictionary of JME variables.

Parameters:
Name Type Description
vobj object.<JME>
scope Numbas.jme.Scope
Returns:
Type Description
object.<Numbas.jme.token>
Source:

partAnswered(part)

Call this when a part is answered.

Parameters:
Name Type Description
part Numbas.parts.Part
Overrides:
Source:

partPath(part) → {string}

The 'interactions.N.' prefix for the given part's datamodel elements.

Parameters:
Name Type Description
part Numbas.parts.Part
Returns:
Type Description
string
Source:

partSuspendData(part) → {Numbas.storage.part_suspend_data}

Create suspend data object for a part.

Parameters:
Name Type Description
part Numbas.parts.Part
Returns:
Type Description
Numbas.storage.part_suspend_data
Source:
See:

pause()

Call this when the exam is paused.

Overrides:
Source:
See:

questionSubmitted(question)

Record that a question has been submitted.

Parameters:
Name Type Description
question Numbas.Question
Overrides:
Source:

questionSuspendData(question) → {Numbas.storage.question_suspend_data}

Create suspend data object for a question.

Parameters:
Name Type Description
question Numbas.Question
Returns:
Type Description
Numbas.storage.question_suspend_data
Source:
See:

resume()

Call this when the exam is resumed.

Overrides:
Source:
See:

save()

Save SCORM data - call the SCORM commit method to make sure the data model is saved to the server.

Overrides:
Source:

saveExam(exam)

Save exam-level details.

Parameters:
Name Type Description
exam Numbas.Exam
Overrides:
Source:

saveQuestion(question)

Save details about a question - save score and success status.

Parameters:
Name Type Description
question Numbas.Question
Source:

set(key, value) → {boolean}

Set a SCORM data model element.

Parameters:
Name Type Description
key string

Element name. This is prepended with cmi..

value string

Element value.

Returns:
Type Description
boolean
  • Did the call succeed?
Source:

setSessionTime()

Record duration of the current session.

Source:

setSuspendData()

Save the exam suspend data using the cmi.suspend_data string.

Source:

start()

Call this when the exam is started (when Numbas.Exam#begin runs, not when the page loads).

Overrides:
Source:

stepsHidden(part)

Record that the student hid the steps for a part.

Parameters:
Name Type Description
part Numbas.parts.Part
Overrides:
Source:

stepsShown(part)

Record that the student showed the steps for a part.

Parameters:
Name Type Description
part Numbas.parts.Part
Overrides:
Source:

storeStagedAnswer(part)

Save the staged answer for a part. Note: this is not part of the SCORM standard, so can't rely on this being saved.

Parameters:
Name Type Description
part Numbas.parts.Part
Overrides:
Source:

variablesSuspendData(variables, scope) → {object.<JME>}

Create suspend data object for a dictionary of JME variables.

Parameters:
Name Type Description
variables object.<Numbas.jme.token>
scope Numbas.jme.Scope
Returns:
Type Description
object.<JME>
Source:
See: