diff --git a/src/App.js b/src/App.js index a538ed9..9aefcfa 100644 --- a/src/App.js +++ b/src/App.js @@ -5,7 +5,7 @@ import Challenges from './pages/Challanges/Challenges'; import {BrowserRouter, Route, Routes} from 'react-router-dom'; import NavBar from './components/elements/NavBar'; // import Footer from './components/sections/Footer'; -import {CHALLENGE_PAGE, CHALLENGES_PAGE} from './utils/globals'; +import {CHALLENGE_PAGE, CHALLENGES_PAGE, IS_MOBILE} from './utils/globals'; import Challenge from './pages/Challenge'; import Register from './pages/auth/Register'; import Login from './pages/auth/Login'; @@ -34,7 +34,7 @@ const App = () => { KeyCloakService.doLogin(); } } - }, 200); + }, 500); }); const loggedBarVisibleHandler = () => { @@ -55,9 +55,10 @@ const App = () => { - + {!IS_MOBILE() ? : ''} }/> }/> diff --git a/src/components/elements/Table.js b/src/components/elements/Table.js index 3d8ab8d..9ccb6f6 100644 --- a/src/components/elements/Table.js +++ b/src/components/elements/Table.js @@ -1,6 +1,5 @@ import React from 'react'; -import {FlexColumn, FlexRow, Grid} from '../../utils/containers'; -import {H3, Medium} from '../../utils/fonts'; +import {FlexColumn} from '../../utils/containers'; import Media from 'react-media'; import theme from '../../utils/theme'; import Loading from './Loading'; @@ -10,37 +9,15 @@ const Table = (props) => { const mobileRender = () => { return ( - - {props.headerElements.map((elem, index) => { - return ( - - {elem} - - ); - })} - - {props.renderElements('10px')} + {props.renderElements('10px', props.headerElements)} ); }; const desktopRender = () => { return ( - - - {props.headerElements.map((elem, index) => { - return ( - -

{elem}

-
- ); - })} -
- {props.renderElements('32px')} + + {props.renderElements('32px', props.headerElements)} ); }; diff --git a/src/components/sections/Leaderboard/Leaderboard.js b/src/components/sections/Leaderboard/Leaderboard.js index 90c53be..3eeffe8 100644 --- a/src/components/sections/Leaderboard/Leaderboard.js +++ b/src/components/sections/Leaderboard/Leaderboard.js @@ -16,7 +16,6 @@ import FilterBy from '../FilterBy'; import sortOptions from './sortOptions'; const Leaderboard = (props) => { - const headerElements = ['#', 'submitter', 'result', 'entries', 'when']; const [entriesFromApi, setEntriesFromApi] = React.useState([]); const [entries, setEntries] = React.useState([]); const [pageNr, setPageNr] = React.useState(1); @@ -33,9 +32,9 @@ const Leaderboard = (props) => { getChallengeLeaderboard(setEntries, challengeName, setLoading); }; - const renderSubmissions = (gridGap) => { + const renderSubmissions = (gridGap, headerElements) => { return _renderSubmissions(pageNr, entries - ? entries : [], gridGap, metricChoose, sortBy); + ? entries : [], gridGap, metricChoose, sortBy, headerElements); }; const tableSearchQueryHandler = (event) => { @@ -69,6 +68,16 @@ const Leaderboard = (props) => { return metrics; }; + const getLeaderboardHeader = () => { + let header = ['#', 'submitter']; + for (let metric of getPossibleMetrics()) { + header.push(metric); + } + header.push('entries'); + header.push('when'); + return header; + }; + const metricChooseHandler = (value) => { setMetricChoose(value); }; @@ -98,7 +107,8 @@ const Leaderboard = (props) => { }) : ''} : ''} + renderElements={renderSubmissions} + headerElements={['#', 'submitter', 'result', 'entries', 'when']}/> { Leaderboard - - {!loading ? <> - - -

- Metric -

- - {getPossibleMetrics() ? getPossibleMetrics().map((metric, index) => { - return ( - - {metric} - ); - }) : ''} - -
- : ''} -
+
+ headerElements={getLeaderboardHeader()}/> { } }; -const _renderSubmissions = (pageNr, submissions, gridGap, metricChoose, sortBy) => { +const _renderSubmissions = (pageNr, submissions, gridGap, metricChoose, sortBy, headerElements) => { const n = (pageNr - 1) * ELEMENTS_PER_PAGE; if (submissions) { @@ -53,25 +53,43 @@ const _renderSubmissions = (pageNr, submissions, gridGap, metricChoose, sortBy) times }, index) => { return ( - - - {index + n + 1} - - - {submitter ? submitter : '[anonymous]'} - - - {evaluations[metricChoose] ? evaluations[metricChoose].score : 'xxx'} - - - {times ? times : 1} - - - {when ? `${when.slice(11, 16)} ${when.slice(0, 10)}` - : 'xxx'} - - + {index === 0 ? headerElements.map((elem, i) => { + return ( + {elem} + ); + }) : ''} + {index > 0 ? <> + + {index + n} + + + {submitter ? submitter : '[anonymous]'} + + {!IS_MOBILE() ? evaluations.map((metric, i) => { + return ( + + {metric.score.slice(0, 7)} + + ); + }) : + {evaluations[metricChoose] ? evaluations[metricChoose].score.slice(0, 7) : 'xxx'} + } + + {times ? times : 1} + + + {when ? `${when.slice(11, 16)} ${when.slice(0, 10)}` + : 'xxx'} + + + : ''} ); })} diff --git a/src/pages/Challenge.js b/src/pages/Challenge.js index a579fab..5e0a7de 100644 --- a/src/pages/Challenge.js +++ b/src/pages/Challenge.js @@ -29,7 +29,7 @@ const Challenge = () => { const sectionRender = () => { switch (section) { case 0: - return ; + return ; case 1: return ; @@ -40,7 +40,7 @@ const Challenge = () => { case 4: return ; default: - return ; + return ; } }; diff --git a/src/utils/fonts.js b/src/utils/fonts.js index 4d6fda7..513866d 100644 --- a/src/utils/fonts.js +++ b/src/utils/fonts.js @@ -47,6 +47,7 @@ const Medium = styled(Body)` font-weight: 400; @media (min-width: ${({theme}) => theme.overMobile}) { font-weight: 500; + font-size: ${({fontSize}) => fontSize ? fontSize : '16px'} } `;