Feat: busy indicator for speed flowchart
This commit is contained in:
parent
999d87766f
commit
b690ace6b5
3 changed files with 24 additions and 5 deletions
|
@ -1,4 +1,10 @@
|
|||
import { AppBar, Toolbar, Container, Typography } from '@mui/material';
|
||||
import {
|
||||
AppBar,
|
||||
Toolbar,
|
||||
Container,
|
||||
Typography,
|
||||
Skeleton,
|
||||
} from '@mui/material';
|
||||
import { useContext } from 'react';
|
||||
import { Link } from 'react-router-dom';
|
||||
|
||||
|
@ -19,6 +25,7 @@ export default function Header() {
|
|||
<img src='/logo192.png' className='header-icon'></img>
|
||||
</Link>
|
||||
<Typography variant='h6'>{title}</Typography>
|
||||
{title === '' && <Skeleton height={20} width={200}></Skeleton>}
|
||||
</Toolbar>
|
||||
</Container>
|
||||
</AppBar>
|
||||
|
|
|
@ -5,7 +5,7 @@ import {
|
|||
convertResultsToSpeedFlowchartResult,
|
||||
SpeedFlowchartResult,
|
||||
} from '../data/SpeedFlowchart';
|
||||
import { Card, CardContent, Grid, Typography } from '@mui/material';
|
||||
import { Card, CardContent, Grid, Skeleton, Typography } from '@mui/material';
|
||||
|
||||
/**
|
||||
*
|
||||
|
@ -15,6 +15,7 @@ export default function SpeedFlowchartPage() {
|
|||
const { competitionId, categoryId } = useParams();
|
||||
const { api, setTitle } = useContext(Context);
|
||||
|
||||
const [loading, setLoading] = useState(true);
|
||||
const [flowchartResult, setFlowchartResult] =
|
||||
useState<SpeedFlowchartResult>();
|
||||
|
||||
|
@ -22,14 +23,18 @@ export default function SpeedFlowchartPage() {
|
|||
if (competitionId === undefined || categoryId === undefined) {
|
||||
return;
|
||||
}
|
||||
setTitle('');
|
||||
|
||||
api.getCompetitionResults(competitionId, categoryId).then(r => {
|
||||
setTitle(
|
||||
`${r.comp_name} - ${
|
||||
r.categorys.filter(cat => cat.GrpId === categoryId)[0].name
|
||||
r.categorys.filter(cat => cat.GrpId === categoryId)[0]?.name ?? ''
|
||||
}`,
|
||||
);
|
||||
|
||||
setLoading(false);
|
||||
console.log('loading false');
|
||||
|
||||
const flowchartResult = convertResultsToSpeedFlowchartResult(r);
|
||||
console.log(flowchartResult);
|
||||
setFlowchartResult(flowchartResult);
|
||||
|
@ -77,11 +82,18 @@ export default function SpeedFlowchartPage() {
|
|||
</Grid>
|
||||
))}
|
||||
|
||||
{flowchartResult === undefined && (
|
||||
{flowchartResult === undefined && !loading && (
|
||||
<Grid item xs={12} className={'center-children'}>
|
||||
This competition or category does not have a speed tree!
|
||||
</Grid>
|
||||
)}
|
||||
|
||||
{loading &&
|
||||
new Array(5).fill(0).map((_, i) => (
|
||||
<Grid key={`flowchart-column-skeleton-${i}`} item xs={12 / 5}>
|
||||
<Skeleton height={50}></Skeleton>
|
||||
</Grid>
|
||||
))}
|
||||
</Grid>
|
||||
</>
|
||||
);
|
||||
|
|
|
@ -12,7 +12,7 @@ export default function PageTemplate(props: { children: JSX.Element }) {
|
|||
return (
|
||||
<LocalizationProviderWrapper>
|
||||
<Container
|
||||
sx={{ marginTop: '16px' }}
|
||||
sx={{ marginTop: '16px', marginBottom: '16px' }}
|
||||
className='root-container'
|
||||
maxWidth='lg'
|
||||
>
|
||||
|
|
Loading…
Reference in a new issue