diff --git a/src/components/ResponseDisplay.jsx b/src/components/ResponseDisplay.jsx
new file mode 100644
index 0000000..3a38b41
--- /dev/null
+++ b/src/components/ResponseDisplay.jsx
@@ -0,0 +1,60 @@
+import React from 'react';
+import PropTypes from 'prop-types';
+import { connect } from 'react-redux';
+
+import {
+ Card,
+} from '@edx/paragon';
+
+import createDOMPurify from 'dompurify';
+
+import parse from 'html-react-parser';
+
+import selectors from 'data/selectors';
+
+/**
+ *
+ */
+export class ResponseDisplay extends React.Component {
+ constructor(props) {
+ super(props);
+ this.purify = createDOMPurify(window);
+ }
+
+ get textContent() {
+ return parse(this.purify.sanitize(this.props.response.text));
+ }
+
+ get hasResponse() {
+ return this.props.response !== undefined;
+ }
+
+ render() {
+ return (
+
+ {this.hasResponse && (
+
+ {this.textContent}
+
+ )}
+
+ );
+ }
+}
+
+ResponseDisplay.defaultProps = {
+};
+ResponseDisplay.propTypes = {
+ response: PropTypes.shape({
+ text: PropTypes.string,
+ }).isRequired,
+};
+
+export const mapStateToProps = (state) => ({
+ response: selectors.grading.selectedResponse(state),
+});
+
+export const mapDispatchToProps = {
+};
+
+export default connect(mapStateToProps, mapDispatchToProps)(ResponseDisplay);
diff --git a/src/containers/ListView/index.jsx b/src/containers/ListView/index.jsx
index 0d2bc2c..0d2c9d5 100644
--- a/src/containers/ListView/index.jsx
+++ b/src/containers/ListView/index.jsx
@@ -85,7 +85,7 @@ export class ListView extends React.Component {
},
{
Header: 'Grade',
- accessor: 'grade',
+ accessor: 'score',
Cell: this.formatGrade,
},
{
diff --git a/src/containers/ReviewModal/ReviewActions.jsx b/src/containers/ReviewModal/ReviewActions.jsx
index a1ce267..b280fdc 100644
--- a/src/containers/ReviewModal/ReviewActions.jsx
+++ b/src/containers/ReviewModal/ReviewActions.jsx
@@ -6,33 +6,51 @@ import {
ActionRow,
Button,
} from '@edx/paragon';
+import { Edit } from '@edx/paragon/icons';
+import actions from 'data/actions';
import selectors from 'data/selectors';
import StatusBadge from 'components/StatusBadge';
+import SubmissionNavigation from './SubmissionNavigation';
import './ReviewModal.scss';
-export const ReviewActions = ({ gradeStatus, username }) => (
+export const ReviewActions = ({
+ gradeStatus,
+ toggleShowRubric,
+ showRubric,
+ username,
+}) => (
Title
+const responseText = (submissionId) => `
Title (${submissionId})
Phasellus tempor eros aliquam ipsum molestie, vitae varius lectus tempus. Morbi iaculis, libero euismod vehicula rutrum, nisi leo volutpat diam, quis commodo ex nunc ut odio. Pellentesque condimentum feugiat erat ac vulputate. Pellentesque porta rutrum sagittis. Curabitur vulputate tempus accumsan. Fusce bibendum gravida metus a scelerisque. Mauris fringilla orci non lobortis commodo. Quisque iaculis, quam a tincidunt vehicula, erat nisi accumsan quam, eu cursus ligula magna id odio. Nulla porttitor, lorem gravida vehicula tristique, sapien metus tristique ex, id tincidunt sapien justo nec sapien. Maecenas luctus, nisl vestibulum scelerisque pharetra, ligula orci vulputate turpis, in ultrices mauris dolor eu enim. Suspendisse quis nibh nec augue semper maximus. Morbi maximus eleifend magna.
Phasellus porttitor vel magna et auctor. Nulla porttitor convallis aliquam. Donec cursus, ipsum ut egestas bibendum, purus metus dignissim est, ac condimentum leo felis eget diam. In magna mi, tincidunt id sapien id, fermentum vestibulum quam. Quisque et dui sed urna convallis rutrum pellentesque quis sapien. Cras non lectus velit. Praesent semper eros id risus mollis, quis interdum quam imperdiet. Sed nec vulputate tortor, at tristique tortor.
`;
// eslint-disable-next-line
-export const mockSubmission = (submissionId) => {
- console.log({ submissionId, submission: submissionList[submissionId] });
- return {
- response: {
- text: responseText,
- files: [],
- },
- gradeStatus: submissionList[submissionId].gradeStatus,
- gradeData: submissionList[submissionId].grade,
- };
-};
+export const mockSubmission = (submissionId) => ({
+ response: {
+ text: responseText(submissionId),
+ files: [],
+ },
+ gradeStatus: submissionList[submissionId].gradeStatus,
+ score: submissionList[submissionId].score,
+});
+export const mockSubmissionStatus = (submissionId) => ({
+ gradeData: submissionList[submissionId].gradeData,
+ gradeStatus: submissionList[submissionId].gradeStatus,
+});
diff --git a/src/data/services/lms/fakeData/submissionList.js b/src/data/services/lms/fakeData/submissionList.js
index 52963d0..b43a291 100644
--- a/src/data/services/lms/fakeData/submissionList.js
+++ b/src/data/services/lms/fakeData/submissionList.js
@@ -22,17 +22,27 @@ const day = 86400000;
const submissions = {};
let lastIndex = 0;
-const createSubmission = (grade, gradeStatus) => {
+const createSubmission = (score, gradeStatus) => {
const index = lastIndex;
lastIndex += 1;
const submissionId = ids.submissionId(index);
+ const gradeData = score === null ? null : {
+ score,
+ overallFeedback: 'was okay',
+ criteria: [{
+ name: 'firstCriterion',
+ feedback: 'did alright',
+ selectedOption: 'good'
+ }],
+ };
submissions[submissionId] = {
submissionId,
username: ids.username(index),
// teamName: '',
dateSubmitted: date0 + (day * index),
+ score,
+ gradeData,
gradeStatus,
- grade,
};
};
diff --git a/src/data/thunkActions/grading.js b/src/data/thunkActions/grading.js
index 9a1025c..61f8d32 100644
--- a/src/data/thunkActions/grading.js
+++ b/src/data/thunkActions/grading.js
@@ -3,6 +3,7 @@ import { StrictDict } from 'utils';
import actions from 'data/actions';
import selectors from 'data/selectors';
import api from 'data/services/lms/api';
+import * as module from './grading';
/**
* Prefetch the "next" submission in the selected queue. Only fetches the response info.
@@ -11,7 +12,7 @@ export const prefetchNext = () => (dispatch, getState) => (
api.fetchSubmissionResponse(
selectors.grading.nextSubmissionId(getState()),
).then((response) => {
- dispatch(actions.grading.preloadNext(response.submission));
+ dispatch(actions.grading.preloadNext(response));
})
);
@@ -22,7 +23,7 @@ export const prefetchPrev = () => (dispatch, getState) => (
api.fetchSubmissionResponse(
selectors.grading.prevSubmissionId(getState()),
).then((response) => {
- dispatch(actions.grading.preloadPrev(response.submissionStatus));
+ dispatch(actions.grading.preloadPrev(response));
})
);