@@ -319,7 +218,7 @@ class SubmissionsComponent extends React.Component {
const isBugHunt = _.includes(tags, 'Bug Hunt')
// copy colorStyle from registrants to submissions
- _.forEach(sortedSubmissions, s => {
+ _.forEach(submissions, s => {
if (s.registrant && s.registrant.colorStyle && !s.colorStyle) {
const { colorStyle } = s.registrant
/* eslint-disable no-param-reassign */
@@ -344,7 +243,7 @@ class SubmissionsComponent extends React.Component {
ROUND 2 (FINAL) SUBMISSIONS
- {sortedSubmissions.map(renderSubmission)}
+ {submissions.map(renderSubmission)}
{checkpoints.length > 0 && (
@@ -388,117 +287,20 @@ class SubmissionsComponent extends React.Component {
{!isF2F && !isBugHunt && (
-
+ Rating
|
)}
-
+ Username
|
-
+ Email
|
-
+ Submission Date
|
-
+ Initial / Final Score
|
|
- {sortedSubmissions.map(s => {
+ {submissions.map(s => {
const rating = s.registrant && !_.isNil(s.registrant.rating)
? s.registrant.rating
: '-'
@@ -679,7 +481,7 @@ class SubmissionsComponent extends React.Component {
const allFiles = []
let downloadedFile = 0
const checkToCompressFiles = () => {
- if (downloadedFile === sortedSubmissions.length) {
+ if (downloadedFile === submissions.length) {
if (downloadedFile > 0) {
compressFiles(allFiles, 'all-submissions.zip', () => {
this.setState({
@@ -694,7 +496,7 @@ class SubmissionsComponent extends React.Component {
}
}
checkToCompressFiles()
- _.forEach(sortedSubmissions, (submission) => {
+ _.forEach(submissions, (submission) => {
let fileName = submission.legacySubmissionId
if (!fileName) {
fileName = submission.id
@@ -721,6 +523,30 @@ class SubmissionsComponent extends React.Component {
) : null}
+
+
{alertMessage ? (
{
// const { isLoading } = this.props
@@ -160,12 +163,16 @@ class ChallengeEditor extends Component {
newMatch,
loadChallengeDetails,
loadResources,
- loadSubmissions
+ loadSubmissions,
+ submissionsPerPage
) {
let projectId = _.get(newMatch.params, 'projectId', null)
projectId = projectId ? parseInt(projectId) : null
const challengeId = _.get(newMatch.params, 'challengeId', null)
- await [loadResources(challengeId), loadSubmissions(challengeId)]
+ await [loadResources(challengeId), loadSubmissions(challengeId, {
+ page: 1,
+ perPage: submissionsPerPage
+ })]
loadChallengeDetails(projectId, challengeId)
if (!challengeId) {
@@ -423,7 +430,11 @@ class ChallengeEditor extends Component {
isProjectPhasesLoading,
showRejectChallengeModal,
createResource,
- deleteResource
+ deleteResource,
+ totalSubmissions,
+ submissionsPerPage,
+ page,
+ loadSubmissions
// members
} = this.props
const {
@@ -623,6 +634,10 @@ class ChallengeEditor extends Component {
onApproveChallenge={this.onApproveChallenge}
createResource={createResource}
deleteResource={deleteResource}
+ loadSubmissions={loadSubmissions}
+ totalSubmissions={totalSubmissions}
+ submissionsPerPage={submissionsPerPage}
+ page={page}
/>
)}
/>
@@ -680,13 +695,16 @@ ChallengeEditor.propTypes = {
loadProject: PropTypes.func,
projectPhases: PropTypes.arrayOf(PropTypes.object),
isProjectPhasesLoading: PropTypes.bool,
- showRejectChallengeModal: PropTypes.func
+ showRejectChallengeModal: PropTypes.func,
+ totalSubmissions: PropTypes.number,
+ submissionsPerPage: PropTypes.number,
+ page: PropTypes.number
// members: PropTypes.arrayOf(PropTypes.shape())
}
const mapStateToProps = ({
projects,
- challengeSubmissions: { challengeSubmissions },
+ challengeSubmissions: { challengeSubmissions, totalSubmissions, submissionsPerPage, page },
challenges: {
challengeDetails,
challengeResources,
@@ -715,7 +733,10 @@ const mapStateToProps = ({
token: auth.token,
loggedInUser: auth.user,
failedToLoad,
- errorMessage
+ errorMessage,
+ totalSubmissions,
+ submissionsPerPage,
+ page
// members
})
}
diff --git a/src/reducers/challengeSubmissions.js b/src/reducers/challengeSubmissions.js
index 389c10a4..ab70bda7 100644
--- a/src/reducers/challengeSubmissions.js
+++ b/src/reducers/challengeSubmissions.js
@@ -11,7 +11,10 @@ const initialState = {
isLoading: true,
loadingId: null,
challengeId: null,
- challengeSubmissions: []
+ challengeSubmissions: [],
+ totalSubmissions: 0,
+ submissionsPerPage: 10,
+ page: 1
}
export default function (state = initialState, action) {
@@ -19,10 +22,13 @@ export default function (state = initialState, action) {
case LOAD_CHALLENGE_SUBMISSIONS_SUCCESS:
return {
...state,
- challengeSubmissions: action.payload,
+ challengeSubmissions: action.payload.data,
isLoading: false,
loadingId: null,
- challengeId: state.loadingId
+ challengeId: state.loadingId,
+ totalSubmissions: action.payload.headers['x-total'],
+ page: action.payload.page,
+ submissionsPerPage: action.payload.perPage
}
case LOAD_CHALLENGE_SUBMISSIONS_PENDING:
return {
@@ -30,7 +36,8 @@ export default function (state = initialState, action) {
isLoading: true,
loadingId: action.challengeId,
challengeId: null,
- challengeSubmissions: []
+ challengeSubmissions: [],
+ totalPages: 0
}
case LOAD_CHALLENGE_SUBMISSIONS_FAILURE:
return {
@@ -38,7 +45,8 @@ export default function (state = initialState, action) {
isLoading: false,
loadingId: null,
challengeId: null,
- challengeSubmissions: []
+ challengeSubmissions: [],
+ totalPages: 0
}
default:
return state
diff --git a/src/services/challenges.js b/src/services/challenges.js
index f3c441c7..3d8ac11e 100644
--- a/src/services/challenges.js
+++ b/src/services/challenges.js
@@ -263,9 +263,15 @@ export async function fetchResources (challengeId) {
* @param challengeId Challenge id
* @returns {Promise<*>}
*/
-export async function fetchSubmissions (challengeId) {
- const response = await axiosInstance.get(`${SUBMISSIONS_API_URL}?challengeId=${challengeId}&perPage=100`)
- return _.get(response, 'data', [])
+export async function fetchSubmissions (challengeId, pageObj) {
+ const { page, perPage } = pageObj
+ const response = await axiosInstance.get(`${SUBMISSIONS_API_URL}?challengeId=${challengeId}&perPage=${perPage}&page=${page}`)
+ return {
+ data: _.get(response, 'data', []),
+ headers: _.get(response, 'headers', {}),
+ page,
+ perPage
+ }
}
export async function getReviewTypes () {