Skip to content

Commit b6fa0cf

Browse files
feat: generic criterion feedback component
1 parent e3539f1 commit b6fa0cf

File tree

20 files changed

+85
-664
lines changed

20 files changed

+85
-664
lines changed

src/components/Assessment/EditableAssessment/index.jsx

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@ import { Card, StatefulButton } from '@edx/paragon';
44
import { useIntl } from '@edx/frontend-platform/i18n';
55

66
import { MutationStatus } from 'data/services/lms/constants';
7-
import CriterionContainer from '../components/CriterionContainer';
8-
import OverallFeedback from '../components/OverallFeedback';
7+
import CriterionContainer from 'components/CriterionContainer';
8+
import RadioCriterion from 'components/CriterionContainer/RadioCriterion';
9+
import CriterionFeedback from 'components/CriterionContainer/CriterionFeedback';
10+
import OverallFeedback from './OverallFeedback';
911

1012
import useEditableAssessmentData from './hooks';
1113
import messages from '../messages';
@@ -30,11 +32,20 @@ const EditableAssessment = () => {
3032
<hr className="m-2.5" />
3133
{criteria.map((criterion) => (
3234
<CriterionContainer
33-
isGrading
34-
{...{
35-
key: criterion.name,
36-
criterion: { ...criterion, ...formFields.criteria[criterion.name] },
37-
}}
35+
key={criterion.name}
36+
criterion={{ ...criterion }}
37+
input={(
38+
<RadioCriterion
39+
criterion={criterion}
40+
formFields={formFields.criteria[criterion.name].options}
41+
/>
42+
)}
43+
feedback={(
44+
<CriterionFeedback
45+
criterion={criterion}
46+
formFields={formFields.criteria[criterion.name].feedback}
47+
/>
48+
)}
3849
/>
3950
))}
4051
<hr />

src/components/Assessment/ReadonlyAssessment/hooks.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { useRubricConfig } from 'data/services/lms/hooks/selectors';
22

3-
export const useReadonlyRubricData = ({ assessment }) => {
3+
export const useReadonlyAssessmentData = ({ assessment }) => {
44
const { criteria, feedbackConfig } = useRubricConfig();
55

66
const criterionData = (criterion) => ({
@@ -19,4 +19,4 @@ export const useReadonlyRubricData = ({ assessment }) => {
1919
};
2020
};
2121

22-
export default useReadonlyRubricData;
22+
export default useReadonlyAssessmentData;

src/components/Assessment/ReadonlyAssessment/index.jsx

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,19 @@ import PropTypes from 'prop-types';
44
import { Card } from '@edx/paragon';
55
import { useIntl } from '@edx/frontend-platform/i18n';
66

7-
import CriterionContainer from '../components/CriterionContainer';
8-
import { useReadonlyRubricData } from './hooks';
7+
import CriterionContainer from 'components/CriterionContainer';
8+
import ReviewCriterion from 'components/CriterionContainer/ReviewCriterion';
9+
import { useReadonlyAssessmentData } from './hooks';
910
import messages from '../messages';
1011

1112
/**
12-
* <ReadonlyRubric />
13+
* <ReadonlyAssessment />
1314
*/
14-
const ReadonlyRubric = ({ assessment }) => {
15+
const ReadonlyAssessment = ({ assessment }) => {
1516
const {
1617
criteria,
1718
overallFeedbackDisabled,
18-
} = useReadonlyRubricData({ assessment });
19+
} = useReadonlyAssessmentData({ assessment });
1920

2021
const { formatMessage } = useIntl();
2122
return (
@@ -27,11 +28,13 @@ const ReadonlyRubric = ({ assessment }) => {
2728
<CriterionContainer
2829
key={criterion.name}
2930
isGrading={false}
30-
criterion={{
31-
...criterion,
32-
optionsValue: assessment.optionsSelected[criterion.name],
33-
feedbackValue: assessment.criterionFeedback[criterion.name],
34-
}}
31+
criterion={criterion}
32+
input={(
33+
<ReviewCriterion
34+
selectedOption={criterion.options[assessment.optionsSelected[criterion.name]]}
35+
feedbackValue={assessment.criterionFeedback[criterion.name]}
36+
/>
37+
)}
3538
/>
3639
))}
3740
{!overallFeedbackDisabled && (
@@ -43,12 +46,12 @@ const ReadonlyRubric = ({ assessment }) => {
4346
);
4447
};
4548

46-
ReadonlyRubric.propTypes = {
49+
ReadonlyAssessment.propTypes = {
4750
assessment: PropTypes.shape({
4851
optionsSelected: PropTypes.objectOf(PropTypes.string).isRequired,
4952
criterionFeedback: PropTypes.objectOf(PropTypes.string).isRequired,
5053
overallFeedback: PropTypes.string,
5154
}).isRequired,
5255
};
5356

54-
export default ReadonlyRubric;
57+
export default ReadonlyAssessment;

src/components/Assessment/components/CriterionContainer/CriterionFeedback.test.jsx

Lines changed: 0 additions & 73 deletions
This file was deleted.

src/components/Assessment/components/CriterionContainer/RadioCriterion.test.jsx

Lines changed: 0 additions & 67 deletions
This file was deleted.

src/components/Assessment/components/CriterionContainer/ReviewCriterion.jsx

Lines changed: 0 additions & 46 deletions
This file was deleted.

src/components/Assessment/components/CriterionContainer/ReviewCriterion.test.jsx

Lines changed: 0 additions & 29 deletions
This file was deleted.

0 commit comments

Comments
 (0)