correct endpoint for Leaderboard and entries column
This commit is contained in:
parent
294d9f1579
commit
28fd2cd854
13
src/api/getChallengeLeaderboard.js
Normal file
13
src/api/getChallengeLeaderboard.js
Normal 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;
|
@ -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;
|
@ -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>
|
||||
);
|
||||
|
@ -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 : [])}/>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
@ -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>
|
||||
|
@ -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);
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user