Separate Teams on Meet the Team page (Close #346) (#404)
continuous-integration/drone/push Build is passing Details

Co-authored-by: Rebecca-Chou <beihaozhou@gmail.com>
Reviewed-on: #404
Reviewed-by: n3parikh <n3parikh@csclub.uwaterloo.ca>
This commit is contained in:
Beihao Zhou 2022-03-09 10:03:26 -05:00
parent 328a2041fa
commit d04115fb12
10 changed files with 371 additions and 256 deletions

View File

@ -0,0 +1,18 @@
[
{
"name": "Jenny Zhang",
"role": "Team Lead"
},
{
"name": "Vivian Guo",
"role": "Team Lead"
},
{
"name": "Rachel Ma",
"role": "Design"
},
{
"name": "Aaryan Shroff",
"role": "Design"
}
]

View File

@ -0,0 +1,39 @@
[
{
"name": "Andy Wang",
"role": "Team Lead"
},
{
"name": "Alex Zhang",
"role": "Developer"
},
{
"name": "Allen Qin Lu",
"role": "Developer",
"image": "/images/team/AllenLu.png"
},
{
"name": "Chris Xie",
"role": "Developer"
},
{
"name": "Edwin Yang",
"role": "Developer"
},
{
"name": "Laura Nguyen",
"role": "Developer"
},
{
"name": "Marcus Chan",
"role": "Developer"
},
{
"name": "Mark Chen",
"role": "Developer"
},
{
"name": "Victor Zheng",
"role": "Developer"
}
]

View File

@ -0,0 +1,75 @@
[
{
"name": "Eden Chan",
"role": "Team Lead"
},
{
"name": "Eric Huang",
"role": "Team Lead"
},
{
"name": "Adele Chen",
"role": "Events"
},
{
"name": "Amya Singhal",
"role": "Events"
},
{
"name": "Anna Wang",
"role": "Events"
},
{
"name": "Catherine Wan",
"role": "Events"
},
{
"name": "Diana Brebeanu",
"role": "Events"
},
{
"name": "Elaine Han",
"role": "Events"
},
{
"name": "Jonathan Cui",
"role": "Events"
},
{
"name": "Kenson Hui",
"role": "Events"
},
{
"name": "Mabel Kwok",
"role": "Events"
},
{
"name": "Mashrur Chowdhury",
"role": "Events"
},
{
"name": "Matthew Wang",
"role": "Events"
},
{
"name": "Naman Chhawchharia",
"role": "Events"
},
{
"name": "Riddhi Bajaj",
"role": "Events"
},
{
"name": "Santiago Montemayor Gomez",
"role": "Events",
"image": "/images/team/SantiagoMontemayor.jpg"
},
{
"name": "Tommy Jiang",
"role": "Events"
},
{
"name": "William Tran",
"role": "Events"
}
]

View File

@ -0,0 +1,22 @@
[
{
"name": "David Chen",
"role": "Team Lead"
},
{
"name": "Daniel Kim",
"role": "External Affairs"
},
{
"name": "Eric Liu",
"role": "External Affairs"
},
{
"name": "Victor Wu",
"role": "External Affairs"
},
{
"name": "Wanda Song",
"role": "External Affairs"
}
]

View File

@ -0,0 +1,31 @@
[
{
"name": "Dina Orucevic",
"role": "Team Lead"
},
{
"name": "Arjun Amit Athalye",
"role": "Marketing",
"image": "/images/team/ArjunAthalye.jpeg"
},
{
"name": "Catherine Tao",
"role": "Marketing"
},
{
"name": "Ethan Hong",
"role": "Marketing"
},
{
"name": "Gurnika Kaur",
"role": "Marketing"
},
{
"name": "Haley Song",
"role": "Marketing"
},
{
"name": "Kshama Patel",
"role": "Marketing"
}
]

View File

@ -0,0 +1,18 @@
[
{
"name": "Bonnie Peng",
"role": "Team Lead"
},
{
"name": "Annie Zhang",
"role": "Photographer"
},
{
"name": "Calvin Zhong",
"role": "Photographer"
},
{
"name": "Jesse Liu",
"role": "Photographer"
}
]

View File

@ -1,233 +0,0 @@
[
{
"name": "Jenny Zhang",
"role": "Head of Design"
},
{
"name": "Vivian Guo",
"role": "Head of Design"
},
{
"name": "Rachel Ma",
"role": "Design"
},
{
"name": "Aaryan Shroff",
"role": "Design"
},
{
"name": "Andy Wang",
"role": "Head of Discord"
},
{
"name": "Alex Zhang",
"role": "Discord"
},
{
"name": "Allen Qin Lu",
"role": "Discord",
"image": "/images/team/AllenLu.png"
},
{
"name": "Chris Xie",
"role": "Discord"
},
{
"name": "Edwin Yang",
"role": "Discord"
},
{
"name": "Laura Nguyen",
"role": "Discord"
},
{
"name": "Marcus Chan",
"role": "Discord"
},
{
"name": "Mark Chen",
"role": "Discord"
},
{
"name": "Victor Zheng",
"role": "Discord"
},
{
"name": "Eden Chan",
"role": "Head of Events"
},
{
"name": "Eric Huang",
"role": "Head of Events"
},
{
"name": "Adele Chen",
"role": "Events"
},
{
"name": "Amya Singhal",
"role": "Events"
},
{
"name": "Anna Wang",
"role": "Events"
},
{
"name": "Catherine Wan",
"role": "Events"
},
{
"name": "Diana Brebeanu",
"role": "Events"
},
{
"name": "Elaine Han",
"role": "Events"
},
{
"name": "Jonathan Cui",
"role": "Events"
},
{
"name": "Kenson Hui",
"role": "Events"
},
{
"name": "Mabel Kwok",
"role": "Events"
},
{
"name": "Mashrur Chowdhury",
"role": "Events"
},
{
"name": "Matthew Wang",
"role": "Events"
},
{
"name": "Naman Chhawchharia",
"role": "Events"
},
{
"name": "Riddhi Bajaj",
"role": "Events"
},
{
"name": "Santiago Montemayor Gomez",
"role": "Events",
"image": "/images/team/SantiagoMontemayor.jpg"
},
{
"name": "Tommy Jiang",
"role": "Events"
},
{
"name": "William Tran",
"role": "Events"
},
{
"name": "David Chen",
"role": "Head of External Affairs"
},
{
"name": "Daniel Kim",
"role": "External Affairs"
},
{
"name": "Eric Liu",
"role": "External Affairs"
},
{
"name": "Victor Wu",
"role": "External Affairs"
},
{
"name": "Wanda Song",
"role": "External Affairs"
},
{
"name": "Dina Orucevic",
"role": "Head of Marketing"
},
{
"name": "Arjun Amit Athalye",
"role": "Marketing",
"image": "/images/team/ArjunAthalye.jpeg"
},
{
"name": "Catherine Tao",
"role": "Marketing"
},
{
"name": "Ethan Hong",
"role": "Marketing"
},
{
"name": "Gurnika Kaur",
"role": "Marketing"
},
{
"name": "Haley Song",
"role": "Marketing"
},
{
"name": "Kshama Patel",
"role": "Marketing"
},
{
"name": "Bonnie Peng",
"role": "Head of Photography"
},
{
"name": "Annie Zhang",
"role": "Photographer"
},
{
"name": "Calvin Zhong",
"role": "Photographer"
},
{
"name": "Jesse Liu",
"role": "Photographer"
},
{
"name": "Amy Luo",
"role": "Head of Reps"
},
{
"name": "Govind Varma",
"role": "Representative"
},
{
"name": "Guneet Bola",
"role": "Representative"
},
{
"name": "Ivy Lei",
"role": "Representative"
},
{
"name": "Jasmine Bal",
"role": "Representative"
},
{
"name": "Mayank Mehra",
"role": "Representative"
},
{
"name": "Olivia Liu",
"role": "Representative"
},
{
"name": "Sat Arora",
"role": "Representative"
},
{
"name": "Star Xie",
"role": "Representative"
},
{
"name": "Tracy Dong",
"role": "Representative"
}
]

View File

@ -0,0 +1,42 @@
[
{
"name": "Amy Luo",
"role": "Team Lead"
},
{
"name": "Govind Varma",
"role": "Representative"
},
{
"name": "Guneet Bola",
"role": "Representative"
},
{
"name": "Ivy Lei",
"role": "Representative"
},
{
"name": "Jasmine Bal",
"role": "Representative"
},
{
"name": "Mayank Mehra",
"role": "Representative"
},
{
"name": "Olivia Liu",
"role": "Representative"
},
{
"name": "Sat Arora",
"role": "Representative"
},
{
"name": "Star Xie",
"role": "Representative"
},
{
"name": "Tracy Dong",
"role": "Representative"
}
]

View File

@ -53,6 +53,10 @@ export async function getMemberImagePath(name: string) {
(await getImage(imgPath + ".png")) ?? (await getImage(imgPath + ".png")) ??
(await getImage(imgPath + ".gif")) ?? (await getImage(imgPath + ".gif")) ??
(await getImage(imgPath + ".jpeg")) ?? (await getImage(imgPath + ".jpeg")) ??
(await getImage(imgPath + ".JPG")) ??
(await getImage(imgPath + ".PNG")) ??
(await getImage(imgPath + ".GIF")) ??
(await getImage(imgPath + ".JPEG")) ??
placeholder; placeholder;
return img; return img;
} }

