correct endpoint for Leaderboard and entries column

This commit is contained in:
mattyl006 2022-07-29 15:17:37 +02:00
parent 294d9f1579
commit 28fd2cd854
6 changed files with 26 additions and 25 deletions

View File

@ -0,0 +1,13 @@
import {API} from '../utils/globals';
const getChallengeLeaderboard = (setDataState, setLoading, challengeName) => {
fetch(`${API}/leaderboard/${challengeName}`)
.then(response => response.json())
.then(data => {
setDataState(data);
if (setLoading)
setLoading(false);
});
};
export default getChallengeLeaderboard;

View File

@ -1,13 +0,0 @@
import {API} from "../utils/globals";
const getChallengeSubmissions = (setDataState, setLoading, challengeName) => {
fetch(`${API}/challenge-all-submissions/${challengeName}`)
.then(response => response.json())
.then(data => {
setDataState(data);
if (setLoading)
setLoading(false);
});
}
export default getChallengeSubmissions;

View File

@ -57,7 +57,7 @@ const Pager = (props) => {
backgroundColor={(props.pageNr === 1) ? 'transparent' : theme.colors.dark}/>
<CircleNumber number={props.pageNr}/>
<RightArrow as='button' src={polygon} onClick={props.nextPage} size='cover'
backgroundColor={(props.pageNr === props.pages || props.pages === 0)
backgroundColor={(props.pageNr === props.pages)
? 'transparent' : theme.colors.dark}/>
</PagerStyle>
);

View File

@ -1,6 +1,6 @@
import React from 'react';
import {FlexColumn, FlexRow, Grid} from '../../../utils/containers';
import getChallengeSubmissions from '../../../api/getChallengeSubmissions';
import getChallengeLeaderboard from '../../../api/getChallengeLeaderboard';
import {H3, Medium} from '../../../utils/fonts';
import _renderSubmissions from './_renderSubmissions';
import Pager from '../Pager';
@ -12,7 +12,7 @@ import PropsTypes from 'prop-types';
const Table = (props) => {
const headerElements = ['#', 'submitter', 'when', 'result', 'entries'];
const [challengeData, setChallengeData] = React.useState({});
const [leaderboardData, setLeaderboardData] = React.useState({});
const [pageNr, setPageNr] = React.useState(1);
const [loading, setLoading] = React.useState(true);
@ -21,16 +21,16 @@ const Table = (props) => {
});
const challengeDataRequest = () => {
getChallengeSubmissions(setChallengeData, setLoading, props.challengeName);
getChallengeLeaderboard(setLeaderboardData, setLoading, props.challengeName);
};
const renderSubmissions = () => {
return _renderSubmissions(pageNr, challengeData.submissions
? challengeData.submissions : []);
return _renderSubmissions(pageNr, leaderboardData.entries
? leaderboardData.entries : []);
};
const nextPage = () => {
if (pageNr !== CALC_PAGES(challengeData.submissions ? challengeData.submissions : [])) {
if (pageNr !== CALC_PAGES(leaderboardData.entries ? leaderboardData.entries : [])) {
let newPage = pageNr + 1;
setPageNr(newPage);
}
@ -86,13 +86,13 @@ const Table = (props) => {
<>
<Loading visible={loading}/>
<Media query={theme.mobile}>
{mobileRender()}
{!loading ? mobileRender() : ''}
</Media>
<Media query={theme.desktop}>
{desktopRender()}
{!loading ? desktopRender() : ''}
</Media>
<Pager visible={!loading} pageNr={pageNr} nextPage={nextPage} previousPage={previousPage}
pages={CALC_PAGES(challengeData.submissions ? challengeData.submissions : [])}/>
pages={CALC_PAGES(leaderboardData.entries ? leaderboardData.entries : [])}/>
</>
);
};

View File

@ -17,7 +17,7 @@ const _renderSubmissions = (pageNr, submissions) => {
if (submissions) {
return (
<FlexColumn as='tbody' width='100%'>
{submissions.slice(n, n + ELEMENTS_PER_PAGE).map(({submitter, when, evaluations, version}, index) => {
{submissions.slice(n, n + ELEMENTS_PER_PAGE).map(({submitter, when, evaluations, times}, index) => {
return (
<Grid as='tr' key={`leaderboard-row-${index}`} gridTemplateColumns='1fr 3fr 3fr 1fr 1fr'
gridGap='10px' margin='10px 0 0 0' position='relative' width='100%'>
@ -35,7 +35,7 @@ const _renderSubmissions = (pageNr, submissions) => {
{evaluations[0] ? evaluations[0].score : 'xxx'}
</Body>
<Body as='td' textAlign='right' padding='0 2px 0 0'>
{version ? version.length : 1}
{times ? times : 1}
</Body>
<Line as='td'/>
</Grid>

View File

@ -46,6 +46,7 @@ const RENDER_ICO = (type) => {
};
const CALC_PAGES = (objects) => {
if (objects.length === 0) return 1;
return Math.ceil(objects.length / ELEMENTS_PER_PAGE);
};