Files
frontend-app-authoring/src/editors/data/constants/problem.js
2023-04-18 13:23:18 -04:00

219 lines
8.1 KiB
JavaScript

import { StrictDict } from '../../utils';
import singleSelect from '../images/singleSelect.png';
import multiSelect from '../images/multiSelect.png';
import dropdown from '../images/dropdown.png';
import numericalInput from '../images/numericalInput.png';
import textInput from '../images/textInput.png';
import advancedOlxTemplates from './advancedOlxTemplates';
import basicOlxTemplates from './basicOlxTemplates';
export const ProblemTypeKeys = StrictDict({
SINGLESELECT: 'multiplechoiceresponse',
MULTISELECT: 'choiceresponse',
DROPDOWN: 'optionresponse',
NUMERIC: 'numericalresponse',
TEXTINPUT: 'stringresponse',
ADVANCED: 'advanced',
});
export const ProblemTypes = StrictDict({
[ProblemTypeKeys.SINGLESELECT]: {
title: 'Single select',
preview: singleSelect,
previewDescription: 'Learners must select the correct answer from a list of possible options.',
description: 'Enter your single select answers below and select which choices are correct. Learners must choose one correct answer.',
helpLink: 'https://edx.readthedocs.io/projects/edx-partner-course-staff/en/latest/exercises_tools/multiple_choice.html',
prev: ProblemTypeKeys.TEXTINPUT,
next: ProblemTypeKeys.MULTISELECT,
template: basicOlxTemplates.singleSelect,
},
[ProblemTypeKeys.MULTISELECT]: {
title: 'Multi-select',
preview: multiSelect,
previewDescription: 'Learners must select all correct answers from a list of possible options.',
description: 'Enter your multi select answers below and select which choices are correct. Learners must choose all correct answers.',
helpLink: 'https://edx.readthedocs.io/projects/edx-partner-course-staff/en/latest/exercises_tools/checkbox.html',
next: ProblemTypeKeys.DROPDOWN,
prev: ProblemTypeKeys.SINGLESELECT,
template: basicOlxTemplates.multiSelect,
},
[ProblemTypeKeys.DROPDOWN]: {
title: 'Dropdown',
preview: dropdown,
previewDescription: 'Learners must select the correct answer from a list of possible options',
description: 'Enter your dropdown answers below and select which choice is correct. Learners must select one correct answer.',
helpLink: 'https://edx.readthedocs.io/projects/edx-partner-course-staff/en/latest/exercises_tools/dropdown.html',
next: ProblemTypeKeys.NUMERIC,
prev: ProblemTypeKeys.MULTISELECT,
template: basicOlxTemplates.dropdown,
},
[ProblemTypeKeys.NUMERIC]: {
title: 'Numerical input',
preview: numericalInput,
previewDescription: 'Specify one or more correct numeric answers, submitted in a response field.',
description: 'Enter correct numerical input answers below. Learners must enter one correct answer.',
helpLink: 'https://edx.readthedocs.io/projects/edx-partner-course-staff/en/latest/exercises_tools/numerical_input.html',
next: ProblemTypeKeys.TEXTINPUT,
prev: ProblemTypeKeys.DROPDOWN,
template: basicOlxTemplates.numeric,
},
[ProblemTypeKeys.TEXTINPUT]: {
title: 'Text input',
preview: textInput,
previewDescription: 'Specify one or more correct text answers, including numbers and special characters, submitted in a response field.',
description: 'Enter your text input answers below and select which choices are correct. Learners must enter one correct answer.',
helpLink: 'https://edx.readthedocs.io/projects/edx-partner-course-staff/en/latest/exercises_tools/text_input.html',
prev: ProblemTypeKeys.NUMERIC,
next: ProblemTypeKeys.SINGLESELECT,
template: basicOlxTemplates.textInput,
},
[ProblemTypeKeys.ADVANCED]: {
title: 'Advanced Problem',
preview: ('<div />'),
description: 'An Advanced Problem Type',
helpLink: 'something.com',
},
});
export const AdvanceProblemKeys = StrictDict({
BLANK: 'blankadvanced',
CIRCUITSCHEMATIC: 'circuitschematic',
JSINPUT: 'jsinputresponse',
CUSTOMGRADER: 'customgrader',
IMAGE: 'imageresponse',
FORMULA: 'formularesponse',
PROBLEMWITHHINT: 'problemwithhint',
});
export const AdvanceProblems = StrictDict({
[AdvanceProblemKeys.BLANK]: {
title: 'Blank advanced problem',
status: '',
template: '<problem></problem>',
},
[AdvanceProblemKeys.CIRCUITSCHEMATIC]: {
title: 'Circuit schematic builder',
status: 'Not supported',
template: advancedOlxTemplates.circuitSchematic,
},
[AdvanceProblemKeys.JSINPUT]: {
title: 'Custom JavaScript display and grading',
status: '',
template: advancedOlxTemplates.jsInputResponse,
},
[AdvanceProblemKeys.CUSTOMGRADER]: {
title: 'Custom Python-evaluated input',
status: 'Provisional',
template: advancedOlxTemplates.customGrader,
},
[AdvanceProblemKeys.IMAGE]: {
title: 'Image mapped input',
status: 'Not supported',
template: advancedOlxTemplates.imageResponse,
},
[AdvanceProblemKeys.FORMULA]: {
title: 'Math expression input',
status: '',
template: advancedOlxTemplates.formulaResponse,
},
[AdvanceProblemKeys.PROBLEMWITHHINT]: {
title: 'Problem with adaptive hint',
status: 'Not supported',
template: advancedOlxTemplates.problemWithHint,
},
});
export const ShowAnswerTypesKeys = StrictDict({
ALWAYS: 'always',
ANSWERED: 'answered',
ATTEMPTED: 'attempted',
CLOSED: 'closed',
FINISHED: 'finished',
CORRECT_OR_PAST_DUE: 'correct_or_past_due',
PAST_DUE: 'past_due',
NEVER: 'never',
AFTER_SOME_NUMBER_OF_ATTEMPTS: 'after_attempts',
AFTER_ALL_ATTEMPTS: 'after_all_attempts',
AFTER_ALL_ATTEMPTS_OR_CORRECT: 'after_all_attempts_or_correct',
ATTEMPTED_NO_PAST_DUE: 'attempted_no_past_due',
});
export const ShowAnswerTypes = StrictDict({
[ShowAnswerTypesKeys.ALWAYS]: {
id: 'authoring.problemeditor.settings.showanswertype.always',
defaultMessage: 'Always',
},
[ShowAnswerTypesKeys.ANSWERED]: {
id: 'authoring.problemeditor.settings.showanswertype.answered',
defaultMessage: 'Answered',
},
[ShowAnswerTypesKeys.ATTEMPTED]: {
id: 'authoring.problemeditor.settings.showanswertype.attempted',
defaultMessage: 'Attempted or Past Due',
},
[ShowAnswerTypesKeys.CLOSED]: {
id: 'authoring.problemeditor.settings.showanswertype.closed',
defaultMessage: 'Closed',
},
[ShowAnswerTypesKeys.FINISHED]: {
id: 'authoring.problemeditor.settings.showanswertype.finished',
defaultMessage: 'Finished',
},
[ShowAnswerTypesKeys.CORRECT_OR_PAST_DUE]: {
id: 'authoring.problemeditor.settings.showanswertype.correct_or_past_due',
defaultMessage: 'Correct or Past Due',
},
[ShowAnswerTypesKeys.PAST_DUE]: {
id: 'authoring.problemeditor.settings.showanswertype.past_due',
defaultMessage: 'Past Due',
},
[ShowAnswerTypesKeys.NEVER]: {
id: 'authoring.problemeditor.settings.showanswertype.never',
defaultMessage: 'Never',
},
[ShowAnswerTypesKeys.AFTER_SOME_NUMBER_OF_ATTEMPTS]: {
id: 'authoring.problemeditor.settings.showanswertype.after_attempts',
defaultMessage: 'After Some Number of Attempts',
},
[ShowAnswerTypesKeys.AFTER_ALL_ATTEMPTS]: {
id: 'authoring.problemeditor.settings.showanswertype.after_all_attempts',
defaultMessage: 'After All Attempts',
},
[ShowAnswerTypesKeys.AFTER_ALL_ATTEMPTS_OR_CORRECT]: {
id: 'authoring.problemeditor.settings.showanswertype.after_all_attempts_or_correct',
defaultMessage: 'After All Attempts or Correct',
},
[ShowAnswerTypesKeys.ATTEMPTED_NO_PAST_DUE]: {
id: 'authoring.problemeditor.settings.showanswertype.attempted_no_past_due',
defaultMessage: 'Attempted',
},
});
export const RandomizationTypesKeys = StrictDict({
ALWAYS: 'always',
NEVER: 'never',
ONRESET: 'on_reset',
PERSTUDENT: 'per_student',
});
export const RandomizationTypes = StrictDict({
[RandomizationTypesKeys.ALWAYS]:
{
id: 'authoring.problemeditor.settings.RandomizationTypes.always',
defaultMessage: 'Always',
},
[RandomizationTypesKeys.NEVER]:
{
id: 'authoring.problemeditor.settings.RandomizationTypes.never',
defaultMessage: 'Never',
},
[RandomizationTypesKeys.ONRESET]: {
id: 'authoring.problemeditor.settings.RandomizationTypes.onreset',
defaultMessage: 'On Reset',
},
[RandomizationTypesKeys.PERSTUDENT]: {
id: 'authoring.problemeditor.settings.RandomizationTypes.perstudent',
defaultMessage: 'Per Student',
},
});