@pie-element/categorize 8.17.1-next.17 → 8.17.1-next.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/configure/lib/defaults.js +1 -1
- package/configure/lib/defaults.js.map +1 -1
- package/configure/lib/design/index.js +3 -2
- package/configure/lib/design/index.js.map +1 -1
- package/configure/lib/index.js +1 -1
- package/configure/lib/index.js.map +1 -1
- package/controller/lib/index.js +1 -2
- package/controller/lib/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -14,7 +14,7 @@ var _default = {
|
|
|
14
14
|
choicesLabel: '',
|
|
15
15
|
lockChoiceOrder: true,
|
|
16
16
|
allowMultiplePlacementsEnabled: _utils.multiplePlacements.enabled,
|
|
17
|
-
allowAlternateEnabled:
|
|
17
|
+
allowAlternateEnabled: true,
|
|
18
18
|
allowMaxChoicesPerCategory: false,
|
|
19
19
|
maxChoicesPerCategory: 0,
|
|
20
20
|
categoriesPerRow: 2,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/defaults.js"],"names":["model","choices","choicesPosition","choicesLabel","lockChoiceOrder","allowMultiplePlacementsEnabled","multiplePlacements","enabled","allowAlternateEnabled","allowMaxChoicesPerCategory","maxChoicesPerCategory","categoriesPerRow","categories","alternates","correctResponse","rowLabels","partialScoring","feedbackEnabled","rationaleEnabled","promptEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","toolbarEditorPosition","configuration","baseInputConfiguration","audio","disabled","video","image","spellCheck","label","settings","feedback","allowMultiplePlacements","maxPlacements","allowAlternate","prompt","required","inputConfiguration","rationale","scoringType","settingsPanelDisabled","studentInstructions","teacherInstructions","headers","maxImageWidth","rowLabel","categoryLabel","maxImageHeight","withRubric","minCategoriesPerRow","mathMlOptions","mmlOutput","mmlEditing","language","languageChoices","options"],"mappings":";;;;;;;AAAA;;eAEe;AACbA,EAAAA,KAAK,EAAE;AACLC,IAAAA,OAAO,EAAE,EADJ;AAELC,IAAAA,eAAe,EAAE,OAFZ;AAGLC,IAAAA,YAAY,EAAE,EAHT;AAILC,IAAAA,eAAe,EAAE,IAJZ;AAKLC,IAAAA,8BAA8B,EAAEC,0BAAmBC,OAL9C;AAMLC,IAAAA,qBAAqB,EAAE,
|
|
1
|
+
{"version":3,"sources":["../src/defaults.js"],"names":["model","choices","choicesPosition","choicesLabel","lockChoiceOrder","allowMultiplePlacementsEnabled","multiplePlacements","enabled","allowAlternateEnabled","allowMaxChoicesPerCategory","maxChoicesPerCategory","categoriesPerRow","categories","alternates","correctResponse","rowLabels","partialScoring","feedbackEnabled","rationaleEnabled","promptEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","toolbarEditorPosition","configuration","baseInputConfiguration","audio","disabled","video","image","spellCheck","label","settings","feedback","allowMultiplePlacements","maxPlacements","allowAlternate","prompt","required","inputConfiguration","rationale","scoringType","settingsPanelDisabled","studentInstructions","teacherInstructions","headers","maxImageWidth","rowLabel","categoryLabel","maxImageHeight","withRubric","minCategoriesPerRow","mathMlOptions","mmlOutput","mmlEditing","language","languageChoices","options"],"mappings":"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","sourcesContent":["import { multiplePlacements } from './utils';\n\nexport default {\n model: {\n choices: [],\n choicesPosition: 'below',\n choicesLabel: '',\n lockChoiceOrder: true,\n allowMultiplePlacementsEnabled: multiplePlacements.enabled,\n allowAlternateEnabled: true,\n allowMaxChoicesPerCategory: false,\n maxChoicesPerCategory: 0,\n categoriesPerRow: 2,\n categories: [],\n alternates: [],\n correctResponse: [],\n rowLabels: [''],\n partialScoring: true,\n feedbackEnabled: false,\n rationaleEnabled: true,\n promptEnabled: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n toolbarEditorPosition: 'bottom',\n },\n configuration: {\n baseInputConfiguration: {\n audio: { disabled: false },\n video: { disabled: false },\n image: { disabled: false },\n },\n spellCheck: {\n label: 'Spellcheck',\n settings: false,\n enabled: true,\n },\n feedback: {\n settings: true,\n label: 'Feedback',\n enabled: true,\n },\n lockChoiceOrder: {\n settings: true,\n label: 'Lock Choice Order',\n },\n choicesPosition: {\n settings: true,\n label: 'Choices Position',\n },\n allowMultiplePlacements: {\n settings: true,\n label: 'Allow Multiple Placements',\n },\n maxPlacements: {\n settings: true,\n label: 'Max choices per category',\n },\n allowAlternate: {\n settings: true,\n label: 'Allow Alternate Correct Answers',\n },\n categoriesPerRow: {\n settings: true,\n label: 'Categories per row',\n },\n partialScoring: {\n settings: false,\n label: 'Allow Partial Scoring',\n },\n prompt: {\n settings: true,\n label: 'Prompt',\n required: false,\n inputConfiguration: {\n audio: { disabled: false },\n video: { disabled: false },\n image: { disabled: false },\n },\n },\n rationale: {\n settings: true,\n label: 'Rationale',\n required: false,\n inputConfiguration: {\n audio: { disabled: false },\n video: { disabled: false },\n image: { disabled: false },\n },\n },\n scoringType: {\n settings: false,\n label: 'Scoring Type',\n },\n settingsPanelDisabled: false,\n studentInstructions: {\n settings: false,\n label: 'Student Instructions',\n },\n teacherInstructions: {\n settings: true,\n label: 'Teacher Instructions',\n required: false,\n inputConfiguration: {\n audio: { disabled: false },\n video: { disabled: false },\n image: { disabled: false },\n },\n },\n headers: {\n inputConfiguration: {\n audio: { disabled: true },\n video: { disabled: true },\n image: { disabled: false },\n },\n },\n rowLabels: {\n inputConfiguration: {\n audio: { disabled: false },\n video: { disabled: false },\n image: { disabled: false },\n },\n },\n toolbarEditorPosition: {\n settings: false,\n label: 'Toolbar Editor Position',\n },\n maxImageWidth: {\n teacherInstructions: 300,\n prompt: 300,\n rationale: 300,\n rowLabel: 200,\n categoryLabel: 260,\n choices: 240,\n },\n maxImageHeight: {\n teacherInstructions: 300,\n prompt: 300,\n rationale: 300,\n rowLabel: 100,\n categoryLabel: 100,\n choices: 150,\n },\n withRubric: {\n settings: false,\n label: 'Add Rubric',\n },\n minCategoriesPerRow: 1,\n mathMlOptions: {\n mmlOutput: false,\n mmlEditing: false,\n },\n language: {\n settings: false,\n label: 'Specify Language',\n enabled: false,\n },\n languageChoices: {\n label: 'Language Choices',\n options: [],\n },\n },\n};\n"],"file":"defaults.js"}
|
|
@@ -215,6 +215,8 @@ var Design = /*#__PURE__*/function (_React$Component) {
|
|
|
215
215
|
onConfigurationChanged = _this$props4.onConfigurationChanged;
|
|
216
216
|
|
|
217
217
|
var _ref2 = configuration || {},
|
|
218
|
+
_ref2$allowAlternate = _ref2.allowAlternate,
|
|
219
|
+
allowAlternate = _ref2$allowAlternate === void 0 ? {} : _ref2$allowAlternate,
|
|
218
220
|
_ref2$allowMultiplePl = _ref2.allowMultiplePlacements,
|
|
219
221
|
allowMultiplePlacements = _ref2$allowMultiplePl === void 0 ? {} : _ref2$allowMultiplePl,
|
|
220
222
|
_ref2$baseInputConfig = _ref2.baseInputConfiguration,
|
|
@@ -314,8 +316,7 @@ var Design = /*#__PURE__*/function (_React$Component) {
|
|
|
314
316
|
}),
|
|
315
317
|
promptEnabled: prompt.settings && toggle(prompt.label),
|
|
316
318
|
feedbackEnabled: feedback.settings && toggle(feedback.label),
|
|
317
|
-
|
|
318
|
-
// allowAlternateEnabled: allowAlternate.settings && toggle(allowAlternate.label),
|
|
319
|
+
allowAlternateEnabled: allowAlternate.settings && toggle(allowAlternate.label),
|
|
319
320
|
'language.enabled': language.settings && toggle(language.label, true),
|
|
320
321
|
language: language.settings && language.enabled && dropdown(languageChoices.label, languageChoices.options)
|
|
321
322
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/design/index.jsx"],"names":["translator","Translator","dropdown","settings","Panel","toggle","radio","numberField","IdProvider","uid","Provider","Design","props","model","onChange","updatedModel","choices","map","c","categoryCount","checkAllowMultiplePlacements","allowMultiplePlacementsEnabled","correctResponse","categories","id","label","h","content","maxChoicesPerCategory","allowMaxChoicesPerCategory","rationale","teacherInstructions","feedback","updateModel","cr","alternateResponses","prompt","index","filter","alt","altIndex","choice","allowMultiplePlacements","multiplePlacements","enabled","disabled","maxChoices","generateId","classes","configuration","imageSupport","uploadSoundSupport","onConfigurationChanged","baseInputConfiguration","categoriesPerRow","choicesPosition","contentDimensions","lockChoiceOrder","maxImageHeight","maxImageWidth","maxPlacements","minCategoriesPerRow","partialScoring","scoringType","settingsPanelDisabled","spellCheck","studentInstructions","withRubric","mathMlOptions","language","languageChoices","allowAlternateEnabled","errors","feedbackEnabled","promptEnabled","rationaleEnabled","spellCheckEnabled","teacherInstructionsEnabled","toolbarEditorPosition","promptError","rationaleError","teacherInstructionsError","toolbarOpts","position","config","columns","correctResponseCount","countChoiceInCorrectResponse","defaultImageMaxWidth","defaultImageMaxHeight","panelSettings","min","max","perChoice","options","panelProperties","studentInstructionsEnabled","rubricEnabled","isOpened","isAlertModalOpened","alertMaxChoicesMsg","t","lng","Settings","Properties","onAlertModalCancel","inputContainer","input","changeTeacherInstructions","inputConfiguration","errorText","onPromptChanged","alternatesHeader","onAddAlternateResponse","categoriesList","onRemoveAlternateResponse","changeRationale","changeFeedback","React","Component","PropTypes","object","isRequired","className","string","func","shape","add","styles","theme","marginBottom","spacing","unit","text","paddingTop","paddingBottom","width","title","fontSize","typography","color","palette","error","main"],"mappings":"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","sourcesContent":["import { getPluginProps } from './utils';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport { FeedbackConfig, InputContainer, layout, settings } from '@pie-lib/pie-toolbox/config-ui';\nimport {\n countInAnswer,\n ensureNoExtraChoicesInAnswer,\n ensureNoExtraChoicesInAlternate,\n} from '@pie-lib/pie-toolbox/categorize';\nimport { EditableHtml } from '@pie-lib/pie-toolbox/editable-html';\nimport { uid, withDragContext } from '@pie-lib/pie-toolbox/drag';\n\nimport Categories from './categories';\nimport AlternateResponses from './categories/alternateResponses';\nimport Choices from './choices';\nimport { buildAlternateResponses, buildCategories } from './builder';\nimport Header from './header';\nimport { getMaxCategoryChoices, multiplePlacements } from '../utils';\nimport { AlertDialog } from '@pie-lib/pie-toolbox/config-ui';\nimport Translator from '@pie-lib/pie-toolbox/translator';\n\nconst { translator } = Translator;\nconst { dropdown, Panel, toggle, radio, numberField } = settings;\nconst { Provider: IdProvider } = uid;\n\nexport class Design extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n configuration: PropTypes.object,\n className: PropTypes.string,\n onConfigurationChanged: PropTypes.func,\n model: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n uid: PropTypes.string,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n uploadSoundSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n };\n\n constructor(props) {\n super(props);\n this.uid = props.uid || uid.generateId();\n }\n\n updateModel = (props) => {\n const { model, onChange } = this.props;\n\n const updatedModel = {\n ...model,\n ...props,\n };\n\n updatedModel.choices = updatedModel.choices.map((c) => ({\n ...c,\n categoryCount: this.checkAllowMultiplePlacements(updatedModel.allowMultiplePlacementsEnabled, c),\n }));\n\n //Ensure that there are no extra choices in correctResponse, if the user has decided that only one choice may be used.\n updatedModel.correctResponse = ensureNoExtraChoicesInAnswer(\n updatedModel.correctResponse || [],\n updatedModel.choices,\n );\n\n //Ensure that there are no extra choices in alternate responses, if the user has decided that only one choice may be used.\n updatedModel.correctResponse = ensureNoExtraChoicesInAlternate(\n updatedModel.correctResponse || [],\n updatedModel.choices,\n );\n\n //clean categories\n updatedModel.categories = updatedModel.categories.map((c) => ({\n id: c.id,\n label: c.label,\n }));\n\n updatedModel.choices = updatedModel.choices.map((h) => ({\n id: h.id,\n content: h.content,\n categoryCount: h.categoryCount,\n }));\n\n // ensure that maxChoicesPerCategory is reset if author switch back the corresponding switch (allowMaxChoicesPerCategory)\n updatedModel.maxChoicesPerCategory = updatedModel.allowMaxChoicesPerCategory\n ? updatedModel.maxChoicesPerCategory\n : 0;\n\n onChange(updatedModel);\n };\n\n changeRationale = (rationale) => {\n const { model, onChange } = this.props;\n\n onChange({\n ...model,\n rationale,\n });\n };\n\n changeTeacherInstructions = (teacherInstructions) => {\n const { model, onChange } = this.props;\n\n onChange({\n ...model,\n teacherInstructions,\n });\n };\n\n changeFeedback = (feedback) => {\n this.updateModel({ feedback });\n };\n\n onAddAlternateResponse = () => {\n const {\n model: { correctResponse },\n } = this.props;\n\n this.updateModel({\n correctResponse: (correctResponse || []).map((cr) => ({\n ...cr,\n alternateResponses: [...(cr.alternateResponses || []), []],\n })),\n });\n };\n\n onPromptChanged = (prompt) => this.updateModel({ prompt });\n\n onRemoveAlternateResponse = (index) => {\n const {\n model: { correctResponse },\n } = this.props;\n\n this.updateModel({\n correctResponse: (correctResponse || []).map((cr) => ({\n ...cr,\n alternateResponses: (cr.alternateResponses || []).filter((alt, altIndex) => altIndex !== index),\n })),\n });\n };\n\n countChoiceInCorrectResponse = (choice) => {\n const { model } = this.props;\n\n return countInAnswer(choice.id, model.correctResponse);\n };\n\n checkAllowMultiplePlacements = (allowMultiplePlacements, c) => {\n if (allowMultiplePlacements === multiplePlacements.enabled) {\n return 0;\n }\n\n if (allowMultiplePlacements === multiplePlacements.disabled) {\n return 1;\n }\n\n return c.categoryCount || 0;\n };\n\n isAlertModalOpened = () => {\n const { model } = this.props;\n const { maxChoicesPerCategory = 0 } = model || {};\n const maxChoices = getMaxCategoryChoices(model);\n // when maxChoicesPerCategory is set to 0, there is no limit so modal should not be opened\n return maxChoicesPerCategory !== 0 ? maxChoices > maxChoicesPerCategory : false;\n };\n\n onAlertModalCancel = () => {\n const { model } = this.props;\n const maxChoices = getMaxCategoryChoices(model);\n this.updateModel({ maxChoicesPerCategory: maxChoices });\n };\n\n render() {\n const { classes, configuration, imageSupport, model, uploadSoundSupport, onConfigurationChanged } = this.props;\n const {\n allowMultiplePlacements = {},\n baseInputConfiguration = {},\n categoriesPerRow = {},\n choicesPosition = {},\n contentDimensions = {},\n feedback = {},\n lockChoiceOrder = {},\n maxImageHeight = {},\n maxImageWidth = {},\n maxPlacements = {},\n minCategoriesPerRow = 1,\n partialScoring = {},\n prompt = {},\n rationale = {},\n scoringType = {},\n settingsPanelDisabled,\n spellCheck = {},\n studentInstructions = {},\n teacherInstructions = {},\n withRubric = {},\n mathMlOptions = {},\n language = {},\n languageChoices = {},\n } = configuration || {};\n const {\n allowAlternateEnabled,\n allowMaxChoicesPerCategory,\n errors,\n feedbackEnabled,\n maxChoicesPerCategory,\n promptEnabled,\n rationaleEnabled,\n spellCheckEnabled,\n teacherInstructionsEnabled,\n toolbarEditorPosition,\n } = model || {};\n const {\n prompt: promptError,\n rationale: rationaleError,\n teacherInstructions: teacherInstructionsError,\n } = errors || {};\n\n const toolbarOpts = {\n position: toolbarEditorPosition === 'top' ? 'top' : 'bottom',\n };\n\n const config = model.config || {};\n config.choices = config.choices || { label: '', columns: 2 };\n\n const categories = buildCategories(model.categories || [], model.choices || [], model.correctResponse || []);\n\n const alternateResponses = buildAlternateResponses(\n model.categories || [],\n model.choices || [],\n model.correctResponse || [],\n );\n\n const choices = model.choices.map((c) => {\n c.correctResponseCount = this.countChoiceInCorrectResponse(c);\n // ensure categoryCount is set even though updatedModel hasn't been called\n c.categoryCount = this.checkAllowMultiplePlacements(model.allowMultiplePlacementsEnabled, c);\n return c;\n });\n\n const defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;\n const defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;\n\n const panelSettings = {\n partialScoring: partialScoring.settings && toggle(partialScoring.label),\n lockChoiceOrder: lockChoiceOrder.settings && toggle(lockChoiceOrder.label),\n categoriesPerRow:\n categoriesPerRow.settings &&\n numberField(categoriesPerRow.label, {\n label: categoriesPerRow.label,\n min: minCategoriesPerRow,\n max: 6,\n }),\n choicesPosition: choicesPosition.settings && radio(choicesPosition.label, ['below', 'above', 'left', 'right']),\n allowMultiplePlacementsEnabled:\n allowMultiplePlacements.settings &&\n dropdown(allowMultiplePlacements.label, [\n multiplePlacements.enabled,\n multiplePlacements.disabled,\n multiplePlacements.perChoice,\n ]),\n allowMaxChoicesPerCategory: maxPlacements.settings && toggle(maxPlacements.label),\n maxChoicesPerCategory:\n allowMaxChoicesPerCategory === true &&\n numberField(maxPlacements.label, {\n label: '',\n min: 0,\n max: 30,\n }),\n promptEnabled: prompt.settings && toggle(prompt.label),\n feedbackEnabled: feedback.settings && toggle(feedback.label),\n // PD-2960: deleted temporary from settings panel\n // allowAlternateEnabled: allowAlternate.settings && toggle(allowAlternate.label),\n 'language.enabled': language.settings && toggle(language.label, true),\n language: language.settings && language.enabled && dropdown(languageChoices.label, languageChoices.options),\n };\n\n const panelProperties = {\n teacherInstructionsEnabled: teacherInstructions.settings && toggle(teacherInstructions.label),\n studentInstructionsEnabled: studentInstructions.settings && toggle(studentInstructions.label),\n rationaleEnabled: rationale.settings && toggle(rationale.label),\n spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),\n scoringType: scoringType.settings && radio(scoringType.label, ['auto', 'rubric']),\n rubricEnabled: withRubric?.settings && toggle(withRubric?.label),\n };\n\n const isOpened = this.isAlertModalOpened();\n const alertMaxChoicesMsg = translator.t('translation:categorize:maxChoicesPerCategoryRestriction', {\n lng: model.language,\n maxChoicesPerCategory,\n });\n\n return (\n <IdProvider value={this.uid}>\n <layout.ConfigLayout\n dimensions={contentDimensions}\n hideSettings={settingsPanelDisabled}\n settings={\n <Panel\n model={model}\n onChangeModel={this.updateModel}\n configuration={configuration}\n onChangeConfiguration={onConfigurationChanged}\n groups={{\n Settings: panelSettings,\n Properties: panelProperties,\n }}\n modal={\n <AlertDialog\n title={'Warning'}\n text={alertMaxChoicesMsg}\n open={isOpened}\n onClose={this.onAlertModalCancel}\n />\n }\n />\n }\n >\n {teacherInstructionsEnabled && (\n <InputContainer label={teacherInstructions.label} className={classes.inputContainer}>\n <EditableHtml\n className={classes.input}\n markup={model.teacherInstructions || ''}\n onChange={this.changeTeacherInstructions}\n imageSupport={imageSupport}\n error={teacherInstructionsError}\n nonEmpty={false}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(teacherInstructions?.inputConfiguration, baseInputConfiguration)}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.teacherInstructions) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.teacherInstructions) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n {teacherInstructionsError && <div className={classes.errorText}>{teacherInstructionsError}</div>}\n </InputContainer>\n )}\n\n {promptEnabled && (\n <InputContainer label={prompt.label} className={classes.inputContainer}>\n <EditableHtml\n className={classes.input}\n markup={model.prompt || ''}\n onChange={this.onPromptChanged}\n imageSupport={imageSupport}\n error={promptError}\n nonEmpty={false}\n disableUnderline\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(prompt?.inputConfiguration, baseInputConfiguration)}\n spellCheck={spellCheckEnabled}\n maxImageWidth={maxImageWidth && maxImageWidth.prompt}\n maxImageHeight={maxImageHeight && maxImageHeight.prompt}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n {promptError && <div className={classes.errorText}>{promptError}</div>}\n </InputContainer>\n )}\n\n <Categories\n imageSupport={imageSupport}\n uploadSoundSupport={uploadSoundSupport}\n model={model}\n categories={categories || []}\n onModelChanged={this.updateModel}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n configuration={configuration}\n defaultImageMaxWidth={defaultImageMaxWidth}\n defaultImageMaxHeight={defaultImageMaxHeight}\n mathMlOptions={mathMlOptions}\n />\n\n <Choices\n imageSupport={imageSupport}\n uploadSoundSupport={uploadSoundSupport}\n choices={choices}\n model={model}\n onModelChanged={this.updateModel}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n configuration={configuration}\n defaultImageMaxWidth={defaultImageMaxWidth}\n defaultImageMaxHeight={defaultImageMaxHeight}\n />\n\n {allowAlternateEnabled && (\n <Header\n className={classes.alternatesHeader}\n label=\"Alternate Responses\"\n buttonLabel=\"ADD AN ALTERNATE RESPONSE\"\n onAdd={this.onAddAlternateResponse}\n />\n )}\n {allowAlternateEnabled &&\n alternateResponses.map((categoriesList, index) => {\n return (\n <React.Fragment key={index}>\n <Header\n className={classes.alternatesHeader}\n variant={'subtitle1'}\n label=\"Alternate Response\"\n buttonLabel=\"REMOVE ALTERNATE RESPONSE\"\n onAdd={() => this.onRemoveAlternateResponse(index)}\n />\n <AlternateResponses\n altIndex={index}\n imageSupport={imageSupport}\n model={model}\n configuration={configuration}\n categories={categoriesList}\n onModelChanged={this.updateModel}\n uploadSoundSupport={uploadSoundSupport}\n toolbarOpts={toolbarOpts}\n defaultImageMaxWidth={defaultImageMaxWidth}\n defaultImageMaxHeight={defaultImageMaxHeight}\n mathMlOptions={mathMlOptions}\n />\n </React.Fragment>\n );\n })}\n\n {rationaleEnabled && (\n <InputContainer label={rationale.label} className={classes.inputContainer}>\n <EditableHtml\n className={classes.input}\n markup={model.rationale || ''}\n onChange={this.changeRationale}\n imageSupport={imageSupport}\n error={rationaleError}\n nonEmpty={false}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(prompt?.inputConfiguration, baseInputConfiguration)}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.rationale) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.rationale) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n {rationaleError && <div className={classes.errorText}>{rationaleError}</div>}\n </InputContainer>\n )}\n\n {feedbackEnabled && (\n <FeedbackConfig feedback={model.feedback} onChange={this.changeFeedback} toolbarOpts={toolbarOpts} />\n )}\n </layout.ConfigLayout>\n </IdProvider>\n );\n }\n}\n\nconst styles = (theme) => ({\n alternatesHeader: {\n marginBottom: theme.spacing.unit * 2,\n },\n text: {\n paddingTop: theme.spacing.unit * 2,\n paddingBottom: theme.spacing.unit * 2,\n },\n inputContainer: {\n width: '100%',\n paddingTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n },\n title: {\n marginBottom: theme.spacing.unit * 4,\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing.unit,\n },\n});\n\nexport default withDragContext(withStyles(styles)(Design));\n"],"file":"index.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/design/index.jsx"],"names":["translator","Translator","dropdown","settings","Panel","toggle","radio","numberField","IdProvider","uid","Provider","Design","props","model","onChange","updatedModel","choices","map","c","categoryCount","checkAllowMultiplePlacements","allowMultiplePlacementsEnabled","correctResponse","categories","id","label","h","content","maxChoicesPerCategory","allowMaxChoicesPerCategory","rationale","teacherInstructions","feedback","updateModel","cr","alternateResponses","prompt","index","filter","alt","altIndex","choice","allowMultiplePlacements","multiplePlacements","enabled","disabled","maxChoices","generateId","classes","configuration","imageSupport","uploadSoundSupport","onConfigurationChanged","allowAlternate","baseInputConfiguration","categoriesPerRow","choicesPosition","contentDimensions","lockChoiceOrder","maxImageHeight","maxImageWidth","maxPlacements","minCategoriesPerRow","partialScoring","scoringType","settingsPanelDisabled","spellCheck","studentInstructions","withRubric","mathMlOptions","language","languageChoices","allowAlternateEnabled","errors","feedbackEnabled","promptEnabled","rationaleEnabled","spellCheckEnabled","teacherInstructionsEnabled","toolbarEditorPosition","promptError","rationaleError","teacherInstructionsError","toolbarOpts","position","config","columns","correctResponseCount","countChoiceInCorrectResponse","defaultImageMaxWidth","defaultImageMaxHeight","panelSettings","min","max","perChoice","options","panelProperties","studentInstructionsEnabled","rubricEnabled","isOpened","isAlertModalOpened","alertMaxChoicesMsg","t","lng","Settings","Properties","onAlertModalCancel","inputContainer","input","changeTeacherInstructions","inputConfiguration","errorText","onPromptChanged","alternatesHeader","onAddAlternateResponse","categoriesList","onRemoveAlternateResponse","changeRationale","changeFeedback","React","Component","PropTypes","object","isRequired","className","string","func","shape","add","styles","theme","marginBottom","spacing","unit","text","paddingTop","paddingBottom","width","title","fontSize","typography","color","palette","error","main"],"mappings":"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","sourcesContent":["import { getPluginProps } from './utils';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport { FeedbackConfig, InputContainer, layout, settings } from '@pie-lib/pie-toolbox/config-ui';\nimport {\n countInAnswer,\n ensureNoExtraChoicesInAnswer,\n ensureNoExtraChoicesInAlternate,\n} from '@pie-lib/pie-toolbox/categorize';\nimport { EditableHtml } from '@pie-lib/pie-toolbox/editable-html';\nimport { uid, withDragContext } from '@pie-lib/pie-toolbox/drag';\n\nimport Categories from './categories';\nimport AlternateResponses from './categories/alternateResponses';\nimport Choices from './choices';\nimport { buildAlternateResponses, buildCategories } from './builder';\nimport Header from './header';\nimport { getMaxCategoryChoices, multiplePlacements } from '../utils';\nimport { AlertDialog } from '@pie-lib/pie-toolbox/config-ui';\nimport Translator from '@pie-lib/pie-toolbox/translator';\n\nconst { translator } = Translator;\nconst { dropdown, Panel, toggle, radio, numberField } = settings;\nconst { Provider: IdProvider } = uid;\n\nexport class Design extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n configuration: PropTypes.object,\n className: PropTypes.string,\n onConfigurationChanged: PropTypes.func,\n model: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n uid: PropTypes.string,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n uploadSoundSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n };\n\n constructor(props) {\n super(props);\n this.uid = props.uid || uid.generateId();\n }\n\n updateModel = (props) => {\n const { model, onChange } = this.props;\n\n const updatedModel = {\n ...model,\n ...props,\n };\n\n updatedModel.choices = updatedModel.choices.map((c) => ({\n ...c,\n categoryCount: this.checkAllowMultiplePlacements(updatedModel.allowMultiplePlacementsEnabled, c),\n }));\n\n //Ensure that there are no extra choices in correctResponse, if the user has decided that only one choice may be used.\n updatedModel.correctResponse = ensureNoExtraChoicesInAnswer(\n updatedModel.correctResponse || [],\n updatedModel.choices,\n );\n\n //Ensure that there are no extra choices in alternate responses, if the user has decided that only one choice may be used.\n updatedModel.correctResponse = ensureNoExtraChoicesInAlternate(\n updatedModel.correctResponse || [],\n updatedModel.choices,\n );\n\n //clean categories\n updatedModel.categories = updatedModel.categories.map((c) => ({\n id: c.id,\n label: c.label,\n }));\n\n updatedModel.choices = updatedModel.choices.map((h) => ({\n id: h.id,\n content: h.content,\n categoryCount: h.categoryCount,\n }));\n\n // ensure that maxChoicesPerCategory is reset if author switch back the corresponding switch (allowMaxChoicesPerCategory)\n updatedModel.maxChoicesPerCategory = updatedModel.allowMaxChoicesPerCategory\n ? updatedModel.maxChoicesPerCategory\n : 0;\n\n onChange(updatedModel);\n };\n\n changeRationale = (rationale) => {\n const { model, onChange } = this.props;\n\n onChange({\n ...model,\n rationale,\n });\n };\n\n changeTeacherInstructions = (teacherInstructions) => {\n const { model, onChange } = this.props;\n\n onChange({\n ...model,\n teacherInstructions,\n });\n };\n\n changeFeedback = (feedback) => {\n this.updateModel({ feedback });\n };\n\n onAddAlternateResponse = () => {\n const {\n model: { correctResponse },\n } = this.props;\n\n this.updateModel({\n correctResponse: (correctResponse || []).map((cr) => ({\n ...cr,\n alternateResponses: [...(cr.alternateResponses || []), []],\n })),\n });\n };\n\n onPromptChanged = (prompt) => this.updateModel({ prompt });\n\n onRemoveAlternateResponse = (index) => {\n const {\n model: { correctResponse },\n } = this.props;\n\n this.updateModel({\n correctResponse: (correctResponse || []).map((cr) => ({\n ...cr,\n alternateResponses: (cr.alternateResponses || []).filter((alt, altIndex) => altIndex !== index),\n })),\n });\n };\n\n countChoiceInCorrectResponse = (choice) => {\n const { model } = this.props;\n\n return countInAnswer(choice.id, model.correctResponse);\n };\n\n checkAllowMultiplePlacements = (allowMultiplePlacements, c) => {\n if (allowMultiplePlacements === multiplePlacements.enabled) {\n return 0;\n }\n\n if (allowMultiplePlacements === multiplePlacements.disabled) {\n return 1;\n }\n\n return c.categoryCount || 0;\n };\n\n isAlertModalOpened = () => {\n const { model } = this.props;\n const { maxChoicesPerCategory = 0 } = model || {};\n const maxChoices = getMaxCategoryChoices(model);\n // when maxChoicesPerCategory is set to 0, there is no limit so modal should not be opened\n return maxChoicesPerCategory !== 0 ? maxChoices > maxChoicesPerCategory : false;\n };\n\n onAlertModalCancel = () => {\n const { model } = this.props;\n const maxChoices = getMaxCategoryChoices(model);\n this.updateModel({ maxChoicesPerCategory: maxChoices });\n };\n\n render() {\n const { classes, configuration, imageSupport, model, uploadSoundSupport, onConfigurationChanged } = this.props;\n const {\n allowAlternate = {},\n allowMultiplePlacements = {},\n baseInputConfiguration = {},\n categoriesPerRow = {},\n choicesPosition = {},\n contentDimensions = {},\n feedback = {},\n lockChoiceOrder = {},\n maxImageHeight = {},\n maxImageWidth = {},\n maxPlacements = {},\n minCategoriesPerRow = 1,\n partialScoring = {},\n prompt = {},\n rationale = {},\n scoringType = {},\n settingsPanelDisabled,\n spellCheck = {},\n studentInstructions = {},\n teacherInstructions = {},\n withRubric = {},\n mathMlOptions = {},\n language = {},\n languageChoices = {},\n } = configuration || {};\n const {\n allowAlternateEnabled,\n allowMaxChoicesPerCategory,\n errors,\n feedbackEnabled,\n maxChoicesPerCategory,\n promptEnabled,\n rationaleEnabled,\n spellCheckEnabled,\n teacherInstructionsEnabled,\n toolbarEditorPosition,\n } = model || {};\n const {\n prompt: promptError,\n rationale: rationaleError,\n teacherInstructions: teacherInstructionsError,\n } = errors || {};\n\n const toolbarOpts = {\n position: toolbarEditorPosition === 'top' ? 'top' : 'bottom',\n };\n\n const config = model.config || {};\n config.choices = config.choices || { label: '', columns: 2 };\n\n const categories = buildCategories(model.categories || [], model.choices || [], model.correctResponse || []);\n\n const alternateResponses = buildAlternateResponses(\n model.categories || [],\n model.choices || [],\n model.correctResponse || [],\n );\n\n const choices = model.choices.map((c) => {\n c.correctResponseCount = this.countChoiceInCorrectResponse(c);\n // ensure categoryCount is set even though updatedModel hasn't been called\n c.categoryCount = this.checkAllowMultiplePlacements(model.allowMultiplePlacementsEnabled, c);\n return c;\n });\n\n const defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;\n const defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;\n\n const panelSettings = {\n partialScoring: partialScoring.settings && toggle(partialScoring.label),\n lockChoiceOrder: lockChoiceOrder.settings && toggle(lockChoiceOrder.label),\n categoriesPerRow:\n categoriesPerRow.settings &&\n numberField(categoriesPerRow.label, {\n label: categoriesPerRow.label,\n min: minCategoriesPerRow,\n max: 6,\n }),\n choicesPosition: choicesPosition.settings && radio(choicesPosition.label, ['below', 'above', 'left', 'right']),\n allowMultiplePlacementsEnabled:\n allowMultiplePlacements.settings &&\n dropdown(allowMultiplePlacements.label, [\n multiplePlacements.enabled,\n multiplePlacements.disabled,\n multiplePlacements.perChoice,\n ]),\n allowMaxChoicesPerCategory: maxPlacements.settings && toggle(maxPlacements.label),\n maxChoicesPerCategory:\n allowMaxChoicesPerCategory === true &&\n numberField(maxPlacements.label, {\n label: '',\n min: 0,\n max: 30,\n }),\n promptEnabled: prompt.settings && toggle(prompt.label),\n feedbackEnabled: feedback.settings && toggle(feedback.label),\n allowAlternateEnabled: allowAlternate.settings && toggle(allowAlternate.label),\n 'language.enabled': language.settings && toggle(language.label, true),\n language: language.settings && language.enabled && dropdown(languageChoices.label, languageChoices.options),\n };\n\n const panelProperties = {\n teacherInstructionsEnabled: teacherInstructions.settings && toggle(teacherInstructions.label),\n studentInstructionsEnabled: studentInstructions.settings && toggle(studentInstructions.label),\n rationaleEnabled: rationale.settings && toggle(rationale.label),\n spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),\n scoringType: scoringType.settings && radio(scoringType.label, ['auto', 'rubric']),\n rubricEnabled: withRubric?.settings && toggle(withRubric?.label),\n };\n\n const isOpened = this.isAlertModalOpened();\n const alertMaxChoicesMsg = translator.t('translation:categorize:maxChoicesPerCategoryRestriction', {\n lng: model.language,\n maxChoicesPerCategory,\n });\n\n return (\n <IdProvider value={this.uid}>\n <layout.ConfigLayout\n dimensions={contentDimensions}\n hideSettings={settingsPanelDisabled}\n settings={\n <Panel\n model={model}\n onChangeModel={this.updateModel}\n configuration={configuration}\n onChangeConfiguration={onConfigurationChanged}\n groups={{\n Settings: panelSettings,\n Properties: panelProperties,\n }}\n modal={\n <AlertDialog\n title={'Warning'}\n text={alertMaxChoicesMsg}\n open={isOpened}\n onClose={this.onAlertModalCancel}\n />\n }\n />\n }\n >\n {teacherInstructionsEnabled && (\n <InputContainer label={teacherInstructions.label} className={classes.inputContainer}>\n <EditableHtml\n className={classes.input}\n markup={model.teacherInstructions || ''}\n onChange={this.changeTeacherInstructions}\n imageSupport={imageSupport}\n error={teacherInstructionsError}\n nonEmpty={false}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(teacherInstructions?.inputConfiguration, baseInputConfiguration)}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.teacherInstructions) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.teacherInstructions) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n {teacherInstructionsError && <div className={classes.errorText}>{teacherInstructionsError}</div>}\n </InputContainer>\n )}\n\n {promptEnabled && (\n <InputContainer label={prompt.label} className={classes.inputContainer}>\n <EditableHtml\n className={classes.input}\n markup={model.prompt || ''}\n onChange={this.onPromptChanged}\n imageSupport={imageSupport}\n error={promptError}\n nonEmpty={false}\n disableUnderline\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(prompt?.inputConfiguration, baseInputConfiguration)}\n spellCheck={spellCheckEnabled}\n maxImageWidth={maxImageWidth && maxImageWidth.prompt}\n maxImageHeight={maxImageHeight && maxImageHeight.prompt}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n {promptError && <div className={classes.errorText}>{promptError}</div>}\n </InputContainer>\n )}\n\n <Categories\n imageSupport={imageSupport}\n uploadSoundSupport={uploadSoundSupport}\n model={model}\n categories={categories || []}\n onModelChanged={this.updateModel}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n configuration={configuration}\n defaultImageMaxWidth={defaultImageMaxWidth}\n defaultImageMaxHeight={defaultImageMaxHeight}\n mathMlOptions={mathMlOptions}\n />\n\n <Choices\n imageSupport={imageSupport}\n uploadSoundSupport={uploadSoundSupport}\n choices={choices}\n model={model}\n onModelChanged={this.updateModel}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n configuration={configuration}\n defaultImageMaxWidth={defaultImageMaxWidth}\n defaultImageMaxHeight={defaultImageMaxHeight}\n />\n\n {allowAlternateEnabled && (\n <Header\n className={classes.alternatesHeader}\n label=\"Alternate Responses\"\n buttonLabel=\"ADD AN ALTERNATE RESPONSE\"\n onAdd={this.onAddAlternateResponse}\n />\n )}\n {allowAlternateEnabled &&\n alternateResponses.map((categoriesList, index) => {\n return (\n <React.Fragment key={index}>\n <Header\n className={classes.alternatesHeader}\n variant={'subtitle1'}\n label=\"Alternate Response\"\n buttonLabel=\"REMOVE ALTERNATE RESPONSE\"\n onAdd={() => this.onRemoveAlternateResponse(index)}\n />\n <AlternateResponses\n altIndex={index}\n imageSupport={imageSupport}\n model={model}\n configuration={configuration}\n categories={categoriesList}\n onModelChanged={this.updateModel}\n uploadSoundSupport={uploadSoundSupport}\n toolbarOpts={toolbarOpts}\n defaultImageMaxWidth={defaultImageMaxWidth}\n defaultImageMaxHeight={defaultImageMaxHeight}\n mathMlOptions={mathMlOptions}\n />\n </React.Fragment>\n );\n })}\n\n {rationaleEnabled && (\n <InputContainer label={rationale.label} className={classes.inputContainer}>\n <EditableHtml\n className={classes.input}\n markup={model.rationale || ''}\n onChange={this.changeRationale}\n imageSupport={imageSupport}\n error={rationaleError}\n nonEmpty={false}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(prompt?.inputConfiguration, baseInputConfiguration)}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.rationale) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.rationale) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n {rationaleError && <div className={classes.errorText}>{rationaleError}</div>}\n </InputContainer>\n )}\n\n {feedbackEnabled && (\n <FeedbackConfig feedback={model.feedback} onChange={this.changeFeedback} toolbarOpts={toolbarOpts} />\n )}\n </layout.ConfigLayout>\n </IdProvider>\n );\n }\n}\n\nconst styles = (theme) => ({\n alternatesHeader: {\n marginBottom: theme.spacing.unit * 2,\n },\n text: {\n paddingTop: theme.spacing.unit * 2,\n paddingBottom: theme.spacing.unit * 2,\n },\n inputContainer: {\n width: '100%',\n paddingTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n },\n title: {\n marginBottom: theme.spacing.unit * 4,\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing.unit,\n },\n});\n\nexport default withDragContext(withStyles(styles)(Design));\n"],"file":"index.js"}
|
package/configure/lib/index.js
CHANGED
|
@@ -63,7 +63,7 @@ var CategorizeConfigure = /*#__PURE__*/function (_HTMLElement) {
|
|
|
63
63
|
(0, _createClass2["default"])(CategorizeConfigure, [{
|
|
64
64
|
key: "model",
|
|
65
65
|
set: function set(m) {
|
|
66
|
-
this._model = CategorizeConfigure.
|
|
66
|
+
this._model = CategorizeConfigure.createDefaultModel(m);
|
|
67
67
|
this.render();
|
|
68
68
|
}
|
|
69
69
|
}, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.js"],"names":["CategorizeConfigure","_model","createDefaultModel","_configuration","defaults","configuration","m","
|
|
1
|
+
{"version":3,"sources":["../src/index.js"],"names":["CategorizeConfigure","_model","createDefaultModel","_configuration","defaults","configuration","m","render","c","newConfiguration","language","enabled","languageChoices","options","length","value","settings","find","option","push","label","dispatchEvent","ModelUpdatedEvent","handler","InsertImageEvent","src","done","DeleteImageEvent","InsertSoundEvent","DeleteSoundEvent","el","React","createElement","Main","model","onModelChanged","bind","onConfigurationChanged","imageSupport","add","insertImage","onDeleteImage","uploadSoundSupport","insertSound","onDeleteSound","ReactDOM","HTMLElement","correctResponse","mappedCorrectResponse","map","cr","alternateResponses","response","allowAlternateEnabled"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport {\n ModelUpdatedEvent,\n DeleteImageEvent,\n InsertImageEvent,\n InsertSoundEvent,\n DeleteSoundEvent,\n} from '@pie-framework/pie-configure-events';\n\nimport Main from './main';\n\nimport defaults from './defaults';\n\nexport default class CategorizeConfigure extends HTMLElement {\n static createDefaultModel = (model = {}) => ({\n ...defaults.model,\n ...model,\n });\n\n // PD-2960: make sure we don't have alternates in model or possibility to add them (temporary solution)\n // this function is used in controller, too\n static disableAlternateResponses = (m) => {\n let { correctResponse } = m || {};\n correctResponse = correctResponse || [];\n const mappedCorrectResponse = correctResponse.map((cr) => {\n const { alternateResponses, ...response } = cr;\n return response;\n });\n return {\n ...m,\n correctResponse: mappedCorrectResponse,\n allowAlternateEnabled: false,\n };\n };\n\n constructor() {\n super();\n this._model = CategorizeConfigure.createDefaultModel();\n this._configuration = defaults.configuration;\n }\n\n set model(m) {\n this._model = CategorizeConfigure.createDefaultModel(m);\n this.render();\n }\n\n set configuration(c) {\n const newConfiguration = {\n ...defaults.configuration,\n ...c,\n };\n\n this._configuration = newConfiguration;\n\n // if language:enabled is true, then the corresponding default item model should include a language value;\n // if it is false, then the language field should be omitted from the item model.\n // if a default item model includes a language value (e.g., en_US) and the corresponding authoring view settings have language:settings = true,\n // then (a) language:enabled should also be true, and (b) that default language value should be represented in languageChoices[] (as a key).\n if (newConfiguration?.language?.enabled) {\n if (newConfiguration?.languageChoices?.options?.length) {\n this._model.language = newConfiguration?.languageChoices.options[0].value;\n }\n } else if (newConfiguration.language.settings && this._model.language) {\n this._configuration.language.enabled = true;\n\n if (!this._configuration.languageChoices.options || !this._configuration.languageChoices.options.length) {\n this._configuration.languageChoices.options = [];\n }\n\n // check if the language is already included in the languageChoices.options array\n // and if not, then add it.\n if (!this._configuration.languageChoices.options.find((option) => option.value === this._model.language)) {\n this._configuration.languageChoices.options.push({\n value: this._model.language,\n label: this._model.language,\n });\n }\n } else {\n delete this._model.language;\n }\n\n this.render();\n }\n\n onModelChanged(m) {\n this._model = m;\n\n this.render();\n this.dispatchEvent(new ModelUpdatedEvent(this._model, false));\n }\n\n onConfigurationChanged(c) {\n this._configuration = c;\n this.render();\n }\n\n connectedCallback() {}\n\n /**\n *\n * @param {done, progress, file} handler\n */\n insertImage(handler) {\n this.dispatchEvent(new InsertImageEvent(handler));\n }\n\n onDeleteImage(src, done) {\n this.dispatchEvent(new DeleteImageEvent(src, done));\n }\n\n insertSound(handler) {\n this.dispatchEvent(new InsertSoundEvent(handler));\n }\n\n onDeleteSound(src, done) {\n this.dispatchEvent(new DeleteSoundEvent(src, done));\n }\n\n render() {\n const el = React.createElement(Main, {\n model: this._model,\n configuration: this._configuration,\n onModelChanged: this.onModelChanged.bind(this),\n onConfigurationChanged: this.onConfigurationChanged.bind(this),\n imageSupport: {\n add: this.insertImage.bind(this),\n delete: this.onDeleteImage.bind(this),\n },\n uploadSoundSupport: {\n add: this.insertSound.bind(this),\n delete: this.onDeleteSound.bind(this),\n },\n });\n\n ReactDOM.render(el, this);\n }\n}\n"],"file":"index.js"}
|
package/controller/lib/index.js
CHANGED
|
@@ -183,8 +183,7 @@ var createDefaultModel = function createDefaultModel() {
|
|
|
183
183
|
exports.createDefaultModel = createDefaultModel;
|
|
184
184
|
|
|
185
185
|
var normalize = function normalize(question) {
|
|
186
|
-
|
|
187
|
-
return _objectSpread(_objectSpread({}, _defaults["default"]), newQuestion);
|
|
186
|
+
return _objectSpread(_objectSpread({}, _defaults["default"]), question);
|
|
188
187
|
};
|
|
189
188
|
/**
|
|
190
189
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.js"],"names":["translator","Translator","disableAlternateResponses","question","correctResponse","mappedCorrectResponse","map","cr","alternateResponses","response","allowAlternateEnabled","getPartialScore","builtCategories","reduce","acc","choices","placements","length","score","filter","ch","correct","maxScore","extraPlacements","totalScore","parseFloat","toFixed","getAlternates","c","alternate","getTotalScore","session","env","Object","keys","categories","answers","alternates","enabled","partialScoring","getCorrectness","Promise","resolve","mode","undefined","createDefaultModel","model","defaults","normalize","newQuestion","updateSession","normalizedQuestion","answerCorrectness","role","categoriesPerRow","choicesLabel","choicesPosition","feedback","feedbackEnabled","promptEnabled","prompt","rowLabels","rationaleEnabled","rationale","teacherInstructionsEnabled","teacherInstructions","language","maxChoicesPerCategory","note","lockChoiceOrder","filteredCorrectResponse","filteredChoices","choice","fb","t","lng","out","correctness","disabled","showNote","outcome","reject","Error","empty","createCorrectResponseSession","id","getInnerText","html","replaceAll","getContent","replace","validate","config","minChoices","maxChoices","minCategories","maxCategories","maxLengthPerChoice","maxLengthPerCategory","reversedChoices","reverse","errors","choicesErrors","categoriesErrors","forEach","field","required","category","label","index","content","identicalAnswer","slice","some","nbOfCategories","nbOfChoices","categoriesError","choicesError","hasAssociations","duplicateAlternateIndex","duplicateCategory","duplicateAlternate","associationError"],"mappings":"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","sourcesContent":["import isEmpty from 'lodash/isEmpty';\nimport { buildState, score } from '@pie-lib/pie-toolbox/categorize';\nimport { getFeedbackForCorrectness } from '@pie-lib/pie-toolbox/feedback';\nimport { lockChoices, getShuffledChoices, partialScoring } from '@pie-lib/pie-toolbox/controller-utils';\nimport Translator from '@pie-lib/pie-toolbox/translator';\n\nconst { translator } = Translator;\nimport defaults from './defaults';\nimport { isAlternateDuplicated, isCorrectResponseDuplicated } from './utils';\n\n// eslint-disable-next-line no-console\n\nexport { score };\n\n// PD-2960: make sure we don't have alternates in model or possibility to add them (temporary solution)\n// this function is used in configure part, too\nconst disableAlternateResponses = (question) => {\n let { correctResponse } = question || {};\n correctResponse = correctResponse || [];\n const mappedCorrectResponse = correctResponse.map((cr) => {\n const { alternateResponses, ...response } = cr;\n return response;\n });\n return {\n ...question,\n correctResponse: mappedCorrectResponse,\n allowAlternateEnabled: false,\n };\n};\n\nexport const getPartialScore = (correctResponse, builtCategories) => {\n // in the resulted best scenario we make a sum with all the correct responses\n // and all the placements\n const { placements, score } = builtCategories.reduce(\n (acc, { choices = [] }) => ({\n placements: acc.placements + choices.length,\n score: acc.score + choices.filter((ch) => ch.correct).length,\n }),\n { placements: 0, score: 0 },\n );\n\n // in the correct response, we make a sum of the max possible score\n const { maxScore } = correctResponse.reduce(\n (acc, { choices }) => ({\n maxScore: acc.maxScore + choices.length,\n }),\n { maxScore: 0 },\n );\n\n // if there are any extra placements, we subtract from the obtained score\n const extraPlacements = placements > maxScore ? placements - maxScore : 0;\n const totalScore = (score - extraPlacements) / maxScore;\n\n return totalScore < 0 ? 0 : parseFloat(totalScore.toFixed(2));\n};\n\nconst getAlternates = (correctResponse) =>\n correctResponse.map((c) => c.alternateResponses).filter((alternate) => alternate);\n\nexport const getTotalScore = (question, session, env) => {\n if (!session) {\n return 0;\n }\n\n if (Object.keys(session).length === 0) {\n return 0;\n }\n const { categories, choices } = question || {};\n let { correctResponse } = question || {};\n let { answers } = session || {};\n answers = answers || [];\n correctResponse = correctResponse || [];\n\n // this function is used in pie-ui/categorize as well, in order to get the best scenario\n // so we get the best scenario and calculate the score\n const { categories: builtCategories, correct } = buildState(categories, choices, answers, correctResponse);\n\n const alternates = getAlternates(correctResponse);\n const enabled = partialScoring.enabled(question, env);\n\n // if there are any alternates, there will be no partial scoring!\n if (enabled && !alternates.length) {\n // we apply partial scoring\n return getPartialScore(correctResponse, builtCategories);\n }\n\n // else we apply dichotomous\n return correct ? 1 : 0;\n};\n\nexport const getCorrectness = (question, session, env) => {\n return new Promise((resolve) => {\n if (env.mode === 'evaluate') {\n const score = getTotalScore(question, session, env);\n if (score === 1) {\n resolve('correct');\n } else if (score === 0) {\n resolve('incorrect');\n } else {\n resolve('partially-correct');\n }\n } else {\n resolve(undefined);\n }\n });\n};\n\nexport const createDefaultModel = (model = {}) =>\n new Promise((resolve) => {\n resolve({\n ...defaults,\n ...model,\n });\n });\n\nexport const normalize = (question) => {\n const newQuestion = disableAlternateResponses(question);\n return {\n ...defaults,\n ...newQuestion,\n };\n};\n\n/**\n *\n * @param {*} question\n * @param {*} session\n * @param {*} env\n * @param {*} updateSession - optional - a function that will set the properties passed into it on the session.\n */\nexport const model = (question, session, env, updateSession) =>\n new Promise(async (resolve) => {\n const normalizedQuestion = normalize(question);\n const answerCorrectness = await getCorrectness(normalizedQuestion, session, env);\n\n const { mode, role } = env || {};\n\n const {\n categories,\n categoriesPerRow,\n choicesLabel,\n choicesPosition,\n correctResponse,\n feedback,\n feedbackEnabled,\n promptEnabled,\n prompt,\n rowLabels,\n rationaleEnabled,\n rationale,\n teacherInstructionsEnabled,\n teacherInstructions,\n language,\n maxChoicesPerCategory,\n } = normalizedQuestion;\n let { choices, note } = normalizedQuestion;\n let fb;\n\n const lockChoiceOrder = lockChoices(normalizedQuestion, session, env);\n\n const filteredCorrectResponse = correctResponse.map((response) => {\n const filteredChoices = (response.choices || []).filter((choice) => choice !== 'null');\n return { ...response, choices: filteredChoices };\n });\n\n if (mode === 'evaluate' && feedbackEnabled) {\n fb = await getFeedbackForCorrectness(answerCorrectness, feedback);\n }\n\n if (!lockChoiceOrder) {\n choices = await getShuffledChoices(choices, session, updateSession, 'id');\n }\n\n if (!note) {\n note = translator.t('common:commonCorrectAnswerWithAlternates', { lng: language });\n }\n\n const alternates = getAlternates(filteredCorrectResponse);\n const out = {\n categories: categories || [],\n categoriesPerRow: categoriesPerRow || 2,\n maxChoicesPerCategory,\n correctness: answerCorrectness,\n choices: choices || [],\n choicesLabel: choicesLabel || '',\n choicesPosition,\n disabled: mode !== 'gather',\n feedback: fb,\n lockChoiceOrder,\n prompt: promptEnabled ? prompt : null,\n rowLabels,\n note,\n env,\n showNote: alternates && alternates.length > 0,\n correctResponse: mode === 'evaluate' ? filteredCorrectResponse : undefined,\n language\n };\n\n if (role === 'instructor' && (mode === 'view' || mode === 'evaluate')) {\n out.rationale = rationaleEnabled ? rationale : null;\n out.teacherInstructions = teacherInstructionsEnabled ? teacherInstructions : null;\n } else {\n out.rationale = null;\n out.teacherInstructions = null;\n }\n\n resolve(out);\n });\n\nexport const outcome = (question, session, env) => {\n if (env.mode !== 'evaluate') {\n return Promise.reject(new Error('Can not call outcome when mode is not evaluate'));\n } else {\n return new Promise((resolve) => {\n resolve({\n score: getTotalScore(question, session, env),\n empty: !session || isEmpty(session),\n });\n });\n }\n};\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n const { mode, role } = env || {};\n\n if (mode !== 'evaluate' && role === 'instructor') {\n const { correctResponse } = question;\n\n resolve({ answers: correctResponse, id: 1 });\n } else {\n return resolve(null);\n }\n });\n};\n\n// remove all html tags\nconst getInnerText = (html) => (html || '').replaceAll(/<[^>]*>/g, '');\n\n// remove all html tags except img and iframe\nconst getContent = (html) => (html || '').replace(/(<(?!img|iframe)([^>]+)>)/gi, '');\n\nexport const validate = (model = {}, config = {}) => {\n const { categories, choices, correctResponse } = model;\n const {\n minChoices = 1,\n maxChoices = 15,\n minCategories = 1,\n maxCategories = 12,\n maxLengthPerChoice = 300,\n maxLengthPerCategory = 150,\n } = config;\n const reversedChoices = [...(choices || [])].reverse();\n const errors = {};\n const choicesErrors = {};\n const categoriesErrors = {};\n\n ['teacherInstructions', 'prompt', 'rationale'].forEach((field) => {\n if (config[field]?.required && !getContent(model[field])) {\n errors[field] = 'This field is required.';\n }\n });\n\n (categories || []).forEach((category) => {\n const { id, label } = category;\n\n if (getInnerText(label).length > maxLengthPerCategory) {\n categoriesErrors[id] = `Category labels should be no more than ${maxLengthPerCategory} characters long.`;\n }\n });\n\n (reversedChoices || []).forEach((choice, index) => {\n const { id, content } = choice;\n\n if (getInnerText(content).length > maxLengthPerChoice) {\n choicesErrors[id] = `Tokens should be no more than ${maxLengthPerChoice} characters long.`;\n }\n\n if (!getContent(content)) {\n choicesErrors[id] = 'Tokens should not be empty.';\n } else {\n const identicalAnswer = reversedChoices.slice(index + 1).some((c) => c.content === content);\n\n if (identicalAnswer) {\n choicesErrors[id] = 'Tokens content should be unique.';\n }\n }\n });\n\n const nbOfCategories = (categories || []).length;\n const nbOfChoices = (choices || []).length;\n\n if (nbOfCategories > maxCategories) {\n errors.categoriesError = `No more than ${maxCategories} categories should be defined.`;\n } else if (nbOfCategories < minCategories) {\n errors.categoriesError = `There should be at least ${minCategories} category defined.`;\n }\n\n if (nbOfChoices < minChoices) {\n errors.choicesError = `There should be at least ${minChoices} choices defined.`;\n } else if (nbOfChoices > maxChoices) {\n errors.choicesError = `No more than ${maxChoices} choices should be defined.`;\n }\n\n if (nbOfChoices && nbOfCategories) {\n let hasAssociations = false;\n\n (correctResponse || []).forEach((response) => {\n const { choices = [], alternateResponses = [] } = response;\n\n if (choices.length) {\n hasAssociations = true;\n } else {\n alternateResponses.forEach((alternate) => {\n if ((alternate || []).length) {\n hasAssociations = true;\n }\n });\n }\n });\n\n let duplicateAlternateIndex = -1;\n let duplicateCategory = '';\n (correctResponse || []).forEach((response) => {\n const { choices = [], alternateResponses = [], category } = response;\n\n if (duplicateAlternateIndex === -1) {\n duplicateAlternateIndex = isCorrectResponseDuplicated(choices, alternateResponses);\n\n if (duplicateAlternateIndex === -1) {\n duplicateAlternateIndex = isAlternateDuplicated(alternateResponses);\n }\n\n duplicateCategory = category;\n }\n });\n\n if (duplicateAlternateIndex > -1) {\n errors.duplicateAlternate = { index: duplicateAlternateIndex, category: duplicateCategory };\n }\n\n if (!hasAssociations) {\n errors.associationError = 'At least one token should be assigned to at least one category.';\n }\n }\n\n if (!isEmpty(choicesErrors)) {\n errors.choicesErrors = choicesErrors;\n }\n\n if (!isEmpty(categoriesErrors)) {\n errors.categoriesErrors = categoriesErrors;\n }\n\n return errors;\n};\n"],"file":"index.js"}
|
|
1
|
+
{"version":3,"sources":["../src/index.js"],"names":["translator","Translator","disableAlternateResponses","question","correctResponse","mappedCorrectResponse","map","cr","alternateResponses","response","allowAlternateEnabled","getPartialScore","builtCategories","reduce","acc","choices","placements","length","score","filter","ch","correct","maxScore","extraPlacements","totalScore","parseFloat","toFixed","getAlternates","c","alternate","getTotalScore","session","env","Object","keys","categories","answers","alternates","enabled","partialScoring","getCorrectness","Promise","resolve","mode","undefined","createDefaultModel","model","defaults","normalize","updateSession","normalizedQuestion","answerCorrectness","role","categoriesPerRow","choicesLabel","choicesPosition","feedback","feedbackEnabled","promptEnabled","prompt","rowLabels","rationaleEnabled","rationale","teacherInstructionsEnabled","teacherInstructions","language","maxChoicesPerCategory","note","lockChoiceOrder","filteredCorrectResponse","filteredChoices","choice","fb","t","lng","out","correctness","disabled","showNote","outcome","reject","Error","empty","createCorrectResponseSession","id","getInnerText","html","replaceAll","getContent","replace","validate","config","minChoices","maxChoices","minCategories","maxCategories","maxLengthPerChoice","maxLengthPerCategory","reversedChoices","reverse","errors","choicesErrors","categoriesErrors","forEach","field","required","category","label","index","content","identicalAnswer","slice","some","nbOfCategories","nbOfChoices","categoriesError","choicesError","hasAssociations","duplicateAlternateIndex","duplicateCategory","duplicateAlternate","associationError"],"mappings":"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","sourcesContent":["import isEmpty from 'lodash/isEmpty';\nimport { buildState, score } from '@pie-lib/pie-toolbox/categorize';\nimport { getFeedbackForCorrectness } from '@pie-lib/pie-toolbox/feedback';\nimport { lockChoices, getShuffledChoices, partialScoring } from '@pie-lib/pie-toolbox/controller-utils';\nimport Translator from '@pie-lib/pie-toolbox/translator';\n\nconst { translator } = Translator;\nimport defaults from './defaults';\nimport { isAlternateDuplicated, isCorrectResponseDuplicated } from './utils';\n\n// eslint-disable-next-line no-console\n\nexport { score };\n\n// PD-2960: make sure we don't have alternates in model or possibility to add them (temporary solution)\n// this function is used in configure part, too\nconst disableAlternateResponses = (question) => {\n let { correctResponse } = question || {};\n correctResponse = correctResponse || [];\n const mappedCorrectResponse = correctResponse.map((cr) => {\n const { alternateResponses, ...response } = cr;\n return response;\n });\n return {\n ...question,\n correctResponse: mappedCorrectResponse,\n allowAlternateEnabled: false,\n };\n};\n\nexport const getPartialScore = (correctResponse, builtCategories) => {\n // in the resulted best scenario we make a sum with all the correct responses\n // and all the placements\n const { placements, score } = builtCategories.reduce(\n (acc, { choices = [] }) => ({\n placements: acc.placements + choices.length,\n score: acc.score + choices.filter((ch) => ch.correct).length,\n }),\n { placements: 0, score: 0 },\n );\n\n // in the correct response, we make a sum of the max possible score\n const { maxScore } = correctResponse.reduce(\n (acc, { choices }) => ({\n maxScore: acc.maxScore + choices.length,\n }),\n { maxScore: 0 },\n );\n\n // if there are any extra placements, we subtract from the obtained score\n const extraPlacements = placements > maxScore ? placements - maxScore : 0;\n const totalScore = (score - extraPlacements) / maxScore;\n\n return totalScore < 0 ? 0 : parseFloat(totalScore.toFixed(2));\n};\n\nconst getAlternates = (correctResponse) =>\n correctResponse.map((c) => c.alternateResponses).filter((alternate) => alternate);\n\nexport const getTotalScore = (question, session, env) => {\n if (!session) {\n return 0;\n }\n\n if (Object.keys(session).length === 0) {\n return 0;\n }\n const { categories, choices } = question || {};\n let { correctResponse } = question || {};\n let { answers } = session || {};\n answers = answers || [];\n correctResponse = correctResponse || [];\n\n // this function is used in pie-ui/categorize as well, in order to get the best scenario\n // so we get the best scenario and calculate the score\n const { categories: builtCategories, correct } = buildState(categories, choices, answers, correctResponse);\n\n const alternates = getAlternates(correctResponse);\n const enabled = partialScoring.enabled(question, env);\n\n // if there are any alternates, there will be no partial scoring!\n if (enabled && !alternates.length) {\n // we apply partial scoring\n return getPartialScore(correctResponse, builtCategories);\n }\n\n // else we apply dichotomous\n return correct ? 1 : 0;\n};\n\nexport const getCorrectness = (question, session, env) => {\n return new Promise((resolve) => {\n if (env.mode === 'evaluate') {\n const score = getTotalScore(question, session, env);\n if (score === 1) {\n resolve('correct');\n } else if (score === 0) {\n resolve('incorrect');\n } else {\n resolve('partially-correct');\n }\n } else {\n resolve(undefined);\n }\n });\n};\n\nexport const createDefaultModel = (model = {}) =>\n new Promise((resolve) => {\n resolve({\n ...defaults,\n ...model,\n });\n });\n\nexport const normalize = (question) => {\n return {\n ...defaults,\n ...question,\n };\n};\n\n/**\n *\n * @param {*} question\n * @param {*} session\n * @param {*} env\n * @param {*} updateSession - optional - a function that will set the properties passed into it on the session.\n */\nexport const model = (question, session, env, updateSession) =>\n new Promise(async (resolve) => {\n const normalizedQuestion = normalize(question);\n const answerCorrectness = await getCorrectness(normalizedQuestion, session, env);\n\n const { mode, role } = env || {};\n\n const {\n categories,\n categoriesPerRow,\n choicesLabel,\n choicesPosition,\n correctResponse,\n feedback,\n feedbackEnabled,\n promptEnabled,\n prompt,\n rowLabels,\n rationaleEnabled,\n rationale,\n teacherInstructionsEnabled,\n teacherInstructions,\n language,\n maxChoicesPerCategory,\n } = normalizedQuestion;\n let { choices, note } = normalizedQuestion;\n let fb;\n\n const lockChoiceOrder = lockChoices(normalizedQuestion, session, env);\n\n const filteredCorrectResponse = correctResponse.map((response) => {\n const filteredChoices = (response.choices || []).filter((choice) => choice !== 'null');\n return { ...response, choices: filteredChoices };\n });\n\n if (mode === 'evaluate' && feedbackEnabled) {\n fb = await getFeedbackForCorrectness(answerCorrectness, feedback);\n }\n\n if (!lockChoiceOrder) {\n choices = await getShuffledChoices(choices, session, updateSession, 'id');\n }\n\n if (!note) {\n note = translator.t('common:commonCorrectAnswerWithAlternates', { lng: language });\n }\n\n const alternates = getAlternates(filteredCorrectResponse);\n const out = {\n categories: categories || [],\n categoriesPerRow: categoriesPerRow || 2,\n maxChoicesPerCategory,\n correctness: answerCorrectness,\n choices: choices || [],\n choicesLabel: choicesLabel || '',\n choicesPosition,\n disabled: mode !== 'gather',\n feedback: fb,\n lockChoiceOrder,\n prompt: promptEnabled ? prompt : null,\n rowLabels,\n note,\n env,\n showNote: alternates && alternates.length > 0,\n correctResponse: mode === 'evaluate' ? filteredCorrectResponse : undefined,\n language,\n };\n\n if (role === 'instructor' && (mode === 'view' || mode === 'evaluate')) {\n out.rationale = rationaleEnabled ? rationale : null;\n out.teacherInstructions = teacherInstructionsEnabled ? teacherInstructions : null;\n } else {\n out.rationale = null;\n out.teacherInstructions = null;\n }\n\n resolve(out);\n });\n\nexport const outcome = (question, session, env) => {\n if (env.mode !== 'evaluate') {\n return Promise.reject(new Error('Can not call outcome when mode is not evaluate'));\n } else {\n return new Promise((resolve) => {\n resolve({\n score: getTotalScore(question, session, env),\n empty: !session || isEmpty(session),\n });\n });\n }\n};\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n const { mode, role } = env || {};\n\n if (mode !== 'evaluate' && role === 'instructor') {\n const { correctResponse } = question;\n\n resolve({ answers: correctResponse, id: 1 });\n } else {\n return resolve(null);\n }\n });\n};\n\n// remove all html tags\nconst getInnerText = (html) => (html || '').replaceAll(/<[^>]*>/g, '');\n\n// remove all html tags except img and iframe\nconst getContent = (html) => (html || '').replace(/(<(?!img|iframe)([^>]+)>)/gi, '');\n\nexport const validate = (model = {}, config = {}) => {\n const { categories, choices, correctResponse } = model;\n const {\n minChoices = 1,\n maxChoices = 15,\n minCategories = 1,\n maxCategories = 12,\n maxLengthPerChoice = 300,\n maxLengthPerCategory = 150,\n } = config;\n const reversedChoices = [...(choices || [])].reverse();\n const errors = {};\n const choicesErrors = {};\n const categoriesErrors = {};\n\n ['teacherInstructions', 'prompt', 'rationale'].forEach((field) => {\n if (config[field]?.required && !getContent(model[field])) {\n errors[field] = 'This field is required.';\n }\n });\n\n (categories || []).forEach((category) => {\n const { id, label } = category;\n\n if (getInnerText(label).length > maxLengthPerCategory) {\n categoriesErrors[id] = `Category labels should be no more than ${maxLengthPerCategory} characters long.`;\n }\n });\n\n (reversedChoices || []).forEach((choice, index) => {\n const { id, content } = choice;\n\n if (getInnerText(content).length > maxLengthPerChoice) {\n choicesErrors[id] = `Tokens should be no more than ${maxLengthPerChoice} characters long.`;\n }\n\n if (!getContent(content)) {\n choicesErrors[id] = 'Tokens should not be empty.';\n } else {\n const identicalAnswer = reversedChoices.slice(index + 1).some((c) => c.content === content);\n\n if (identicalAnswer) {\n choicesErrors[id] = 'Tokens content should be unique.';\n }\n }\n });\n\n const nbOfCategories = (categories || []).length;\n const nbOfChoices = (choices || []).length;\n\n if (nbOfCategories > maxCategories) {\n errors.categoriesError = `No more than ${maxCategories} categories should be defined.`;\n } else if (nbOfCategories < minCategories) {\n errors.categoriesError = `There should be at least ${minCategories} category defined.`;\n }\n\n if (nbOfChoices < minChoices) {\n errors.choicesError = `There should be at least ${minChoices} choices defined.`;\n } else if (nbOfChoices > maxChoices) {\n errors.choicesError = `No more than ${maxChoices} choices should be defined.`;\n }\n\n if (nbOfChoices && nbOfCategories) {\n let hasAssociations = false;\n\n (correctResponse || []).forEach((response) => {\n const { choices = [], alternateResponses = [] } = response;\n\n if (choices.length) {\n hasAssociations = true;\n } else {\n alternateResponses.forEach((alternate) => {\n if ((alternate || []).length) {\n hasAssociations = true;\n }\n });\n }\n });\n\n let duplicateAlternateIndex = -1;\n let duplicateCategory = '';\n (correctResponse || []).forEach((response) => {\n const { choices = [], alternateResponses = [], category } = response;\n\n if (duplicateAlternateIndex === -1) {\n duplicateAlternateIndex = isCorrectResponseDuplicated(choices, alternateResponses);\n\n if (duplicateAlternateIndex === -1) {\n duplicateAlternateIndex = isAlternateDuplicated(alternateResponses);\n }\n\n duplicateCategory = category;\n }\n });\n\n if (duplicateAlternateIndex > -1) {\n errors.duplicateAlternate = { index: duplicateAlternateIndex, category: duplicateCategory };\n }\n\n if (!hasAssociations) {\n errors.associationError = 'At least one token should be assigned to at least one category.';\n }\n }\n\n if (!isEmpty(choicesErrors)) {\n errors.choicesErrors = choicesErrors;\n }\n\n if (!isEmpty(categoriesErrors)) {\n errors.categoriesErrors = categoriesErrors;\n }\n\n return errors;\n};\n"],"file":"index.js"}
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
7
|
-
"version": "8.17.1-next.
|
|
7
|
+
"version": "8.17.1-next.21+b95f5af88",
|
|
8
8
|
"description": "",
|
|
9
9
|
"author": "pie framework developers",
|
|
10
10
|
"license": "ISC",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"react-dnd": "^14.0.5",
|
|
21
21
|
"react-dom": "^16.8.1"
|
|
22
22
|
},
|
|
23
|
-
"gitHead": "
|
|
23
|
+
"gitHead": "b95f5af88bcf81b68840ae2ace95f21b47c7a647",
|
|
24
24
|
"scripts": {
|
|
25
25
|
"postpublish": "../../scripts/postpublish"
|
|
26
26
|
},
|