diff --git a/.gitignore b/.gitignore index c18e3f19..7b884dcb 100644 --- a/.gitignore +++ b/.gitignore @@ -40,6 +40,7 @@ offoutput.json townhall.json past-townhall.json gmData.json +past-gm.json # Local Netlify folder .netlify diff --git a/components/Footer.js b/components/Footer.js index 39b997f9..b81c8d98 100644 --- a/components/Footer.js +++ b/components/Footer.js @@ -114,8 +114,8 @@ function Footer() { component */ - /* eslint-disable-next-line @next/next/no-img-element */ title={ + /* eslint-disable-next-line @next/next/no-img-element */ { switch (day) { case 0: @@ -156,6 +165,8 @@ const GMCountdown = (props) => { }; function gm() { + + const pastGMs = [...pastData].reverse(); const data = parseGMData(gmData); function countdownRenderer({ days, hours, minutes, seconds, completed }) { const { dayString, hourString, minuteString, secondString } = @@ -335,6 +346,7 @@ function gm() { {data.initiatives.map((item) => (

+ {/* eslint-disable-next-line @next/next/no-img-element */} {item}

))} @@ -347,10 +359,67 @@ function gm() { friends!

-

All ACM officers

+
All ACM officers
+ {/* Past GMs */} +
+
+

Past General Meetings

+ {pastGMs.map((pastGM, index) => ( +
+
+

{pastGM.title + ' // ' + pastGM.date}

+

{pastGM.description}

+ +
+
+ {/* eslint-disable-next-line @next/next/no-img-element */} + {pastGM.alt_text} +
+
+ ))} +
); } diff --git a/pages/gm/f21.js b/pages/gm/f21.js index 69df5c67..b8b3c899 100644 --- a/pages/gm/f21.js +++ b/pages/gm/f21.js @@ -213,55 +213,55 @@ function F21() { Fall quarter

- {/* eslint-disable-next-line @next/next/no-img-element */}

+ {/* eslint-disable-next-line @next/next/no-img-element */} ACM studio{' '} Christian Loanzon, Peter Sutarjo

- {/* eslint-disable-next-line @next/next/no-img-element */}

+ {/* eslint-disable-next-line @next/next/no-img-element */} ACM icpc{' '} Jacob Zhang

- {/* eslint-disable-next-line @next/next/no-img-element */}

+ {/* eslint-disable-next-line @next/next/no-img-element */} ACM design{' '} Crystal Huynh, Muthu Palaniappan

- {/* eslint-disable-next-line @next/next/no-img-element */}

+ {/* eslint-disable-next-line @next/next/no-img-element */} ACM cyber{' '} Josh Lee, Henry Chang

- {/* eslint-disable-next-line @next/next/no-img-element */}

+ {/* eslint-disable-next-line @next/next/no-img-element */} ACM teachLA{' '} Sophie Schoenmeyer, Chloe Uy

- {/* eslint-disable-next-line @next/next/no-img-element */}

+ {/* eslint-disable-next-line @next/next/no-img-element */} ACM w Cindy Zhang, Lena O'Grady

- {/* eslint-disable-next-line @next/next/no-img-element */}

+ {/* eslint-disable-next-line @next/next/no-img-element */} ACM ai{' '} Justin Yi

- {/* eslint-disable-next-line @next/next/no-img-element */}

+ {/* eslint-disable-next-line @next/next/no-img-element */} ACM hack{' '} Asha Kar, Eugene Lo

@@ -274,16 +274,16 @@ function F21() { events

- {/* eslint-disable-next-line @next/next/no-img-element */}

+ {/* eslint-disable-next-line @next/next/no-img-element */} ACM board   External: Tina Huang

- {/* eslint-disable-next-line @next/next/no-img-element */}

+ {/* eslint-disable-next-line @next/next/no-img-element */} ACM board - {/* eslint-disable-next-line @next/next/no-img-element */}

+ {/* eslint-disable-next-line @next/next/no-img-element */} ACM studio{' '} Christian Loanzon, Peter Sutarjo

- {/* eslint-disable-next-line @next/next/no-img-element */}

+ {/* eslint-disable-next-line @next/next/no-img-element */} ACM icpc{' '} Jacob Zhang

- {/* eslint-disable-next-line @next/next/no-img-element */}

+ {/* eslint-disable-next-line @next/next/no-img-element */} ACM design{' '} Crystal Huynh, Muthu Palaniappan

- {/* eslint-disable-next-line @next/next/no-img-element */}

+ {/* eslint-disable-next-line @next/next/no-img-element */} ACM cyber{' '} Josh Lee, Henry Chang

- {/* eslint-disable-next-line @next/next/no-img-element */}

+ {/* eslint-disable-next-line @next/next/no-img-element */} ACM teachLA{' '} Sophie Schoenmeyer, Chloe Uy

- {/* eslint-disable-next-line @next/next/no-img-element */}

+ {/* eslint-disable-next-line @next/next/no-img-element */} ACM w Cindy Zhang, Lena O'Grady

- {/* eslint-disable-next-line @next/next/no-img-element */}

+ {/* eslint-disable-next-line @next/next/no-img-element */} ACM ai{' '} Justin Yi

- {/* eslint-disable-next-line @next/next/no-img-element */}

+ {/* eslint-disable-next-line @next/next/no-img-element */} ACM hack{' '} Asha Kar, Eugene Lo

@@ -274,16 +274,16 @@ function W22() { events

- {/* eslint-disable-next-line @next/next/no-img-element */}

+ {/* eslint-disable-next-line @next/next/no-img-element */} ACM board   External: Tina Huang

- {/* eslint-disable-next-line @next/next/no-img-element */}

+ {/* eslint-disable-next-line @next/next/no-img-element */} ACM board

- {pastTownHall.alt_text}
diff --git a/scripts/gm-generator.mjs b/scripts/gm-generator.mjs index 04929c6c..733e9423 100644 --- a/scripts/gm-generator.mjs +++ b/scripts/gm-generator.mjs @@ -55,6 +55,23 @@ async function fetchGMData() { return formattedData; } +async function fetchPastGMData() { + const data = await getGoogleSheetData('PastGMs!A2:G'); + + // Format the rows into an array of objects + const formattedData = data.map((row) => ({ + title: row[0], + date: row[1], + description: row[2], + slides: row[3], + notes: row[4], + banner: row[5], + alt_text: row[6], + })); + + return formattedData; +} + // Write data from sheets to a json file async function writeToOutput(name, formattedData) { const output = JSON.stringify(formattedData); @@ -68,4 +85,5 @@ async function writeToOutput(name, formattedData) { // Outputs all necessary json files async function writeAllOutputs() { writeToOutput('gmData.json', await fetchGMData()); + writeToOutput('past-gm.json', await fetchPastGMData()); } diff --git a/styles/components/GM.scss b/styles/components/GM.scss index 509eabd4..1304c742 100644 --- a/styles/components/GM.scss +++ b/styles/components/GM.scss @@ -135,6 +135,7 @@ } .map-frame { + border-width: 0; height: 100%; width: 100%; }