Browse Source

Redesign and update 'Meet the Team' data (#452)

Closes #450. Closes #436.

Co-authored-by: Jared He <66887902+jaredjhe@users.noreply.github.com>
Reviewed-on: #452
Reviewed-by: Amy <a258wang@csclub.uwaterloo.ca>
pull/467/head
j285he 2 months ago
parent
commit
e1af564621
  1. 4
      components/TeamMember.tsx
  2. 19
      components/TeamMemberCard.tsx
  3. 36
      content/team/coordinators-team.json
  4. 17
      content/team/design-team.json
  5. 47
      content/team/discord-team.json
  6. 61
      content/team/events-team.json
  7. 2
      content/team/execs/raymond-li.md
  8. 20
      content/team/external-affairs-team.json
  9. 25
      content/team/marketing-team.json
  10. 14
      content/team/photography-team.json
  11. 42
      content/team/representative-team.json
  12. 26
      content/team/systems-committee.json
  13. 29
      content/team/terminal-committee.json
  14. 14
      content/team/web-committee.json
  15. BIN
      images/team/AaronChoo.jpg
  16. BIN
      images/team/AdeleChen.jpg
  17. BIN
      images/team/AmyaSinghal.jpg
  18. 0
      images/team/AndrewWang.jpg
  19. BIN
      images/team/AndyLi.JPG
  20. BIN
      images/team/AndyWang.jpeg
  21. BIN
      images/team/AnjingLi.jpg
  22. BIN
      images/team/AnnaWang.jpg
  23. BIN
      images/team/ArjunAthalye.jpeg
  24. BIN
      images/team/BryanWang.jpg
  25. BIN
      images/team/CalvinZhong.jpg
  26. BIN
      images/team/CatherineTao.jpg
  27. BIN
      images/team/CelineChung.jpg
  28. BIN
      images/team/ChrisXie.jpg
  29. BIN
      images/team/ColbyWang.JPG
  30. BIN
      images/team/DoraSu.jpg
  31. BIN
      images/team/FelixYang.jpg
  32. BIN
      images/team/GenNishiwaki.JPG
  33. BIN
      images/team/GurnikaKaur.jpg
  34. BIN
      images/team/HarshithaDurai.jpg
  35. BIN
      images/team/JasmineBal.jpg
  36. BIN
      images/team/JasonD'Souza.png
  37. BIN
      images/team/JasonSang.jpg
  38. BIN
      images/team/JesseLiu.jpg
  39. BIN
      images/team/JonathanCui.jpg
  40. BIN
      images/team/JosephWang.jpg
  41. BIN
      images/team/JoyceYe.jpg
  42. BIN
      images/team/JustinToft.jpg
  43. BIN
      images/team/KallenTu.jpg
  44. BIN
      images/team/KensonHui.jpg
  45. BIN
      images/team/MabelKwok.jpg
  46. BIN
      images/team/MarcusChan.jpg
  47. BIN
      images/team/MashrurChowdhury.jpg
  48. BIN
      images/team/PatrickLuo.jpg
  49. BIN
      images/team/RahulTandon.jpg
  50. BIN
      images/team/RiddhiBajaj.jpg
  51. BIN
      images/team/SamHonoridez.jpg
  52. BIN
      images/team/SantiagoMontemayor.jpg
  53. BIN
      images/team/SherryLev.jpg
  54. BIN
      images/team/SitingBan.jpg
  55. BIN
      images/team/StarXie.jpg
  56. BIN
      images/team/TracyDong.jpg
  57. BIN
      images/team/VictorWu.jpg
  58. BIN
      images/team/VivianGuo.jpg
  59. BIN
      images/team/WandaSong.jpg
  60. BIN
      images/team/WilliamTran.jpg
  61. BIN
      images/team/YanniWang.jpg
  62. 2
      lib/team.ts
  63. 57
      pages/about/team.tsx

4
components/TeamMember.tsx

@ -6,13 +6,13 @@ import styles from "./TeamMember.module.css";
interface TeamMemberProps {
name: string;
role: string;
role?: string;
image: string;
}
export const TeamMember: React.FC<TeamMemberProps> = ({
name,
role,
role = "",
image,
}) => {
return (

19
components/TeamMemberCard.tsx

@ -8,14 +8,14 @@ import styles from "./TeamMemberCard.module.css";
export interface TeamMemberCardProps {
name: string;
role: string;
role?: string;
image: string;
children: React.ReactNode;
}
export function TeamMemberCard({
name,
role,
role = "",
image,
children,
}: TeamMemberCardProps) {
@ -48,7 +48,12 @@ export function TeamMemberCard({
);
}
function TeamMemberInfo({ name, role, image, children }: TeamMemberCardProps) {
function TeamMemberInfo({
name,
role = "",
image,
children,
}: TeamMemberCardProps) {
return (
<>
<div className={styles.picture}>
@ -69,7 +74,13 @@ interface PopupProps extends TeamMemberCardProps {
handleClick: () => void;
}
function ExecPopup({ name, role, image, children, handleClick }: PopupProps) {
function ExecPopup({
name,
role = "",
image,
children,
handleClick,
}: PopupProps) {
return (
<>
<div className={styles.popupBackground} onClick={handleClick} />

36
content/team/coordinators-team.json

@ -0,0 +1,36 @@
[
{
"name": "Sat Arora",
"role": "Team Lead"
},
{
"name": "Ivy Lei"
},
{
"name": "Govind Varma"
},
{
"name": "Guneet Bola"
},
{
"name": "Mayank Mehra"
},
{
"name": "Olivia Liu"
},
{
"name": "Colby Wang"
},
{
"name": "Harshitha Durai Babu",
"image": "/images/team/HarshithaDurai.jpg"
},
{
"name": "Amy Luo",
"role": "Advisor"
},
{
"name": "Juthika Hoque",
"role": "Advisor"
}
]

17
content/team/design-team.json

@ -1,18 +1,21 @@
[
{
"name": "Jenny Zhang",
"role": "Team Lead"
"name": "Jenny Zhang"
},
{
"name": "Vivian Guo",
"role": "Team Lead"
"name": "Alice Li"
},
{
"name": "Rachel Ma",
"role": "Design"
"name": "Rachel Ma"
},
{
"name": "Aaryan Shroff",
"role": "Design"
"role": "Team Lead"
},
{
"name": "Joyce Ye"
},
{
"name": "Jessica Chan"
}
]

47
content/team/discord-team.json

@ -1,39 +1,50 @@
[
{
"name": "Andy Wang",
"name": "Mark Chen",
"role": "Team Lead"
},
{
"name": "Alex Zhang",
"role": "Developer"
"role": "Team Lead"
},
{
"name": "Allen Qin Lu",
"role": "Developer",
"image": "/images/team/AllenLu.png"
"name": "Allen Lu"
},
{
"name": "Chris Xie",
"role": "Developer"
"name": "Andrew Wang"
},
{
"name": "Edwin Yang",
"role": "Developer"
"name": "Edwin Yi-Jan Yang",
"image": "/images/team/EdwinYang.jpg"
},
{
"name": "Laura Nguyen",
"role": "Developer"
"name": "Elaine Han"
},
{
"name": "Marcus Chan",
"role": "Developer"
"name": "Laura Nguyen"
},
{
"name": "Mark Chen",
"role": "Developer"
"name": "Marcus Chan"
},
{
"name": "Victor Zheng"
},
{
"name": "Howe Wang"
},
{
"name": "Daniel Jemin Kim",
"image": "/images/team/DanielKim.jpg"
},
{
"name": "Andy Li"
},
{
"name": "Gen Nishiwaki"
},
{
"name": "Victor Zheng",
"role": "Developer"
"name": "Charles Zhang",
"role": "Advisor"
}
]
]

61
content/team/events-team.json

@ -1,75 +1,44 @@
[
{
"name": "Eden Chan",
"name": "Bonnie Peng",
"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"
"role": "Team Lead"
},
{
"name": "Elaine Han",
"role": "Events"
"name": "Ethan Hong"
},
{
"name": "Jonathan Cui",
"role": "Events"
"name": "Naman Chhawchharia"
},
{
"name": "Kenson Hui",
"role": "Events"
"name": "Diana Brebeanu"
},
{
"name": "Mabel Kwok",
"role": "Events"
"name": "Stephanie Xu"
},
{
"name": "Mashrur Chowdhury",
"role": "Events"
"name": "Alan Wang"
},
{
"name": "Matthew Wang",
"role": "Events"
"name": "Freya Zhang"
},
{
"name": "Naman Chhawchharia",
"role": "Events"
"name": "Siting Ban"
},
{
"name": "Riddhi Bajaj",
"role": "Events"
"name": "Keane Moraes"
},
{
"name": "Santiago Montemayor Gomez",
"role": "Events",
"image": "/images/team/SantiagoMontemayor.jpg"
"name": "Celine Chung"
},
{
"name": "Tommy Jiang",
"role": "Events"
"name": "Jenn Zhang"
},
{
"name": "William Tran",
"role": "Events"
"name": "Eric Huang",
"role": "Advisor"
}
]
]

2
content/team/execs/raymond-li.md

@ -3,4 +3,4 @@ name: Raymond Li
role: Systems Administrator
---
Hey there! I'm [Raymond Li](https://raymond.li). I'm on co-op after my 2B term of CS. As sysadmin, I lead syscom and termcom in maintaining all the club infrastructure, including our [machines](https://wiki.csclub.uwaterloo.ca/Machine_List), [mirror](https://mirror.csclub.uwaterloo.ca/stats), [wiki](https://wiki.csclub.uwaterloo.ca), [email service](https://mail.csclub.uwaterloo.ca), [Gitea instance](https://git.csclub.uwaterloo.ca), [Mattermost instance](https://mattermost.csclub.uwaterloo.ca), [TheLounge instance](https://chat.csclub.uwaterloo.ca), and much much more. Major projects I've got planned this term include setting up NextCloud and our own self-hosted URL shortener at csclub.ca! In my spare time, I like to code, ski, and play chess and violin.<br />#btwiusearch (at least until [Linux expires in 2038](https://youtu.be/dQw4w9WgXcQ))
Hey there! I'm [Raymond Li](https://raymond.li). I'm on co-op after my 2B term of CS. As sysadmin, I lead [syscom](https://csclub.uwaterloo.ca/about/team/#system) and [termcom](https://csclub.uwaterloo.ca/about/team/#terminal) in maintaining all the club infrastructure, including our [machines](https://wiki.csclub.uwaterloo.ca/Machine_List), [mirror](https://mirror.csclub.uwaterloo.ca/stats), [wiki](https://wiki.csclub.uwaterloo.ca), [email service](https://mail.csclub.uwaterloo.ca), [Gitea instance](https://git.csclub.uwaterloo.ca), [Mattermost instance](https://mattermost.csclub.uwaterloo.ca), [TheLounge instance](https://chat.csclub.uwaterloo.ca), and much much more. Major projects I've got planned this term include setting up NextCloud and our own self-hosted URL shortener at csclub.ca! In my spare time, I like to code, ski, and play chess and violin.<br />#btwiusearch (at least until [Linux expires in 2038](https://youtu.be/dQw4w9WgXcQ))

20
content/team/external-affairs-team.json

@ -1,22 +1,22 @@
[
{
"name": "David Chen",
"name": "Eric Liu",
"role": "Team Lead"
},
{
"name": "Daniel Kim",
"role": "External Affairs"
"name": "David Chen",
"role": "Advisor"
},
{
"name": "Ernest Wong"
},
{
"name": "Eric Liu",
"role": "External Affairs"
"name": "Jason D'Souza"
},
{
"name": "Victor Wu",
"role": "External Affairs"
"name": "Oren Leung"
},
{
"name": "Wanda Song",
"role": "External Affairs"
"name": "Sameer Fettes"
}
]
]

25
content/team/marketing-team.json

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

14
content/team/photography-team.json

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

42
content/team/representative-team.json

@ -1,42 +0,0 @@
[
{
"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"
}
]

26
content/team/systems-committee.json

@ -1,40 +1,36 @@
[
{
"name": "Raymond Li",
"role": "Sysadmin"
"role": "Team Lead"
},
{
"name": "Amin Bandali",
"name": "Max Erenberg",
"role": "Alumni"
},
{
"name": "Andrew Wang",
"role": "",
"image": "/images/team/AndrewWang-Syscom.jpg"
"name": "Andrew Wang"
},
{
"name": "Anthony Brennan",
"role": "Alumni"
"name": "Rio Liu"
},
{
"name": "Edwin Zhang",
"name": "Amin Bandali",
"role": "Alumni"
},
{
"name": "Elana Hashman",
"name": "Anthony Brennan",
"role": "Alumni"
},
{
"name": "Jennifer Zhou",
"role": "Alumni"
"name": "Edwin Zhang"
},
{
"name": "Max Erenberg",
"role": ""
"name": "Elana Hashman",
"role": "Alumni"
},
{
"name": "Rio Liu",
"role": ""
"name": "Jennifer Zhou",
"role": "Alumni"
},
{
"name": "Zachary Seguin",

29
content/team/terminal-committee.json

@ -1,22 +1,29 @@
[
{
"name": "Daniel Liu",
"role": ""
"name": "Yiao Shen"
},
{
"name": "David Hui",
"role": ""
"name": "Devin Lin"
},
{
"name": "Devin Lin",
"role": ""
"name": "Seshan Ravikumar"
},
{
"name": "Joseph Wang",
"role": ""
"name": "Daniel Liu"
},
{
"name": "Seshan Ravikumar",
"role": ""
"name": "Joseph Wang"
},
{
"name": "David Hui"
},
{
"name": "Rahul Tandon"
},
{
"name": "Justin Toft"
},
{
"name": "Patrick Luo"
}
]
]

14
content/team/web-committee.json

@ -8,23 +8,19 @@
"role": "Team Lead"
},
{
"name": "Beihao Zhou",
"role": "Developer"
"name": "Beihao Zhou"
},
{
"name": "Emily Chiu",
"role": "Developer"
"name": "Emily Chiu"
},
{
"name": "Jared He",
"role": "Developer"
"name": "Jared He"
},
{
"name": "Shahan NedaDahandeh",
"role": "Developer"
"name": "Shahan NedaDahandeh"
},
{
"name": "Aditya Thakral",
"role": "Alumni"
"role": "Advisor"
}
]

BIN
images/team/AaronChoo.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 323 KiB

BIN
images/team/AdeleChen.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 665 KiB

BIN
images/team/AmyaSinghal.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

0
images/team/AndrewWang-Syscom.jpg → images/team/AndrewWang.jpg

Before

Width:  |  Height:  |  Size: 907 KiB

After

Width:  |  Height:  |  Size: 907 KiB

BIN
images/team/AndyLi.JPG

Binary file not shown.

After

Width:  |  Height:  |  Size: 813 KiB

BIN
images/team/AndyWang.jpeg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 426 KiB

BIN
images/team/AnjingLi.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

BIN
images/team/AnnaWang.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

BIN
images/team/ArjunAthalye.jpeg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 KiB

After

Width:  |  Height:  |  Size: 78 KiB

BIN
images/team/BryanWang.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 MiB

BIN
images/team/CalvinZhong.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 196 KiB

BIN
images/team/CatherineTao.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 133 KiB

BIN
images/team/CelineChung.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 MiB

BIN
images/team/ChrisXie.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 218 KiB

BIN
images/team/ColbyWang.JPG

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

BIN
images/team/DoraSu.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 MiB

BIN
images/team/FelixYang.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 968 KiB

BIN
images/team/GenNishiwaki.JPG

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

BIN
images/team/GurnikaKaur.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 300 KiB

BIN
images/team/HarshithaDurai.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 221 KiB

BIN
images/team/JasmineBal.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 207 KiB

BIN
images/team/JasonD'Souza.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 524 KiB

BIN
images/team/JasonSang.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 461 KiB

BIN
images/team/JesseLiu.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

BIN
images/team/JonathanCui.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 113 KiB

BIN
images/team/JosephWang.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

After

Width:  |  Height:  |  Size: 1.5 MiB

BIN
images/team/JoyceYe.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 928 KiB

BIN
images/team/JustinToft.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 657 KiB

BIN
images/team/KallenTu.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1012 KiB

BIN
images/team/KensonHui.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

BIN
images/team/MabelKwok.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

BIN
images/team/MarcusChan.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 78 KiB

BIN
images/team/MashrurChowdhury.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

BIN
images/team/PatrickLuo.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

BIN
images/team/RahulTandon.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 745 KiB

BIN
images/team/RiddhiBajaj.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 611 KiB

BIN
images/team/SamHonoridez.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 341 KiB

BIN
images/team/SantiagoMontemayor.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

BIN
images/team/SherryLev.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 223 KiB

BIN
images/team/SitingBan.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 330 KiB

BIN
images/team/StarXie.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 57 KiB

BIN
images/team/TracyDong.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

BIN
images/team/VictorWu.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

BIN
images/team/VivianGuo.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 328 KiB

BIN
images/team/WandaSong.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 348 KiB

BIN
images/team/WilliamTran.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 738 KiB

BIN
images/team/YanniWang.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 320 KiB

2
lib/team.ts

@ -30,7 +30,7 @@ const orderedExecPositions: string[] = [
export interface Metadata {
name: string;
role: string;
role?: string;
image: string;
}

57
pages/about/team.tsx

@ -16,13 +16,13 @@ import {
getMemberImagePath,
} from "@/lib/team";
import coordinatorsData from "../../content/team/coordinators-team.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 terminalData from "../../content/team/terminal-committee.json";
import webData from "../../content/team/web-committee.json";
@ -36,13 +36,13 @@ interface SerializedExec {
interface Props {
execs: SerializedExec[];
coordinators: Metadata[];
design: Metadata[];
discord: Metadata[];
events: Metadata[];
external: Metadata[];
marketing: Metadata[];
photography: Metadata[];
reps: Metadata[];
website: Metadata[];
systems: Metadata[];
terminal: Metadata[];
@ -50,18 +50,23 @@ interface Props {
export default function Team({
execs,
coordinators,
design,
discord,
events,
external,
marketing,
photography,
reps,
website,
systems,
terminal,
}: Props) {
const teams = [
{
id: "coordinators",
name: "Community Coordinators",
members: coordinators,
},
{
id: "design",
name: "Design Team",
@ -92,14 +97,9 @@ export default function Team({
name: "Photography Team",
members: photography,
},
{
id: "reps",
name: "Class Representatives",
members: reps,
},
{
id: "website",
name: "Website Committee",
name: "Web Committee",
members: website,
},
{
@ -122,14 +122,14 @@ export default function Team({
<h1 className={styles.header}>Meet the Team!</h1>
<div className={styles.nav}>
<Link href="#execs">The Executives</Link>
<Link href="#coordinators">Community Coordinators</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">Web Committee</Link>
<Link href="#system">Systems Committee</Link>
<Link href="#terminal">Terminal Committee</Link>
</div>
@ -207,6 +207,22 @@ async function getTeamWithImages(team: TeamMember[]) {
);
}
function memberComparer(a: Metadata, b: Metadata) {
return a.name.localeCompare(b.name);
}
function sortTeam(team: Metadata[]): Metadata[] {
const leads = team
.filter(({ role }) => role === "Team Lead")
.sort(memberComparer);
const general = team.filter(({ role }) => !role).sort(memberComparer);
const others = team
.filter(({ role }) => !!role && role !== "Team Lead")
.sort(memberComparer);
return [...leads, ...general, ...others];
}
export const getStaticProps: GetStaticProps<Props> = async () => {
const execNamePosPairs = await getExecNamePosPairs();
@ -216,40 +232,51 @@ export const getStaticProps: GetStaticProps<Props> = async () => {
)
)) as SerializedExec[];
const [
let [
coordinators,
design,
discord,
events,
external,
marketing,
photography,
reps,
website,
systems,
terminal,
] = await Promise.all([
getTeamWithImages(coordinatorsData),
getTeamWithImages(designData),
getTeamWithImages(discordData),
getTeamWithImages(eventsData),
getTeamWithImages(externalData),
getTeamWithImages(marketingData),
getTeamWithImages(photographyData),
getTeamWithImages(repsData),
getTeamWithImages(webData),
getTeamWithImages(systemsData),
getTeamWithImages(terminalData),
]);
coordinators = sortTeam(coordinators);
design = sortTeam(design);
discord = sortTeam(discord);
events = sortTeam(events);
external = sortTeam(external);
marketing = sortTeam(marketing);
photography = sortTeam(photography);
website = sortTeam(website);
systems = sortTeam(systems);
terminal = sortTeam(terminal);
return {
props: {
execs,
coordinators,
design,
discord,
events,
external,
marketing,
photography,
reps,
website,
systems,
terminal,

Loading…
Cancel
Save