From 11647efdeb1a058422999b2884149653ed6ed014 Mon Sep 17 00:00:00 2001 From: Petr Stefan Date: Mon, 13 Nov 2017 21:58:23 +0100 Subject: [PATCH] Solution list data schema updated --- .../EvaluationFailedTableRow.js | 27 +++++++++---------- .../FailedSubmissionTableRow.js | 22 +++++++++------ .../NotEvaluatedSubmissionTableRow.js | 23 ++++++++++------ .../SubmissionsTable/SubmissionsTable.js | 2 +- .../SuccessfulSubmissionTableRow.js | 27 +++++++++++-------- .../SubmissionsTableContainer.js | 4 +-- src/redux/modules/groupResults.js | 4 +-- src/redux/modules/submissions.js | 4 +-- 8 files changed, 65 insertions(+), 48 deletions(-) diff --git a/src/components/Assignments/SubmissionsTable/EvaluationFailedTableRow.js b/src/components/Assignments/SubmissionsTable/EvaluationFailedTableRow.js index 5a5bec2fe..004697d64 100644 --- a/src/components/Assignments/SubmissionsTable/EvaluationFailedTableRow.js +++ b/src/components/Assignments/SubmissionsTable/EvaluationFailedTableRow.js @@ -4,23 +4,21 @@ import { FormattedDate, FormattedTime, FormattedMessage } from 'react-intl'; import { Link } from 'react-router'; import AssignmentStatusIcon from '../Assignment/AssignmentStatusIcon'; -const EvaluationFailedTableRow = ({ link, note, submittedAt }) => ( +const EvaluationFailedTableRow = ({ link, note, solution: { createdAt } }) => - - + + + +   - + - - - - + - - - - - + - {note} @@ -33,13 +31,14 @@ const EvaluationFailedTableRow = ({ link, note, submittedAt }) => ( /> - -); + ; EvaluationFailedTableRow.propTypes = { link: PropTypes.string.isRequired, - submittedAt: PropTypes.number.isRequired, - note: PropTypes.string.isRequired + note: PropTypes.string.isRequired, + solution: PropTypes.shape({ + createdAt: PropTypes.number.isRequired + }).isRequired }; export default EvaluationFailedTableRow; diff --git a/src/components/Assignments/SubmissionsTable/FailedSubmissionTableRow.js b/src/components/Assignments/SubmissionsTable/FailedSubmissionTableRow.js index 9aaa4cbd6..17d02b17d 100644 --- a/src/components/Assignments/SubmissionsTable/FailedSubmissionTableRow.js +++ b/src/components/Assignments/SubmissionsTable/FailedSubmissionTableRow.js @@ -13,9 +13,10 @@ import Points from './Points'; const FailedSubmissionTableRow = ({ link, note, - submittedAt, + lastSubmission: { evaluation: { score, points } }, maxPoints, - evaluation: { score, points, bonusPoints }, + bonusPoints, + solution: { createdAt }, accepted }) => @@ -23,9 +24,9 @@ const FailedSubmissionTableRow = ({ - +   - + @@ -56,12 +57,17 @@ const FailedSubmissionTableRow = ({ FailedSubmissionTableRow.propTypes = { link: PropTypes.string.isRequired, - submittedAt: PropTypes.number.isRequired, note: PropTypes.string.isRequired, maxPoints: PropTypes.number.isRequired, - evaluation: PropTypes.shape({ - score: PropTypes.number.isRequired, - points: PropTypes.number.isRequired + bonusPoints: PropTypes.number.isRequired, + lastSubmission: PropTypes.shape({ + evaluation: PropTypes.shape({ + score: PropTypes.number.isRequired, + points: PropTypes.number.isRequired + }) + }).isRequired, + solution: PropTypes.shape({ + createdAt: PropTypes.number.isRequired }).isRequired, accepted: PropTypes.bool }; diff --git a/src/components/Assignments/SubmissionsTable/NotEvaluatedSubmissionTableRow.js b/src/components/Assignments/SubmissionsTable/NotEvaluatedSubmissionTableRow.js index dc1eeb37e..4824add96 100644 --- a/src/components/Assignments/SubmissionsTable/NotEvaluatedSubmissionTableRow.js +++ b/src/components/Assignments/SubmissionsTable/NotEvaluatedSubmissionTableRow.js @@ -4,13 +4,19 @@ import { FormattedDate, FormattedTime, FormattedMessage } from 'react-intl'; import { Link } from 'react-router'; import AssignmentStatusIcon from '../Assignment/AssignmentStatusIcon'; -const NotEvaluatedSubmissionTableRow = ({ link, note, submittedAt }) => ( +const NotEvaluatedSubmissionTableRow = ({ + link, + note, + solution: { createdAt } +}) => - - + + + +   - + - - / - @@ -25,13 +31,14 @@ const NotEvaluatedSubmissionTableRow = ({ link, note, submittedAt }) => ( /> - -); + ; NotEvaluatedSubmissionTableRow.propTypes = { link: PropTypes.string.isRequired, - submittedAt: PropTypes.number.isRequired, - note: PropTypes.string.isRequired + note: PropTypes.string.isRequired, + solution: PropTypes.shape({ + createdAt: PropTypes.number.isRequired + }).isRequired }; export default NotEvaluatedSubmissionTableRow; diff --git a/src/components/Assignments/SubmissionsTable/SubmissionsTable.js b/src/components/Assignments/SubmissionsTable/SubmissionsTable.js index e32a2b179..dce54fba7 100644 --- a/src/components/Assignments/SubmissionsTable/SubmissionsTable.js +++ b/src/components/Assignments/SubmissionsTable/SubmissionsTable.js @@ -66,7 +66,7 @@ const SubmissionsTable = ({ const id = data.id; const link = SUBMISSION_DETAIL_URI_FACTORY(assignmentId, id); - switch (data.evaluationStatus) { + switch (data.lastSubmission.evaluationStatus) { case 'done': return ( ( +}) => - +   - + @@ -53,17 +54,21 @@ const SuccessfulSubmissionTableRow = ({ /> - -); + ; SuccessfulSubmissionTableRow.propTypes = { link: PropTypes.string.isRequired, - submittedAt: PropTypes.number.isRequired, note: PropTypes.string.isRequired, maxPoints: PropTypes.number.isRequired, - evaluation: PropTypes.shape({ - score: PropTypes.number.isRequired, - points: PropTypes.number.isRequired + bonusPoints: PropTypes.number.isRequired, + lastSubmission: PropTypes.shape({ + evaluation: PropTypes.shape({ + score: PropTypes.number.isRequired, + points: PropTypes.number.isRequired + }) + }).isRequired, + solution: PropTypes.shape({ + createdAt: PropTypes.number.isRequired }).isRequired, accepted: PropTypes.bool }; diff --git a/src/containers/SubmissionsTableContainer/SubmissionsTableContainer.js b/src/containers/SubmissionsTableContainer/SubmissionsTableContainer.js index 20132f8af..35ca5ff2d 100644 --- a/src/containers/SubmissionsTableContainer/SubmissionsTableContainer.js +++ b/src/containers/SubmissionsTableContainer/SubmissionsTableContainer.js @@ -22,8 +22,8 @@ class SubmissionsTableContainer extends Component { sortSubmissions(submissions) { return submissions.sort((a, b) => { - var aTimestamp = a.get('data').get('submittedAt'); - var bTimestamp = b.get('data').get('submittedAt'); + var aTimestamp = a.getIn(['data', 'solution', 'createdAt']); + var bTimestamp = b.getIn(['data', 'solution', 'createdAt']); return bTimestamp - aTimestamp; }); } diff --git a/src/redux/modules/groupResults.js b/src/redux/modules/groupResults.js index 6ace08a4c..56b277821 100644 --- a/src/redux/modules/groupResults.js +++ b/src/redux/modules/groupResults.js @@ -26,7 +26,7 @@ export const additionalActionTypes = { export const fetchBestSubmission = (userId, assignmentId) => createApiAction({ type: additionalActionTypes.BEST_SUBMISSION, - endpoint: `/exercise-assignments/${assignmentId}/users/${userId}/best-submission`, + endpoint: `/exercise-assignments/${assignmentId}/users/${userId}/best-solution`, method: 'GET', meta: { userId, assignmentId } }); @@ -34,7 +34,7 @@ export const fetchBestSubmission = (userId, assignmentId) => export const fetchBestSubmissions = assignmentId => createApiAction({ type: additionalActionTypes.BEST_SUBMISSION, - endpoint: `/exercise-assignments/${assignmentId}/best-submissions`, + endpoint: `/exercise-assignments/${assignmentId}/best-solutions`, method: 'GET', meta: { assignmentId } }); diff --git a/src/redux/modules/submissions.js b/src/redux/modules/submissions.js index 84bea781b..0631845b0 100644 --- a/src/redux/modules/submissions.js +++ b/src/redux/modules/submissions.js @@ -95,7 +95,7 @@ export const resubmitAllSubmissions = assignmentId => export const fetchUsersSubmissions = (userId, assignmentId) => actions.fetchMany({ type: additionalActionTypes.LOAD_USERS_SUBMISSIONS, - endpoint: `/exercise-assignments/${assignmentId}/users/${userId}/submissions`, + endpoint: `/exercise-assignments/${assignmentId}/users/${userId}/solutions`, meta: { assignmentId, userId @@ -103,7 +103,7 @@ export const fetchUsersSubmissions = (userId, assignmentId) => }); export const downloadResultArchive = downloadHelper({ - endpoint: id => `/submissions/${id}/download-result`, + endpoint: id => `/submissions/evaluation/${id}/download-result`, fetch: fetchSubmissionIfNeeded, actionType: additionalActionTypes.DOWNLOAD_RESULT_ARCHIVE, fileNameSelector: (id, state) => `${id}.zip`,