Skip to content

Commit a09bb36

Browse files
committed
feat(RubricBasedResponse): add CSV export for RubricBasedResponse answers
1 parent e2fc62d commit a09bb36

3 files changed

Lines changed: 29 additions & 3 deletions

File tree

app/models/course/assessment/question/rubric_based_response.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,10 @@ def history_viewable?
3939
true
4040
end
4141

42+
def csv_downloadable?
43+
true
44+
end
45+
4246
def attempt(submission, last_attempt = nil)
4347
answer = Course::Assessment::Answer::RubricBasedResponse.new(submission: submission, question: question)
4448
answer.answer_text = last_attempt.answer_text if last_attempt

client/app/bundles/course/assessment/submission/components/AnswerDetails/AnswerDetails.tsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import ForumPostResponseDetails from './ForumPostResponseDetails';
1515
import MultipleChoiceDetails from './MultipleChoiceDetails';
1616
import MultipleResponseDetails from './MultipleResponseDetails';
1717
import ProgrammingAnswerDetails from './ProgrammingAnswerDetails';
18+
import RubricBasedResponseDetails from './RubricBasedResponseDetails';
1819
import TextResponseDetails from './TextResponseDetails';
1920

2021
const translations = defineMessages({
@@ -58,10 +59,10 @@ export const AnswerDetailsMapper = {
5859
Programming: (props: AnswerDetailsProps<'Programming'>): JSX.Element => (
5960
<ProgrammingAnswerDetails {...props} />
6061
),
61-
// TODO: define component for Voice Response, Scribing, Rubric Based Response
6262
RubricBasedResponse: (
63-
_props: AnswerDetailsProps<'RubricBasedResponse'>,
64-
): JSX.Element => <AnswerNotImplemented />,
63+
props: AnswerDetailsProps<'RubricBasedResponse'>,
64+
): JSX.Element => <RubricBasedResponseDetails {...props} />,
65+
// TODO: define component for Voice Response, Scribing
6566
VoiceResponse: (_props: AnswerDetailsProps<'VoiceResponse'>): JSX.Element => (
6667
<AnswerNotImplemented />
6768
),
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import { Typography } from '@mui/material';
2+
import { QuestionType } from 'types/course/assessment/question';
3+
4+
import { AnswerDetailsProps } from '../../types';
5+
6+
import AttachmentDetails from './AttachmentDetails';
7+
8+
const RubricBasedResponseDetails = (
9+
props: AnswerDetailsProps<QuestionType.RubricBasedResponse>,
10+
): JSX.Element => {
11+
const { question, answer } = props;
12+
13+
return (
14+
<Typography
15+
dangerouslySetInnerHTML={{ __html: answer.fields.answer_text }}
16+
variant="body2"
17+
/>
18+
);
19+
};
20+
21+
export default RubricBasedResponseDetails;

0 commit comments

Comments
 (0)