diff --git a/src/components/NewUI/App.tsx b/src/components/NewUI/App.tsx index bebaf7e..821b2ab 100644 --- a/src/components/NewUI/App.tsx +++ b/src/components/NewUI/App.tsx @@ -1,9 +1,19 @@ -import EventCreator from './EventCreator'; -import Group from './Group'; +import { useEffect, useState } from 'react'; +import EventStream from './EventStream'; +import { IGroup } from './Group'; import GroupCreator from './GroupCreator'; +import GroupList from './GroupList'; import UIPrimaryTitle from './UIPrimaryTitle'; export default function App() { + const [groups, setGroups] = useState<IGroup[]>([]); + + useEffect(() => { + fetch('http://localhost:5000/api/groups') + .then((res) => res.json()) + .then(setGroups); + }, []); + return ( <div style={{ @@ -18,8 +28,10 @@ export default function App() { > <UIPrimaryTitle>WheelShare</UIPrimaryTitle> <GroupCreator /> - <EventCreator /> - <Group + <h1>Groups</h1> + <GroupList groups={groups} /> + <h1>Events</h1> + <EventStream events={[ { time: '11:00 AM to 2:45 PM', @@ -34,7 +46,6 @@ export default function App() { location: 'Dulles, Virginia', }, ]} - name="TJHSST 2022" /> </div> ); diff --git a/src/components/NewUI/EventStream.tsx b/src/components/NewUI/EventStream.tsx new file mode 100644 index 0000000..3c180a8 --- /dev/null +++ b/src/components/NewUI/EventStream.tsx @@ -0,0 +1,11 @@ +import Event, { IEvent } from './Event'; + +export default function EventStream({ events }: { events: IEvent[] }) { + return ( + <div style={{ display: 'flex', flexDirection: 'column', width: '100%' }}> + {events.map((event) => ( + <Event {...event} key={event.title} /> + ))} + </div> + ); +} diff --git a/src/components/NewUI/Group.tsx b/src/components/NewUI/Group.tsx index a508b19..b04aedd 100644 --- a/src/components/NewUI/Group.tsx +++ b/src/components/NewUI/Group.tsx @@ -1,6 +1,9 @@ -import Event, { IEvent } from './Event'; +import { IEvent } from './Event'; +import EventCreator from './EventCreator'; +import EventStream from './EventStream'; export type IGroup = { + id: number; events: IEvent[]; name: string; }; @@ -8,12 +11,9 @@ export type IGroup = { export default function Group({ events, name }: IGroup) { return ( <div style={{ textAlign: 'center', width: '100%' }}> + <EventCreator /> <h1>{name}</h1> - <div style={{ display: 'flex', flexDirection: 'column', width: '100%' }}> - {events.map((event) => ( - <Event {...event} key={event.title} /> - ))} - </div> + <EventStream events={events} /> </div> ); // diff --git a/src/components/NewUI/GroupList.tsx b/src/components/NewUI/GroupList.tsx new file mode 100644 index 0000000..1dc49ca --- /dev/null +++ b/src/components/NewUI/GroupList.tsx @@ -0,0 +1,20 @@ +import { IGroup } from './Group'; +import UISecondaryBox from './UISecondaryBox'; + +function GroupListItem({ group }: { group: IGroup }) { + return ( + <UISecondaryBox> + <h2 style={{ textAlign: 'center' }}>{group.name}</h2> + </UISecondaryBox> + ); +} + +export default function GroupList({ groups }: { groups: IGroup[] }) { + return ( + <div style={{ display: 'flex', flexDirection: 'column', width: '100%' }}> + {groups.map((group) => ( + <GroupListItem group={group} key={group.id} /> + ))} + </div> + ); +}