Skip to content

Commit 2f4258b

Browse files
feat: readonly rubric
1 parent 2b083a6 commit 2f4258b

19 files changed

+75
-1140
lines changed

src/components/Assessment/ReadonlyAssessment/index.jsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { Card } from '@edx/paragon';
55
import { useIntl } from '@edx/frontend-platform/i18n';
66

77
import CriterionContainer from 'components/CriterionContainer';
8-
import ReviewCriterion from 'components/CriterionContainer/ReviewCriterion';
8+
import GradedCriterion from 'components/CriterionContainer/GradedCriterion';
99
import { useReadonlyAssessmentData } from './hooks';
1010
import messages from '../messages';
1111

@@ -30,7 +30,7 @@ const ReadonlyAssessment = ({ assessment }) => {
3030
isGrading={false}
3131
criterion={criterion}
3232
input={(
33-
<ReviewCriterion
33+
<GradedCriterion
3434
selectedOption={criterion.options[assessment.optionsSelected[criterion.name]]}
3535
feedbackValue={assessment.criterionFeedback[criterion.name]}
3636
/>
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import React from 'react';
2+
import PropTypes from 'prop-types';
3+
4+
import { Form, FormControlFeedback } from '@edx/paragon';
5+
import { FormattedMessage } from '@edx/frontend-platform/i18n';
6+
7+
import messages from './messages';
8+
9+
/**
10+
* <ReviewCriterion />
11+
*/
12+
const ReviewCriterion = ({ selectedOption, feedbackValue }) => (
13+
<div className="review-criterion">
14+
<Form.Label className="option-label">{selectedOption.name}</Form.Label>
15+
<div key={selectedOption.name} className="criteria-option">
16+
<div>
17+
<FormControlFeedback className="option-points">
18+
<FormattedMessage
19+
{...messages.optionPoints}
20+
values={{ points: selectedOption.points }}
21+
/>
22+
</FormControlFeedback>
23+
{feedbackValue && <div className="rubric-feedback">{feedbackValue}</div>}
24+
</div>
25+
</div>
26+
</div>
27+
);
28+
29+
ReviewCriterion.defaultProps = {
30+
feedbackValue: null,
31+
};
32+
ReviewCriterion.propTypes = {
33+
selectedOption: PropTypes.shape({
34+
name: PropTypes.string.isRequired,
35+
points: PropTypes.number.isRequired,
36+
}).isRequired,
37+
feedbackValue: PropTypes.string,
38+
};
39+
40+
export default ReviewCriterion;

src/components/CriterionContainer/ReviewCriterion.jsx

Lines changed: 24 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -9,32 +9,35 @@ import messages from './messages';
99
/**
1010
* <ReviewCriterion />
1111
*/
12-
const ReviewCriterion = ({ selectedOption, feedbackValue }) => (
13-
<div className="review-criterion">
14-
<Form.Label className="option-label">{selectedOption.name}</Form.Label>
15-
<div key={selectedOption.name} className="criteria-option">
16-
<div>
17-
<FormControlFeedback className="option-points">
18-
<FormattedMessage
19-
{...messages.optionPoints}
20-
values={{ points: selectedOption.points }}
21-
/>
22-
</FormControlFeedback>
23-
{feedbackValue && <div className="rubric-feedback">{feedbackValue}</div>}
24-
</div>
12+
const ReviewCriterion = ({ criterion }) => (
13+
<Form.Group>
14+
<div className="review-criterion">
15+
{criterion.options.map((option) => (
16+
<>
17+
<Form.Label className="option-label">{option.name}</Form.Label>
18+
<div key={option.name} className="criteria-option">
19+
<div>
20+
<FormControlFeedback className="option-points">
21+
<FormattedMessage
22+
{...messages.optionPoints}
23+
values={{ points: option.points }}
24+
/>
25+
</FormControlFeedback>
26+
</div>
27+
</div>
28+
</>
29+
))}
2530
</div>
26-
</div>
31+
</Form.Group>
2732
);
2833

29-
ReviewCriterion.defaultProps = {
30-
feedbackValue: null,
31-
};
3234
ReviewCriterion.propTypes = {
33-
selectedOption: PropTypes.shape({
34-
name: PropTypes.string.isRequired,
35-
points: PropTypes.number.isRequired,
35+
criterion: PropTypes.shape({
36+
options: PropTypes.arrayOf(PropTypes.shape({
37+
name: PropTypes.string,
38+
point: PropTypes.number,
39+
})),
3640
}).isRequired,
37-
feedbackValue: PropTypes.string,
3841
};
3942

4043
export default ReviewCriterion;

src/components/Rubric/CriterionContainer/CriterionFeedback.jsx

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

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

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

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

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

src/components/Rubric/CriterionContainer/ReviewCriterion.jsx

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

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

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

0 commit comments

Comments
 (0)