diff options
author | Eugene <eug-vs@keemail.me> | 2020-01-12 15:11:05 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-01-12 15:11:05 +0000 |
commit | d131fe1c40da4faf8fe850994d000263f867c9d6 (patch) | |
tree | c4b8fb31a112ef3fe38b6f02a17d75d722ae3dea /src/pages/Scoreboard | |
parent | 23a5631531861ac76d532c0d9d2b19dd1862f739 (diff) | |
parent | 364c16c467b5257980337a06497647ebc13e4c35 (diff) | |
download | chrono-cube-ui-d131fe1c40da4faf8fe850994d000263f867c9d6.tar.gz |
Merge pull request #33 from Eug-VS/contribute
Contribute section support
Diffstat (limited to 'src/pages/Scoreboard')
-rw-r--r-- | src/pages/Scoreboard/Scoreboard.js | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/src/pages/Scoreboard/Scoreboard.js b/src/pages/Scoreboard/Scoreboard.js new file mode 100644 index 0000000..29d26c8 --- /dev/null +++ b/src/pages/Scoreboard/Scoreboard.js @@ -0,0 +1,68 @@ +import React, { useEffect, useState } from 'react'; + +import { makeStyles } from "@material-ui/core/styles"; + +import { get } from "../../requests"; + +import SmartList from "../../components/SmartList/SmartList"; +import SolutionCard from "../../components/SolutionCard/SolutionCard"; +import Loading from "../../components/Loading/Loading"; +import Window from "../../components/Window/Window"; + + +const useStyles = makeStyles(theme => ({ + cell: { + display: 'flex', + justifyContent: 'center', + padding: theme.spacing(4), + + '& .MuiCard-root': { + width: '30%', + } + } +})); + +const Scoreboard = () => { + const classes = useStyles(); + const [solutions, setSolutions] = useState([]); + + const updateSolutions = () => { + get('scoreboard/').then(response => { + setSolutions(response.data); + }); + }; + + const removeSolution = id => { + updateSolutions(); + }; + + useEffect(() => { + setTimeout(updateSolutions, 300); + }, []); + + const renderItem = ({ index, style }) => { + return ( + <div style={style} className={classes.cell}> + <SolutionCard data={solutions[index]} removeThisCard={removeSolution}/> + </div> + ) + }; + + return ( + <Window type="mono"> + { solutions.length === 0 && + <div className={classes.cell}> + <Loading/> + </div> + } + <SmartList + itemSize={300} + itemCount={solutions.length} + renderItem={renderItem} + /> + </Window> + ) +}; + + +export default Scoreboard; |