From 146b3c51293d828aee801732a50d281fa615d56d Mon Sep 17 00:00:00 2001 From: Colin Hunt Date: Sun, 27 Aug 2017 23:59:08 +0700 Subject: [PATCH 1/2] Fixed challenge listing sorting by next submission or checkpoint date --- src/shared/utils/challenge-listing/buckets.js | 2 +- src/shared/utils/challenge-listing/filter.js | 3 +++ src/shared/utils/challenge-listing/sort.js | 15 +++++++++++++-- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/shared/utils/challenge-listing/buckets.js b/src/shared/utils/challenge-listing/buckets.js index a1bba25679..b662078a69 100644 --- a/src/shared/utils/challenge-listing/buckets.js +++ b/src/shared/utils/challenge-listing/buckets.js @@ -40,7 +40,7 @@ export function getBuckets(userHandle) { name: 'My Challenges', sorts: [ SORTS.MOST_RECENT, - SORTS.TIME_TO_SUBMIT, + SORTS.PHASE_END_TIME, SORTS.NUM_REGISTRANTS, SORTS.NUM_SUBMISSIONS, SORTS.PRIZE_HIGH_TO_LOW, diff --git a/src/shared/utils/challenge-listing/filter.js b/src/shared/utils/challenge-listing/filter.js index 8e48d395d1..b02236aee6 100644 --- a/src/shared/utils/challenge-listing/filter.js +++ b/src/shared/utils/challenge-listing/filter.js @@ -73,6 +73,9 @@ function filterByGroupIds(challenge, state) { function filterByRegistrationOpen(challenge, state) { if (_.isUndefined(state.registrationOpen)) return true; const isRegOpen = () => { + if ('registrationOpen' in challenge) { + return challenge.registrationOpen === 'Yes'; + } if (challenge.subTrack === 'MARATHON_MATCH') { return challenge.status !== 'PAST'; } diff --git a/src/shared/utils/challenge-listing/sort.js b/src/shared/utils/challenge-listing/sort.js index a82dbc0f53..cdfd90db2d 100644 --- a/src/shared/utils/challenge-listing/sort.js +++ b/src/shared/utils/challenge-listing/sort.js @@ -34,7 +34,18 @@ export default { name: '# of submissions', }, [SORTS.PHASE_END_TIME]: { - func: (a, b) => a.currentPhaseRemainingTime - b.currentPhaseRemainingTime, + func: (a, b) => { + function nextSubEndDate(o) { + if (("checkpointSubmissionEndDate" in o) && moment(o.checkpointSubmissionEndDate).isAfter()) { + return o.checkpointSubmissionEndDate; + } + return o.submissionEndDate; + } + + let aDate = nextSubEndDate(a); + let bDate = nextSubEndDate(b); + return (moment(aDate).isBefore()) ? 1 : (moment(bDate).isBefore()) ? -1 : moment(aDate).diff(bDate); + }, name: 'Time to submit', }, [SORTS.PRIZE_HIGH_TO_LOW]: { @@ -47,7 +58,7 @@ export default { name: 'Time to register', }, [SORTS.TIME_TO_SUBMIT]: { - func: (a, b) => a.submissionEndTimestamp - b.submissionEndTimestamp, + func: (a, b) => moment(a.submissionEndDate).diff(b.submissionEndDate), name: 'Time to submit', }, [SORTS.TITLE_A_TO_Z]: { From a6e8d5ee203440854dbba79ece974a08dfdb0200 Mon Sep 17 00:00:00 2001 From: Colin Hunt Date: Mon, 28 Aug 2017 10:28:23 +0700 Subject: [PATCH 2/2] implemented requested changes --- src/shared/utils/challenge-listing/buckets.js | 4 +-- src/shared/utils/challenge-listing/filter.js | 2 +- src/shared/utils/challenge-listing/sort.js | 27 ++++++++----------- 3 files changed, 14 insertions(+), 19 deletions(-) diff --git a/src/shared/utils/challenge-listing/buckets.js b/src/shared/utils/challenge-listing/buckets.js index b662078a69..0e2445812c 100644 --- a/src/shared/utils/challenge-listing/buckets.js +++ b/src/shared/utils/challenge-listing/buckets.js @@ -40,7 +40,7 @@ export function getBuckets(userHandle) { name: 'My Challenges', sorts: [ SORTS.MOST_RECENT, - SORTS.PHASE_END_TIME, + SORTS.TIME_TO_SUBMIT, SORTS.NUM_REGISTRANTS, SORTS.NUM_SUBMISSIONS, SORTS.PRIZE_HIGH_TO_LOW, @@ -58,7 +58,7 @@ export function getBuckets(userHandle) { sorts: [ SORTS.MOST_RECENT, SORTS.TIME_TO_REGISTER, - SORTS.PHASE_END_TIME, + SORTS.TIME_TO_SUBMIT, SORTS.NUM_REGISTRANTS, SORTS.NUM_SUBMISSIONS, SORTS.PRIZE_HIGH_TO_LOW, diff --git a/src/shared/utils/challenge-listing/filter.js b/src/shared/utils/challenge-listing/filter.js index b02236aee6..74f2be57f4 100644 --- a/src/shared/utils/challenge-listing/filter.js +++ b/src/shared/utils/challenge-listing/filter.js @@ -73,7 +73,7 @@ function filterByGroupIds(challenge, state) { function filterByRegistrationOpen(challenge, state) { if (_.isUndefined(state.registrationOpen)) return true; const isRegOpen = () => { - if ('registrationOpen' in challenge) { + if (challenge.registrationOpen) { return challenge.registrationOpen === 'Yes'; } if (challenge.subTrack === 'MARATHON_MATCH') { diff --git a/src/shared/utils/challenge-listing/sort.js b/src/shared/utils/challenge-listing/sort.js index cdfd90db2d..cbfe9fd1be 100644 --- a/src/shared/utils/challenge-listing/sort.js +++ b/src/shared/utils/challenge-listing/sort.js @@ -9,7 +9,6 @@ export const SORTS = { MOST_RECENT: 'most-recent', NUM_REGISTRANTS: 'num-registrants', NUM_SUBMISSIONS: 'num-submissions', - PHASE_END_TIME: 'phase-end-time', PRIZE_HIGH_TO_LOW: 'prize-high-to-low', TIME_TO_REGISTER: 'time-to-register', TIME_TO_SUBMIT: 'time-to-submit', @@ -33,10 +32,19 @@ export default { func: (a, b) => b.numSubmissions - a.numSubmissions, name: '# of submissions', }, - [SORTS.PHASE_END_TIME]: { + [SORTS.PRIZE_HIGH_TO_LOW]: { + func: (a, b) => b.totalPrize - a.totalPrize, + name: 'Prize high to low', + }, + [SORTS.TIME_TO_REGISTER]: { + func: (a, b) => moment(a.registrationEndDate || a.submissionEndDate) + .diff(b.registrationEndDate || b.submissionEndDate), + name: 'Time to register', + }, + [SORTS.TIME_TO_SUBMIT]: { func: (a, b) => { function nextSubEndDate(o) { - if (("checkpointSubmissionEndDate" in o) && moment(o.checkpointSubmissionEndDate).isAfter()) { + if (o.checkpointSubmissionEndDate && moment(o.checkpointSubmissionEndDate).isAfter()) { return o.checkpointSubmissionEndDate; } return o.submissionEndDate; @@ -48,19 +56,6 @@ export default { }, name: 'Time to submit', }, - [SORTS.PRIZE_HIGH_TO_LOW]: { - func: (a, b) => b.totalPrize - a.totalPrize, - name: 'Prize high to low', - }, - [SORTS.TIME_TO_REGISTER]: { - func: (a, b) => moment(a.registrationEndDate || a.submissionEndDate) - .diff(b.registrationEndDate || b.submissionEndDate), - name: 'Time to register', - }, - [SORTS.TIME_TO_SUBMIT]: { - func: (a, b) => moment(a.submissionEndDate).diff(b.submissionEndDate), - name: 'Time to submit', - }, [SORTS.TITLE_A_TO_Z]: { func: (a, b) => a.name.localeCompare(b.name), name: 'Title A-Z',