sorting multiple scores correction in Leaderboard

This commit is contained in:
mattyl006 2022-12-14 16:19:12 +01:00
parent 6e54e070d0
commit b8d1434040
2 changed files with 13 additions and 7 deletions

View File

@ -20,7 +20,7 @@ const Leaderboard = (props) => {
const [submitterSorted, setSubmitterSorted] = React.useState(false); const [submitterSorted, setSubmitterSorted] = React.useState(false);
const [entriesSorted, setEntriesSorted] = React.useState(false); const [entriesSorted, setEntriesSorted] = React.useState(false);
const [whenSorted, setWhenSorted] = React.useState(false); const [whenSorted, setWhenSorted] = React.useState(false);
const [scoreSorted, setScoreSorted] = React.useState(false); const [scoresSorted, setScoresSorted] = React.useState([]);
React.useEffect(() => { React.useEffect(() => {
challengeDataRequest(props.challengeName); challengeDataRequest(props.challengeName);
@ -124,12 +124,16 @@ const Leaderboard = (props) => {
break; break;
default: default:
metricIndex = getMetricIndex(elem); metricIndex = getMetricIndex(elem);
if (scoreSorted) { // eslint-disable-next-line no-case-declarations
let newScoresSorted = scoresSorted;
if (scoresSorted[metricIndex]) {
newEntries = newEntries.sort((a, b) => b.evaluations[metricIndex].score - a.evaluations[metricIndex].score); newEntries = newEntries.sort((a, b) => b.evaluations[metricIndex].score - a.evaluations[metricIndex].score);
setScoreSorted(false); newScoresSorted[metricIndex] = false;
setScoresSorted(newScoresSorted);
} else { } else {
newEntries = newEntries.sort((a, b) => a.evaluations[metricIndex].score - b.evaluations[metricIndex].score); newEntries = newEntries.sort((a, b) => a.evaluations[metricIndex].score - b.evaluations[metricIndex].score);
setScoreSorted(true); newScoresSorted[metricIndex] = true;
setScoresSorted(newScoresSorted);
} }
break; break;
} }

View File

@ -19,10 +19,10 @@ const MyEntries = (props) => {
const [pageNr, setPageNr] = React.useState(1); const [pageNr, setPageNr] = React.useState(1);
const [whenSorted, setWhenSorted] = React.useState(false); const [whenSorted, setWhenSorted] = React.useState(false);
const [scoresSorted, setScoresSorted] = React.useState([]); const [scoresSorted, setScoresSorted] = React.useState([]);
/* eslint-disable */
React.useEffect(() => { React.useEffect(() => {
challengesRequest(); challengesRequest();
// eslint-disable-next-line
}, []); }, []);
const searchQueryHandler = (event) => { const searchQueryHandler = (event) => {
@ -38,7 +38,7 @@ const MyEntries = (props) => {
} }
} }
return metrics; return metrics;
} };
const nextPage = () => { const nextPage = () => {
if (pageNr !== CALC_PAGES(myEntries ? myEntries : [])) { if (pageNr !== CALC_PAGES(myEntries ? myEntries : [])) {
@ -69,7 +69,7 @@ const MyEntries = (props) => {
const mobileRender = () => { const mobileRender = () => {
} };
const sortByUpdate = (elem, i) => { const sortByUpdate = (elem, i) => {
let newEntries = myEntries; let newEntries = myEntries;
@ -86,7 +86,9 @@ const MyEntries = (props) => {
} }
break; break;
default: default:
// eslint-disable-next-line no-case-declarations
let metricIndex = getPossibleMetrics().indexOf(elem); let metricIndex = getPossibleMetrics().indexOf(elem);
// eslint-disable-next-line no-case-declarations
let newScoresSorted = scoresSorted; let newScoresSorted = scoresSorted;
if (scoresSorted[metricIndex]) { if (scoresSorted[metricIndex]) {
newEntries = newEntries.sort((a, b) => b.evaluations[elem] - a.evaluations[elem]); newEntries = newEntries.sort((a, b) => b.evaluations[elem] - a.evaluations[elem]);