From 42910a27f4a75d3b81fd889e5cda78a108639d84 Mon Sep 17 00:00:00 2001 From: Michael Fatemi Date: Mon, 11 Jan 2021 19:26:08 -0500 Subject: [PATCH] Add photos for class council --- src/pages/classcouncil.tsx | 61 ++++++++++++++++++++++++++++++++++---- 1 file changed, 56 insertions(+), 5 deletions(-) diff --git a/src/pages/classcouncil.tsx b/src/pages/classcouncil.tsx index 48660a3..1ab8fba 100644 --- a/src/pages/classcouncil.tsx +++ b/src/pages/classcouncil.tsx @@ -1,8 +1,10 @@ import React from 'react'; import Hero from '../components/Hero'; +import LinebreakToBrTag from '../components/LineBreakToBrTag'; import MemberRow from '../components/MemberRow'; import PrimaryHeader from '../components/PrimaryHeader'; import useQuery from '../hooks/useQuery'; +import imageUrl from '../lib/imageUrl'; import sortCommittee from '../lib/sortCommittee'; const roleOrder = [ @@ -15,6 +17,13 @@ const roleOrder = [ 'Sponsor', ]; +export interface ClassCouncilYear { + year: string; + members: SGA.MemberDocument[]; + photoUrl: string | null; + photoDescription: string | null; +} + export default function ClassCouncil() { let members = useQuery( `*[_type == 'member' && committee == 'class'] | order year` @@ -24,14 +33,24 @@ export default function ClassCouncil() { return null; } - let years: [string, SGA.MemberDocument[]][] = []; + let years: ClassCouncilYear[] = []; let currentYearMembers: SGA.MemberDocument[] = []; let currentYear = ''; + let currentYearPhotoUrl: string | null = null; + let currentYearPhotoDescription: string | null = null; const saveCurrentYear = () => { // Clear the members of the current year - years.push([currentYear, sortCommittee(currentYearMembers, roleOrder)]); + years.push({ + year: currentYear, + members: sortCommittee(currentYearMembers, roleOrder), + photoUrl: currentYearPhotoUrl, + photoDescription: currentYearPhotoDescription, + }); + currentYearMembers = []; + currentYearPhotoUrl = null; + currentYear = ''; }; for (let member of members) { @@ -41,7 +60,14 @@ export default function ClassCouncil() { } currentYear = member.year; } - currentYearMembers.push(member); + // If the role is 'PHOTO', 'Photo', 'photo', or anything else like that, use its "profile picture" + // as this Class Council's group photo. + if (member.role.toLowerCase() === 'photo') { + currentYearPhotoUrl = imageUrl(member.profile_photo).url(); + currentYearPhotoDescription = member.bio; + } else { + currentYearMembers.push(member); + } } if (currentYearMembers.length > 0) { @@ -52,9 +78,34 @@ export default function ClassCouncil() { <>
- {years.map(([year, members]) => ( + {years.map(({ year, members, photoUrl, photoDescription }) => ( <> - Class Council {year} + + Class Council {year} + + + {photoUrl && ( +
+
+ {'Group +
+ + + +
+ )} + {members.map((member) => (