View File

@ -16,7 +16,13 @@ import {
getMemberImagePath, getMemberImagePath,
} from "@/lib/team"; } from "@/lib/team";
import programmeData from "../../content/team/programme-committee.json"; import designData from "../../content/team/design-team.json";
import discordData from "../../content/team/discord-team.json";
import eventsData from "../../content/team/events-team.json";
import externalData from "../../content/team/external-affairs-team.json";
import marketingData from "../../content/team/marketing-team.json";
import photographyData from "../../content/team/photography-team.json";
import repsData from "../../content/team/representative-team.json";
import systemsData from "../../content/team/systems-committee.json"; import systemsData from "../../content/team/systems-committee.json";
import terminalData from "../../content/team/terminal-committee.json"; import terminalData from "../../content/team/terminal-committee.json";
import webData from "../../content/team/web-committee.json"; import webData from "../../content/team/web-committee.json";
@ -30,7 +36,13 @@ interface SerializedExec {
interface Props { interface Props {
execs: SerializedExec[]; execs: SerializedExec[];
programme: Metadata[]; design: Metadata[];
discord: Metadata[];
events: Metadata[];
external: Metadata[];
marketing: Metadata[];
photography: Metadata[];
reps: Metadata[];
website: Metadata[]; website: Metadata[];
systems: Metadata[]; systems: Metadata[];
terminal: Metadata[]; terminal: Metadata[];
@ -38,11 +50,69 @@ interface Props {
export default function Team({ export default function Team({
execs, execs,
programme, design,
discord,
events,
external,
marketing,
photography,
reps,
website, website,
systems, systems,
terminal, terminal,
}: Props) { }: Props) {
const teams = [
{
id: "design",
name: "Design Team",
members: design,
},
{
id: "discord",
name: "Discord Team",
members: discord,
},
{
id: "events",
name: "Events Team",
members: events,
},
{
id: "external",
name: "External Affairs Team",
members: external,
},
{
id: "marketing",
name: "Marketing Team",
members: marketing,
},
{
id: "photography",
name: "Photography Team",
members: photography,
},
{
id: "reps",
name: "Class Representatives",
members: reps,
},
{
id: "website",
name: "Website Committee",
members: website,
},
{
id: "system",
name: "Systems Committee",
members: systems,
},
{
id: "terminal",
name: "Terminal Committee",
members: terminal,
},
];
return ( return (
<> <>
<Title>Team</Title> <Title>Team</Title>
@ -52,7 +122,13 @@ export default function Team({
<h1 className={styles.header}>Meet the Team!</h1> <h1 className={styles.header}>Meet the Team!</h1>
<div className={styles.nav}> <div className={styles.nav}>
<Link href="#execs">The Executives</Link> <Link href="#execs">The Executives</Link>
<Link href="#programme">Programme Committee</Link> <Link href="#design">Design</Link>
<Link href="#discord">Discord</Link>
<Link href="#events">Events</Link>
<Link href="#external">External Affairs</Link>
<Link href="#marketing">Marketing</Link>
<Link href="#photography">Photography</Link>
<Link href="#reps">Class Representatives</Link>
<Link href="#website">Website Committee</Link> <Link href="#website">Website Committee</Link>
<Link href="#system">Systems Committee</Link> <Link href="#system">Systems Committee</Link>
<Link href="#terminal">Terminal Committee</Link> <Link href="#terminal">Terminal Committee</Link>
@ -77,22 +153,14 @@ export default function Team({
); );
})} })}
</div> </div>
<div id="programme"> {teams.map((team) => {
<h2 className={styles.subheading}>Programme Committee</h2> return (
<MembersList team={programme} /> <div id={team.id} key={team.id}>
</div> <h2 className={styles.subheading}>{team.name}</h2>
<div id="website"> <MembersList team={team.members} />
<h2 className={styles.subheading}>Website Committee</h2> </div>
<MembersList team={website} /> );
</div> })}
<div id="system">
<h2 className={styles.subheading}>Systems Committee</h2>
<MembersList team={systems} />
</div>
<div id="terminal">
<h2 className={styles.subheading}>Terminal Committee</h2>
<MembersList team={terminal} />
</div>
</DefaultLayout> </DefaultLayout>
<div className={styles.elections}> <div className={styles.elections}>
<Bubble> <Bubble>
@ -141,17 +209,48 @@ async function getTeamWithImages(team: TeamMember[]) {
export const getStaticProps: GetStaticProps<Props> = async () => { export const getStaticProps: GetStaticProps<Props> = async () => {
const execNames = await getExecNames(); const execNames = await getExecNames();
const execs = (await Promise.all( const execs = (await Promise.all(
execNames.map((name) => getExec(name)) execNames.map((name) => getExec(name))
)) as SerializedExec[]; )) as SerializedExec[];
const [programme, website, systems, terminal] = await Promise.all([
getTeamWithImages(programmeData), const [
design,
discord,
events,
external,
marketing,
photography,
reps,
website,
systems,
terminal,
] = await Promise.all([
getTeamWithImages(designData),
getTeamWithImages(discordData),
getTeamWithImages(eventsData),
getTeamWithImages(externalData),
getTeamWithImages(marketingData),
getTeamWithImages(photographyData),
getTeamWithImages(repsData),
getTeamWithImages(webData), getTeamWithImages(webData),
getTeamWithImages(systemsData), getTeamWithImages(systemsData),
getTeamWithImages(terminalData), getTeamWithImages(terminalData),
]); ]);
return { return {
props: { execs, programme, website, systems, terminal }, props: {
execs,
design,
discord,
events,
external,
marketing,
photography,
reps,
website,
systems,
terminal,
},
}; };
}; };