@instructure/quiz-interactions
Version:
A React UI component Library for quiz interaction types.
174 lines (172 loc) • 4.43 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _reactDnd = require("react-dnd");
var _reactDndHtml5Backend = _interopRequireDefault(require("react-dnd-html5-backend"));
var _index = _interopRequireDefault(require("./index"));
/*
* This one is still a big ol' work in progress. It needs love,
* but first the individual components need love.
*/
// This is absurd...
var errors = {
itemBody: ['Question Stem cannot be blank'],
interactionData: {
blanks: {
$errors: ['You must have a blank'],
0: {
choices: {
$errors: ['You must have more than one choice'],
0: {
itemBody: ['Choice cannot be blank']
}
}
}
}
},
scoringData: {
value: {
0: {
scoringData: {
editDistance: ['Levenshtein Distance must be greater than 0'],
value: {
$errors: ['Correct value cannot be blank'],
1: ['Correct value cannot be blank']
}
}
}
}
}
};
var propValues = {
blank: [{
id: 'fitb_uuid1',
answerType: 'openEntry'
}, {
id: 'fitb_uuid1',
answerType: 'wordbank',
choices: [{
id: 'choice_uuid1',
position: 1,
itemBody: 'one'
}, {
id: 'choice_uuid2',
position: 2,
itemBody: 'two'
}, {
id: 'choice_uuid3',
position: 3,
itemBody: 'three'
}]
}, {
id: 'fitb_uuid1',
answerType: 'dropdown',
choices: [{
id: 'choice_uuid1',
position: 1,
itemBody: 'one'
}, {
id: 'choice_uuid2',
position: 2,
itemBody: 'two'
}, {
id: 'choice_uuid3',
position: 3,
itemBody: 'three'
}]
}],
overrideEditableForRegrading: [true, false],
errorsAreShowing: [true, false],
/*
{
additionalOptions: [
null,
{ key: 'optionx', title: 'Option X', component: <div>X</div>, defaultExpanded: true },
{ key: 'optionz', title: 'Option Z', component: <div>Z</div>, defaultExpanded: false }
]
},
*/
scoring: [{
id: 'fitb_uuid1',
scoringAlgorithm: 'TextRegex',
scoringData: {
value: '.*three',
blankText: 'three'
}
}, {
id: 'fitb_uuid1',
scoringAlgorithm: 'TextCloseEnough',
scoringData: {
value: 'thref',
editDistance: '1',
blankText: 'three'
}
}, {
id: 'fitb_uuid1',
scoringAlgorithm: 'TextInChoices',
scoringData: {
value: ['one', 'two', 'three'],
blankText: 'three'
}
}, {
id: 'fitb_uuid1',
scoringAlgorithm: 'TextEquivalence',
scoringData: {
value: 'three',
blankText: 'three'
}
}, {
id: 'fitb_uuid1',
scoringAlgorithm: 'TextContainsAnswer',
scoringData: {
value: 'xthreex',
blankText: 'three'
}
}, {
id: 'fitb_uuid1',
scoringAlgorithm: 'Equivalence',
scoringData: {
value: 'choice_uuid3',
blankText: 'three'
}
}]
};
var _default = exports["default"] = {
component: (0, _reactDnd.DragDropContext)(_reactDndHtml5Backend["default"])(_index["default"]),
propValues: propValues,
getComponentProps: function getComponentProps(props) {
return {
enableRichContentEditor: false,
oneQuestionAtATime: false,
changeItemState: Function.prototype,
notifyScreenreader: Function.prototype,
openImportModal: Function.prototype,
interactionData: {
prompt: "<p><strong>Please</strong> fill in all the blanks (".concat(props.blank.answerType, " / ").concat(props.scoring.scoringAlgorithm, ")</p>"),
stemItems: [{
id: 'stem_uuid0',
position: 1,
type: 'text',
value: 'Write a number word here: '
}, {
id: 'stem_uuid1',
position: 2,
type: 'blank',
blankId: 'fitb_uuid1'
}],
blanks: [props.blank]
},
errors: errors,
scoringData: {
value: [props.scoring]
}
};
},
filter: function filter(props) {
// For wordbank and dropdown, the text matching algorithms are not valid
return props.blank.answerType === 'openEntry' && props.scoring.scoringAlgorithm === 'Equivalence' || props.blank.answerType !== 'openEntry' && props.scoring.scoringAlgorithm !== 'Equivalence';
}
};