Skip to content

Commit 7ce8f7c

Browse files
rtibblesbotclaude
andcommitted
Add an associate item to the QTI demo page
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
1 parent 89e06ba commit 7ce8f7c

1 file changed

Lines changed: 50 additions & 0 deletions

File tree

  • contentcuration/contentcuration/frontend/channelEdit/pages

‎contentcuration/contentcuration/frontend/channelEdit/pages/qtiDemoData.js‎

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,50 @@ export const ORDERING_ITEM_XML = `<?xml version="1.0" encoding="UTF-8"?>
215215
</qti-item-body>
216216
</qti-assessment-item>`;
217217

218+
/**
219+
* Demo item 7: associate interaction — learner connects countries to capitals.
220+
* Uses cardinality="multiple" and base-type="pair" per QTI 3.0 §3.2.13.
221+
*/
222+
export const ASSOCIATE_ITEM_XML = `<?xml version="1.0" encoding="UTF-8"?>
223+
<qti-assessment-item
224+
xmlns="http://www.imsglobal.org/xsd/imsqtiasi_v3p0"
225+
identifier="item-associate"
226+
title="Match each country with its capital city"
227+
adaptive="false"
228+
time-dependent="false"
229+
xml:lang="en"
230+
>
231+
<qti-response-declaration
232+
identifier="RESPONSE"
233+
cardinality="multiple"
234+
base-type="pair"
235+
>
236+
<qti-correct-response>
237+
<qti-value>choice_kenya choice_nairobi</qti-value>
238+
<qti-value>choice_japan choice_tokyo</qti-value>
239+
<qti-value>choice_brazil choice_brasilia</qti-value>
240+
</qti-correct-response>
241+
</qti-response-declaration>
242+
243+
<qti-item-body>
244+
<qti-associate-interaction
245+
response-identifier="RESPONSE"
246+
shuffle="true"
247+
max-associations="3"
248+
>
249+
<qti-prompt><p>Match each country with its capital city:</p></qti-prompt>
250+
<qti-simple-associable-choice identifier="choice_kenya" match-max="1">Kenya</qti-simple-associable-choice>
251+
<qti-simple-associable-choice identifier="choice_nairobi" match-max="1">Nairobi</qti-simple-associable-choice>
252+
<qti-simple-associable-choice identifier="choice_japan" match-max="1">Japan</qti-simple-associable-choice>
253+
<qti-simple-associable-choice identifier="choice_tokyo" match-max="1">Tokyo</qti-simple-associable-choice>
254+
<qti-simple-associable-choice identifier="choice_brazil" match-max="1">Brazil</qti-simple-associable-choice>
255+
<qti-simple-associable-choice identifier="choice_brasilia" match-max="1">Brasília</qti-simple-associable-choice>
256+
<qti-simple-associable-choice identifier="choice_mombasa" match-max="1">Mombasa</qti-simple-associable-choice>
257+
<qti-simple-associable-choice identifier="choice_osaka" match-max="1">Osaka</qti-simple-associable-choice>
258+
</qti-associate-interaction>
259+
</qti-item-body>
260+
</qti-assessment-item>`;
261+
218262
/**
219263
* Hardcoded items covering different states:
220264
* - item-1: single-select choice interaction
@@ -223,6 +267,7 @@ export const ORDERING_ITEM_XML = `<?xml version="1.0" encoding="UTF-8"?>
223267
* - item-text-entry: string text-entry with case-sensitive answers
224268
* - item-free-response: free-response text-entry (no correct answer)
225269
* - item-ordering: ordering interaction (planets by distance from the Sun)
270+
* - item-associate: associate interaction (countries to capitals, with distractors)
226271
*/
227272
export const INITIAL_ASSESSMENTS = [
228273
{
@@ -255,4 +300,9 @@ export const INITIAL_ASSESSMENTS = [
255300
type: AssessmentItemTypes.QTI,
256301
raw_data: ORDERING_ITEM_XML,
257302
},
303+
{
304+
assessment_id: 'demo-item-associate',
305+
type: AssessmentItemTypes.QTI,
306+
raw_data: ASSOCIATE_ITEM_XML,
307+
},
258308
];

0 commit comments

Comments
 (0)