@examplary/pci-runtime
v0.0.7
Published
PCI runtime for Examplary question type components.
Readme
Examplary PCI runtime
A PCI (Portable Custom Interaction) runtime for Examplary question type components. This package provides the necessary runtime environment to load Examplary custom question types as QTI 3.0 PCI components.
Usage
Define a PCI QTI item:
<qti-assessment-item
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.imsglobal.org/xsd/imsqtiasi_v3p0"
xsi:schemalocation="http://www.imsglobal.org/xsd/imsqtiasi_v3p0 https://purl.imsglobal.org/spec/qti/v3p0/schema/xsd/imsqti_asiv3p0_v1p0.xsd"
identifier="question-1"
title="Sample Question"
xml:lang="en-US"
adaptive="false"
time-dependent="false"
tool-name="Examplary"
tool-version="1.0.0"
>
<qti-response-declaration identifier="RESPONSE" cardinality="single" base-type="string" />
<qti-response-processing template="https://purl.imsglobal.org/spec/qti/v3p0/rptemplates/match_correct" />
<qti-item-body>
<p>Hello, world!</p>
<qti-portable-custom-interaction
response-identifier="RESPONSE"
module="my-question-type"
custom-interaction-type-identifier="urn:fdc:examplary.ai:pci:com.example.my-question-type"
data-question="{... JSON data ...}"
class="examplary-pci-runtime"
>
<qti-interaction-markup></qti-interaction-markup>
</qti-portable-custom-interaction>
</qti-item-body>
</qti-assessment-item>Make sure to set up a module mapping file (usually called modules/module_resolution.js with identifier pci_module_resolution) to map the module attribute to the actual JavaScript module that implements the question type:
{
"waitSeconds": 60,
"paths": {
"examplaryPciRuntime": "modules/runtime.js",
"my-question-type": "modules/my-question-type.js"
}
}Where modules/runtime.js is a copy of the runtime code, and modules/my-question-type.js is your custom question type implementation:
define(['qtiCustomInteractionContext', 'examplaryPciRuntime'], function (qtiCustomInteractionContext, examplaryPciRuntime) {
return examplaryPciRuntime.register({
qtiCustomInteractionContext,
id: 'com.example.my-question-type',
language: 'en',
translations: {
'placeholder': 'Type your answer here...'
},
component: '(assessment component compiled JS here)',
stylesheet: '(assessment component compiled CSS here, optional)'
});
});