-
Notifications
You must be signed in to change notification settings - Fork 45
/
Assignments.jsx
53 lines (47 loc) · 1.84 KB
/
Assignments.jsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import React, {useState} from 'react';
import Grid from '@material-ui/core/Grid';
import Grow from '@material-ui/core/Grow';
import useQuery from '../../hooks/useQuery';
import AssignmentCard from '../../Components/Public/Assignments/AssignmentCard';
import Typography from '@material-ui/core/Typography';
import axios from 'axios';
import standardErrorHandler from '../../Utils/standardErrorHandler';
import {useSnackbar} from 'notistack';
import standardStatusHandler from '../../Utils/standardStatusHandler';
import IDEDialog from '../../Components/Public/IDE/IDEDialog';
import StandardLayout from '../../Components/Layouts/StandardLayout';
export default function AssignmentView() {
const query = useQuery();
const {enqueueSnackbar} = useSnackbar();
const [assignments, setAssignments] = useState([]);
const [selectedTheia, setSelectedTheia] = useState(null);
React.useEffect(() => {
axios.get('/api/public/assignments/', {params: {courseId: query.get('courseId')}}).then((response) => {
const data = standardStatusHandler(response, enqueueSnackbar);
if (data) {
setAssignments(data.assignments);
}
}).catch(standardErrorHandler(enqueueSnackbar));
}, []);
return (
<StandardLayout
title={'Anubis'}
description={'Assignments'}
>
<IDEDialog selectedTheia={selectedTheia} setSelectedTheia={setSelectedTheia}/>
<Grid container spacing={4}>
{assignments.map((assignment, pos) => (
<Grid item xs={12} sm={6} md={4} lg={3} key={assignment.id}>
<Grow
in={true}
style={{transformOrigin: '0 0 0'}}
{...({timeout: 300 * (pos + 1)})}
>
<AssignmentCard assignment={assignment} setSelectedTheia={setSelectedTheia}/>
</Grow>
</Grid>
))}
</Grid>
</StandardLayout>
);
}