This commit is contained in:
Michael Fatemi 2021-04-10 23:51:49 -04:00
commit 445a8b7f80
3 changed files with 202 additions and 41 deletions

View File

@ -126,7 +126,7 @@ const CreatePool = () => {
onChange={(event) => setType(event.target.value)} onChange={(event) => setType(event.target.value)}
> >
<option value="offer">Offering carpool</option> <option value="offer">Offering carpool</option>
<option value="request">Requesting carpooll</option> <option value="request">Requesting carpool</option>
</select> </select>
</div> </div>
<div className="form-group"> <div className="form-group">

View File

@ -1,7 +1,51 @@
import { useState, useEffect } from 'react'; import Button from '@material-ui/core/Button';
import React, { useState, useEffect } from 'react';
import Card from '@material-ui/core/Card';
import CardActionArea from '@material-ui/core/CardActionArea';
import CardActions from '@material-ui/core/CardActions';
import CardContent from '@material-ui/core/CardContent';
import { makeStyles } from '@material-ui/core/styles';
import Typography from '@material-ui/core/Typography';
import CloudUploadIcon from '@material-ui/icons/CloudUpload';
import Box from '@material-ui/core/Box';
import { makeAPIGetCall } from '../api/utils'; import { makeAPIGetCall } from '../api/utils';
const useStyles = makeStyles((theme) => ({
root: {
maxWidth: 345,
justifyContent: 'center',
},
media: {
height: 140,
},
button: {
margin: theme.spacing(1),
background: '#40E0D0',
'&:hover': {
background: '#FFFFFF',
},
},
}));
const Groups = () => { const Groups = () => {
const classes = useStyles();
const [state, setState] = useState({
MyGroups: [
{
id: 1,
group_title: 'TJ',
},
],
});
const callAPI = () => {
fetch(`${process.env.REACT_APP_API_ENDPOINT}/groups/`)
.then((response) => response.json())
.then((data) => {
if (data !== undefined) {
setState(data);
}
});
};
const [groups, setGroups] = useState<Carpool.Group[]>([ const [groups, setGroups] = useState<Carpool.Group[]>([
{ {
_id: '1234', _id: '1234',
@ -20,39 +64,76 @@ const Groups = () => {
}, []); }, []);
return ( return (
<div className="bg-dark" style={{ minHeight: '100vh' }}> <div
className=""
style={{ minHeight: '100vh', backgroundColor: '#F1EAE8' }}
>
<h1 <h1
className="d-flex justify-content-center p-4" className="d-flex justify-content-center p-4"
style={{ backgroundColor: '#F1EAE8', fontFamily: 'Impact' }} style={{ backgroundColor: '#F1EAE8' }}
> >
Groups Groups
</h1> </h1>
<a <Box textAlign="center">
className="btn btn-large btn-success" <Button
href="/create_group" variant="contained"
style={{ fontFamily: 'Courier New' }} className={classes.button}
> startIcon={<CloudUploadIcon />}
Create Group href="/create_group"
</a> >
Create Group
</Button>
</Box>
<div className="container" style={{ fontFamily: 'Courier New' }}> <div className="container" style={{ fontFamily: 'Courier New' }}>
<br></br> <br></br>
{groups.map((group, index) => { {groups.map((group, index) => {
return ( return (
<div <Card
className="card card-body text-left" className={classes.root + 'd-inline-flex'}
style={{ style={{ margin: '0.5rem' }}
backgroundColor: index % 2 === 0 ? '#F1EAE8' : '#FFFFFF',
}}
> >
<form action={'/requestgroup/' + group._id} method="POST"> <CardActionArea href={'/group/' + group._id}>
<p className="card-title">{group.name}</p> <CardContent>
<input <Typography gutterBottom variant="h5" component="h2">
type="submit" {group.name}
value="Request to Join" </Typography>
className="btn btn-success d-flex" <Typography
/> variant="body2"
</form> color="textSecondary"
</div> component="p"
></Typography>
</CardContent>
</CardActionArea>
<CardActions>
<Button
size="small"
color="primary"
onClick={() => {
alert('Copied to Clipboard');
let link: string = 'localhost:3000/group/' + group._id;
navigator.clipboard.writeText(link);
}}
>
Share
</Button>
<Button
href={'/group/' + group._id}
size="small"
color="primary"
>
Learn More
</Button>
<form action={'/requestgroup/' + group._id} method="POST">
<input
type="submit"
value="Request to Join"
className="btn btn-success d-flex"
/>
</form>
</CardActions>
</Card>
); );
})} })}
</div> </div>

View File

@ -1,7 +1,51 @@
import Button from '@material-ui/core/Button';
import React, { useState, useEffect } from 'react'; import React, { useState, useEffect } from 'react';
import Card from '@material-ui/core/Card';
import CardActionArea from '@material-ui/core/CardActionArea';
import CardActions from '@material-ui/core/CardActions';
import CardContent from '@material-ui/core/CardContent';
import { makeStyles } from '@material-ui/core/styles';
import Typography from '@material-ui/core/Typography';
import CloudUploadIcon from '@material-ui/icons/CloudUpload';
import Box from '@material-ui/core/Box';
import { makeAPIGetCall } from '../api/utils'; import { makeAPIGetCall } from '../api/utils';
const useStyles = makeStyles((theme) => ({
root: {
maxWidth: 345,
justifyContent: 'center',
},
media: {
height: 140,
},
button: {
margin: theme.spacing(1),
background: '#40E0D0',
'&:hover': {
background: '#FFFFFF',
},
},
}));
const MyGroups = () => { const MyGroups = () => {
const classes = useStyles();
const [state, setState] = useState({
MyGroups: [
{
id: 1,
group_title: 'TJ',
},
],
});
const callAPI = () => {
fetch(`${process.env.REACT_APP_API_ENDPOINT}/groups/`)
.then((response) => response.json())
.then((data) => {
if (data !== undefined) {
setState(data);
}
});
};
const [groups, setGroups] = useState<Carpool.Group[]>([ const [groups, setGroups] = useState<Carpool.Group[]>([
{ {
_id: '1234', _id: '1234',
@ -20,20 +64,26 @@ const MyGroups = () => {
}, []); }, []);
return ( return (
<div className="bg-dark" style={{ minHeight: '100vh' }}> <div
className=""
style={{ minHeight: '100vh', backgroundColor: '#F1EAE8' }}
>
<h1 <h1
className="d-flex justify-content-center p-4" className="d-flex justify-content-center p-4"
style={{ backgroundColor: '#F1EAE8', fontFamily: 'Impact' }} style={{ backgroundColor: '#F1EAE8' }}
> >
My Groups My Groups
</h1> </h1>
<a <Box textAlign="center">
className="btn btn-large btn-success" <Button
href="/create_group" variant="contained"
style={{ fontFamily: 'Courier New' }} className={classes.button}
> startIcon={<CloudUploadIcon />}
Create Group href="/create_group"
</a> >
Create Group
</Button>
</Box>
<div className="container" style={{ fontFamily: 'Courier New' }}> <div className="container" style={{ fontFamily: 'Courier New' }}>
<br></br> <br></br>
{groups.map((group, index) => { {groups.map((group, index) => {
@ -44,14 +94,44 @@ const MyGroups = () => {
background = '#FFFFFF'; background = '#FFFFFF';
} }
return ( return (
<div <Card
className="card card-body text-left" className={classes.root + 'd-inline-flex'}
style={{ backgroundColor: background }} style={{ margin: '0.5rem' }}
> >
<a href={'/groups/' + group._id} className="card-title"> <CardActionArea href={'/group/' + group._id}>
{group.name} <CardContent>
</a> <Typography gutterBottom variant="h5" component="h2">
</div> {group.name}
</Typography>
<Typography
variant="body2"
color="textSecondary"
component="p"
></Typography>
</CardContent>
</CardActionArea>
<CardActions>
<Button
size="small"
color="primary"
onClick={() => {
alert('Copied to Clipboard');
let link: string = 'localhost:3000/group/' + group._id;
navigator.clipboard.writeText(link);
}}
>
Share
</Button>
<Button
href={'/group/' + group._id}
size="small"
color="primary"
>
Learn More
</Button>
</CardActions>
</Card>
); );
})} })}
</div> </div>