Content and scoring
Multi Trait Rubric
Open the rubric to see each trait's levels.
Delivery
Respond, review and evaluate
Authoring
Visual editor available
No print view in this package

Try the interaction
Rubrics describe manual scoring criteria. This example starts in instructor view.
Live example: @pie-element/multi-trait-rubric@9.0.4 · players 1.0.0-beta.5.
Open all examples for this element →Use it in an item
Map the tag to an exact package version and match the model ID to the markup. The item player loads the views. You can use any frontend framework.
{
"elements": {
"multi-trait-rubric": "@pie-element/multi-trait-rubric@9.0.4"
},
"markup": "<multi-trait-rubric id=\"example\"></multi-trait-rubric>",
"models": [
{
"id": "example",
"element": "multi-trait-rubric",
"visibleToStudent": true,
"halfScoring": false,
"pointLabels": true,
"description": false,
"standards": false,
"scales": [
{
"maxPoints": 4,
"scorePointsLabels": [
"<div>Non-Scorable</div>",
"<div>Developing</div>",
"<div>Progressing</div>",
"<div>Effective</div>"
],
"traitLabel": "Trait",
"traits": [
{
"name": "<div>Ideas</div>",
"standards": [],
"description": "the main message",
"scorePointsDescriptors": [
"<div>Student's response is blank, not in English, not legible, or does not respond to the prompt.</div>",
"<div>Topic undefined and/or difficult to followDetails are unclear</div>",
"<div>Topic too broadDetails are limited</div>",
"<div>Writing stays on topicComplete details given</div>"
]
},
{
"name": "<div>Organization</div>",
"standards": [],
"description": "the internal structure of the piece",
"scorePointsDescriptors": [
"<div>Student's response is blank, not in English, not legible, or does not respond to the prompt.</div>",
"<div>Does not have a beginning, middle and/or endDoes not have a lead and/or conclusionTransitions confusing and/or not presentNot written in logical orderNo sign of paragraphing / incorrect paragraphing</div>",
"<div>Weak beginning, middle and endHas evidence of a lead and/or conclusion but missing elementsTransitions are used sometimesSome logical orderMost paragraphing incorrect</div>",
"<div>Has an acceptable beginning, middle and endIncludes a lead and conclusionTransitions are used correctlyMostly logical orderMostly correct paragraphing</div>"
]
}
]
}
],
"excludeZero": true,
"maxPointsEnabled": true,
"addScaleEnabled": true
}
]
} Responses and scoring
This element defines manual scoring criteria. Your application supplies the scoring workflow and records the grade.
Model, configuration and session reference
The model holds content, configuration controls the editor, and the session holds the response. Fields below come from generated JSON Schemas.
Schema version: @pie-element/multi-trait-rubric@9.0.6. Example version: 9.0.4. Use the schema matching your content. Schema checks cover data structure; controller validation checks authoring rules.
model fields (17)
| Field | Type | Meaning | Default / values |
|---|---|---|---|
idRequired | string | Identifier to identify the Pie Element in html markup, Must be unique within a pie item config. | — |
elementRequired | string | The html Element tag name: the key in the item config's `elements` map, e.g. "multiple-choice" | — |
accessibilityCatalogs | array | QTI-aligned accessibility catalogs whose cards dock to content nodes by `data-catalog-idref` | — |
halfScoring | boolean | Indicates if half scoring is enabled | false |
pointLabels | boolean | Indicates if point labels should be shown | true |
visibleToStudent | boolean | Indicates if should be visible to student | true |
description | boolean | Indicates if description should be shown | false |
standards | boolean | Indicates if standards should be shown | false |
excludeZero | boolean | Indicates if scoring should start at 0 or 1 | false |
spellCheckEnabled | boolean | Indicates if spellcheck is enabled for the author. Default value is true | true |
maxPointsEnabled | boolean | Shows the max points dropdown of each scale to the author | true |
addScaleEnabled | boolean | Shows the author's Add Scale button | true |
scalesRequired | array | scales | — |
animationsDisabled | boolean | Renders the rubric expanded, without the show/hide toggle; print sets it | — |
arrowsDisabled | boolean | Hides the scales' scroll arrows; print sets it | — |
language | string | Language of the rubric's labels, e.g. "en-US" or "es-ES" | — |
extraCSSRules | ExtraCSSRules | Host-supplied CSS scoped to the element | — |
Named object types
AccessibilityCatalog
| Field | Type | Meaning | Default / values |
|---|---|---|---|
identifierRequired | string | See the named type or the example model. | — |
cardsRequired | array | See the named type or the example model. | — |
CatalogCard
| Field | Type | Meaning | Default / values |
|---|---|---|---|
catalogRequired | string | See the named type or the example model. | — |
language | string | See the named type or the example model. | — |
content | string | See the named type or the example model. | — |
payload | CatalogCardPayload | See the named type or the example model. | — |
SignLanguageCardPayload
| Field | Type | Meaning | Default / values |
|---|---|---|---|
signLang | string | Language tag for the signed translation — BCP 47, which admits ISO 639-3 subtags for languages with no 639-1/2 code. "ase" is ASL, matching QTI 3 `xml:lang`. This is the language of the *adaptation*, not the item's base content language (AfA/PNP's `languageOfAdaptation`). The distinction is load bearing: a Spanish item's signed alternate is LSM, not ASL, so `signLang` must never be inferred from the item or assessment content language. Optional, and redundant on almost every card. The card's `language` states the same code and is the only field pie-players resolves a card on — resolution runs before anything knows the card is a signing card, so it can only key on the generic field — and the player falls back to it when this is absent. Author it only where the two differ: a card tagged with the item's content language (`language: 'en-US'`, `signLang: 'ase'`) so resolution reaches it by the default-language rung. The pie-api-aws importer emits `language` alone. | — |
mediaRequired | MediaAssetRef | See the named type or the example model. | — |
fragment | MediaFragmentRange | See the named type or the example model. | — |
MediaAssetRef
| Field | Type | Meaning | Default / values |
|---|---|---|---|
versionRequired | number | See the named type or the example model. | — |
idRequired | string | See the named type or the example model. | — |
kindRequired | MediaKind | See the named type or the example model. | — |
sourcesRequired | array | See the named type or the example model. | — |
poster | string | See the named type or the example model. | — |
thumbnail | string | See the named type or the example model. | — |
durationSeconds | number | See the named type or the example model. | — |
tracks | array | See the named type or the example model. | — |
transcript | TranscriptRef | See the named type or the example model. | — |
label | string | See the named type or the example model. | — |
description | string | See the named type or the example model. | — |
lang | string | Language of the asset itself, as authored metadata. Sign-language cards leave it unset: the card's `language` already states the adaptation language, and a second copy is a second thing to keep in agreement. | — |
MediaSource
| Field | Type | Meaning | Default / values |
|---|---|---|---|
srcRequired | string | See the named type or the example model. | — |
type | string | MIME type, e.g. "video/mp4". | — |
width | number | See the named type or the example model. | — |
height | number | See the named type or the example model. | — |
bitrate | number | See the named type or the example model. | — |
TextTrackRef
| Field | Type | Meaning | Default / values |
|---|---|---|---|
srcRequired | string | See the named type or the example model. | — |
kindRequired | string | See the named type or the example model. | —["captions","subtitles","descriptions","chapters","metadata"] |
langRequired | string | See the named type or the example model. | — |
labelRequired | string | See the named type or the example model. | — |
default | boolean | See the named type or the example model. | — |
TranscriptRef
| Field | Type | Meaning | Default / values |
|---|---|---|---|
src | string | See the named type or the example model. | — |
html | string | See the named type or the example model. | — |
plainText | string | See the named type or the example model. | — |
lang | string | See the named type or the example model. | — |
MediaFragmentRange
| Field | Type | Meaning | Default / values |
|---|---|---|---|
startSecondsRequired | number | See the named type or the example model. | — |
endSeconds | number | See the named type or the example model. | — |
SpokenAudioCardPayload
| Field | Type | Meaning | Default / values |
|---|---|---|---|
mediaRequired | MediaAssetRef | See the named type or the example model. | — |
fragment | MediaFragmentRange | See the named type or the example model. | — |
Scale
| Field | Type | Meaning | Default / values |
|---|---|---|---|
maxPointsRequired | number | Indicates max limit for scoring points | — |
scorePointsLabelsRequired | array | Score labels. Starting from 0 to max. | — |
traitLabelRequired | string | Trait label | — |
traitsRequired | array | Traits | — |
Trait
| Field | Type | Meaning | Default / values |
|---|---|---|---|
nameRequired | string | Trait name | — |
standardsRequired | array | Trait standards | — |
descriptionRequired | string | Trait description | — |
scorePointsDescriptorsRequired | array | Score point descriptors. Starting from 0 to max. | — |
ExtraCSSRules
| Field | Type | Meaning | Default / values |
|---|---|---|---|
names | array | See the named type or the example model. | — |
rules | string | See the named type or the example model. | — |
configuration fields (28)
| Field | Type | Meaning | Default / values |
|---|---|---|---|
baseInputConfiguration | EditableHtmlConfigureProp | Base editable html input configuration regarding plugins that are enabled/disabled E.g. audio, video, image | — |
expandedInput | EditableHtmlPluginConfigure | Expanded input configurations: only `inputConfiguration` is read, for the standards, description and score point descriptor editors | — |
labelInput | EditableHtmlPluginConfigure | Label input configurations: only `inputConfiguration` is read, for the trait name, trait label and score point label editors | — |
excludeZeroDialogBoxContent | DialogContent | Not read by the element: the dialog shows its built-in text | — |
includeZeroDialogBoxContent | DialogContent | Not read by the element: the dialog shows its built-in text | — |
deleteScaleDialogBoxContent | DialogContent | Not read by the element: the dialog shows its built-in text | — |
maxPointsDialogBoxContent | DialogContent | Not read by the element: the dialog shows its built-in text | — |
settingsPanelDisabled | boolean | Indicates if the settings panel is not available | — |
showExcludeZero | ConfigureProp | Configuration for Excluding Zero Column | — |
showScorePointLabels | ConfigureProp | Configuration for Showing Score Point Labels | — |
showDescription | ConfigureProp | Configuration for Showing Description | — |
showVisibleToStudent | ConfigureProp | Configuration for Showing Multi-trait-rubric to Students | — |
showHalfScoring | ConfigureProp | Configuration for Showing Half Scoring Indicator | — |
spellCheck | ConfigurePropWithEnabled | Configuration for the author's spellcheck: `enabled` is not read, the model's `spellCheckEnabled` sets it | — |
showStandards | ConfigureProp | Configuration for showing the Standards column | — |
showLevelTagInput | ConfigurePropWithEnabled | Configuration for showing the Level Tag Input; `enabled` shows it | — |
dragAndDrop | ConfigurePropWithEnabled | Configuration for allowing drag & drop per traits; `enabled` allows it | — |
showMaxPoint | ConfigureProp | Configuration for the Settings Panel toggle of the model's `maxPointsEnabled` | — |
addScale | ConfigureProp | Configuration for the Settings Panel toggle of the model's `addScaleEnabled` | — |
width | string | How large (in px) should multi-trait-rubric be; without it the rubric takes the container's width | — |
contentDimensions | ContentDimensions | Dimensions of the authoring container | — |
minNoOfTraits | number | Minimum number of traits | 1 |
maxNoOfTraits | number | Maximum number of traits | 10 |
minNoOfScales | number | Minimum number of scales | 1 |
maxNoOfScales | number | Maximum number of scales | 10 |
defaultTraitLabel | string | The default trait label for new created scales. If it's not defined, it will default to the label of the first trait. | "Trait" |
mathMlOptions | ConfigureMathMLProp | Configuration for editable-html | — |
maxMaxPoints | number | Indicates the max limit for scoring points | 10 |
Named object types
EditableHtmlConfigureProp
| Field | Type | Meaning | Default / values |
|---|---|---|---|
math | EditableHtmlButtonConfigure | See the named type or the example model. | — |
audio | EditableHtmlButtonConfigure | See the named type or the example model. | — |
video | EditableHtmlButtonConfigure | See the named type or the example model. | — |
image | EditableHtmlButtonConfigure | See the named type or the example model. | — |
customPlugins | array | An array of objects that determine custom plugins. A custom plugin is an object which determines how the button will look like (icon) and the event name that will be triggered when the button gets pressed (event). | — |
blockquote | EditableHtmlButtonConfigure | See the named type or the example model. | — |
h3 | EditableHtmlButtonConfigure | See the named type or the example model. | — |
characters | EditableHtmlButtonConfigure | See the named type or the example model. | — |
bold | EditableHtmlButtonConfigure | See the named type or the example model. | — |
html | EditableHtmlButtonConfigure | See the named type or the example model. | — |
italic | EditableHtmlButtonConfigure | See the named type or the example model. | — |
ol_list | EditableHtmlButtonConfigure | See the named type or the example model. | — |
redo | EditableHtmlButtonConfigure | See the named type or the example model. | — |
strikethrough | EditableHtmlButtonConfigure | See the named type or the example model. | — |
sub | EditableHtmlButtonConfigure | See the named type or the example model. | — |
sup | EditableHtmlButtonConfigure | See the named type or the example model. | — |
table | EditableHtmlButtonConfigure | See the named type or the example model. | — |
ul_list | EditableHtmlButtonConfigure | See the named type or the example model. | — |
underline | EditableHtmlButtonConfigure | See the named type or the example model. | — |
undo | EditableHtmlButtonConfigure | See the named type or the example model. | — |
textAlign | EditableHtmlButtonConfigure | See the named type or the example model. | — |
showParagraphs | EditableHtmlButtonConfigure | See the named type or the example model. | — |
separateParagraphs | EditableHtmlButtonConfigure | See the named type or the example model. | — |
pasteFormatting | EditableHtmlButtonConfigure | See the named type or the example model. | — |
superscript | EditableHtmlButtonConfigure | See the named type or the example model. | — |
subscript | EditableHtmlButtonConfigure | See the named type or the example model. | — |
languageCharacters | EditableHtmlButtonConfigure | See the named type or the example model. | — |
responseArea | EditableHtmlButtonConfigure | See the named type or the example model. | — |
EditableHtmlButtonConfigure
| Field | Type | Meaning | Default / values |
|---|---|---|---|
disabled | boolean | Indicates if the plugin is disabled or not | — |
CustomPlugin
| Field | Type | Meaning | Default / values |
|---|---|---|---|
eventRequired | string | The name of the custom event. It needs to be valid (only letters, numbers and "_" can be used). The event is emitted with the "PIE-" prefix. | — |
iconAltRequired | string | The alt for the custom button icon | — |
iconTypeRequired | string | The icon type. Currently, only "SVG" is supported. | — |
iconRequired | string | The icon string. Currently, only SVG is supported, so it needs to be a valid svg. | — |
EditableHtmlPluginConfigure
| Field | Type | Meaning | Default / values |
|---|---|---|---|
settings | boolean | Indicates if the item has to be displayed in the Settings Panel | — |
label | string | Indicates the label for the item that has to be displayed in the Settings Panel | — |
inputConfiguration | EditableHtmlConfigureProp | Configuration for editable-html | — |
DialogContent
| Field | Type | Meaning | Default / values |
|---|---|---|---|
title | string | Dialog box title | — |
text | string | Dialog box text | — |
ConfigureProp
| Field | Type | Meaning | Default / values |
|---|---|---|---|
settings | boolean | Indicates if the item has to be displayed in the Settings Panel | — |
label | string | Indicates the label for the item that has to be displayed in the Settings Panel | — |
ConfigurePropWithEnabled
| Field | Type | Meaning | Default / values |
|---|---|---|---|
settings | boolean | Indicates if the item has to be displayed in the Settings Panel | — |
label | string | Indicates the label for the item that has to be displayed in the Settings Panel | — |
enabled | boolean | Indicates the value of the item if it affects config-ui (eg.: if item is a switch and displaying an input on the config-ui depends on the switch value: on/off) | — |
ContentDimensions
| Field | Type | Meaning | Default / values |
|---|---|---|---|
maxHeight | string | number | See the named type or the example model. | — |
maxWidth | string | number | See the named type or the example model. | — |
minHeight | string | number | See the named type or the example model. | — |
minWidth | string | number | See the named type or the example model. | — |
ConfigureMathMLProp
| Field | Type | Meaning | Default / values |
|---|---|---|---|
mmlOutput | boolean | Indicates if model should have mathML output instead of latex | — |
mmlEditing | boolean | Indicates if mathML that's already in model should be editable | — |
session fields (2)
| Field | Type | Meaning | Default / values |
|---|---|---|---|
id | string | Identifier of the session | — |
element | string | The element the session belongs to | — |
Accessibility and content requirements
PIE targets WCAG 2.2 AA. Provide clear prompts and media alternatives, and test the question with a keyboard and assistive technology. Manual testing is still incomplete; see the coverage notes below.
Accessibility and evidence · Element evidence and manual checks(opens in new tab)
Element package source(opens in new tab) · Example source(opens in new tab) · Snapshot cb30a68f