diff --git a/.gitignore b/.gitignore index 3039d1e97e..56b7ba9d59 100644 --- a/.gitignore +++ b/.gitignore @@ -23,5 +23,6 @@ static/sw.js content/ecosystem content/events content/advocates +content/fall-fest docker-compose.yml diff --git a/components/EventsFallFest/EventsFallFestUniversityDirectory.vue b/components/EventsFallFest/EventsFallFestUniversityDirectory.vue index 5de4436704..8edd5797cd 100644 --- a/components/EventsFallFest/EventsFallFestUniversityDirectory.vue +++ b/components/EventsFallFest/EventsFallFestUniversityDirectory.vue @@ -14,14 +14,14 @@
(), {}); const config = useRuntimeConfig(); -const sortedEvents = sortEvents(universities); +const sortedEvents = sortEvents(props.directoryData); useSchemaOrg([ defineItemList({ diff --git a/constants/fallFest2022Content.ts b/constants/fallFest2022Content.ts index a16faaaf80..33a45416e0 100644 --- a/constants/fallFest2022Content.ts +++ b/constants/fallFest2022Content.ts @@ -400,4 +400,374 @@ const helpfulResources: HelpfulResourcesSection = { ], }; -export { header, agenda, helpfulResources }; +const fallFest2022UniversityDirectory = [ + { + title: "Qiskit Fall Fest Algiers", + image: "/images/events/fall-fest/algiers.png", + startDate: "October 21, 2022", + detail: "In Person", + cta: { + label: "Learn more here", + url: "https://qiskit-fall-fest-algiers.wtmalgiers.org/", + segment: { + cta: "the-higher-national-school-of-computer-science", + location: "fall-fest-page", + }, + }, + }, + { + title: "RV PU College", + image: "/images/events/fall-fest/bengalaru.png", + startDate: "November 6, 2022", + detail: "In Person", + cta: { + label: "Learn more here", + url: "https://github.com/Bellstate05/QiskitFallFest_RVPU", + segment: { cta: "rv-pu-college", location: "fall-fest-page" }, + }, + }, + { + title: "University of Victoria", + image: "/images/events/fall-fest/british_columbia.png", + startDate: "November 26, 2022", + detail: "Hybrid", + cta: { + label: "Learn more here", + url: "", + segment: { cta: "university-of-victoria", location: "fall-fest-page" }, + }, + }, + { + title: "AUC (American University in Cairo)", + image: "/images/events/fall-fest/cairo.png", + startDate: "October 28, 2022", + detail: "In Person", + cta: { + label: "Learn more here", + url: "https://github.com/hamzakamel1/Qiskit-FallFest-AUC-Egypt-2022", + segment: { + cta: "american-university-in-cairo", + location: "fall-fest-page", + }, + }, + }, + { + title: "UCLA", + image: "/images/events/fall-fest/california.png", + startDate: "October 31, 2022", + detail: "Online", + cta: { + label: "Learn more here", + url: "https://github.com/amandajyounes/UCLA_fallfest_2022", + segment: { + cta: "university-california-los-angeles", + location: "fall-fest-page", + }, + }, + }, + { + title: "Universidad Simón Bolívar", + image: "/images/events/fall-fest/caracas.png", + startDate: "October 21, 2022", + detail: "Online", + cta: { + label: "Learn more here", + url: "https://www.cofalumniusb.org/qiskit-fall", + segment: { cta: "universidad-simón-bolívar", location: "fall-fest-page" }, + }, + }, + { + title: "Coimbatore Institute of Technology, India", + image: "/images/events/fall-fest/coimbatore.png", + startDate: "October 6, 2022", + detail: "Online", + cta: { + label: "Learn more here", + url: "https://github.com/CIT-QUANTUM-HACKATHON/CIT-QUANTUM-HACKATHON-2022", + segment: { + cta: "coimbatore-institute-of-Technology-india", + location: "fall-fest-page", + }, + }, + }, + { + title: "Quantum Fall Fest QColombia", + image: "/images/events/fall-fest/colombia.png", + startDate: "October 10, 2022", + detail: "Online", + cta: { + label: "Learn more here", + url: "https://github.com/QColombia/Quantum-Fall-Fest-2022", + segment: { + cta: "quantum-fall-fest-qcolombia", + location: "fall-fest-page", + }, + }, + }, + { + title: "Yale University", + image: "/images/events/fall-fest/connecticut.png", + startDate: "October 3, 2022", + detail: "In Person", + cta: { + label: "Learn more here", + url: "https://yaleqc.com/categories/events/", + segment: { cta: "yale-university", location: "fall-fest-page" }, + }, + }, + { + title: "QickStart : A Qiskit Powered Intro to Quantum Computing", + image: "/images/events/fall-fest/delhi.png", + startDate: "October 3, 2022", + detail: "In Person", + cta: { + label: "Learn more here", + url: "https://github.com/TheGupta2012/NSUT-Qiskit-Fall-Fest", + segment: { + cta: "qickstart-a-qiskit-powered-intro-to-quantum-computing", + location: "fall-fest-page", + }, + }, + }, + { + title: "The University of Hong Kong", + image: "/images/events/fall-fest/hong_kong.png", + startDate: "October 25, 2022", + detail: "In Person", + cta: { + label: "Learn more here", + url: "", + segment: { + cta: "the-university-of-hong-kong", + location: "fall-fest-page", + }, + }, + }, + { + title: "Purdue University", + image: "/images/events/fall-fest/indiana.png", + startDate: "October 3, 2022", + detail: "In Person", + cta: { + label: "Learn more here", + url: "https://github.com/purduequaic/qiskit-fall-fest-22", + segment: { cta: "purdue-university", location: "fall-fest-page" }, + }, + }, + { + title: "Qiskit Fall Fest Kolkata Chapter", + image: "/images/events/fall-fest/kolkata.png", + startDate: "October 17, 2022", + detail: "Online", + cta: { + label: "Learn more here", + url: "https://ritajitmajumdar.github.io/", + segment: { + cta: "qiskit-fall-fest-kolkata-chapter", + location: "fall-fest-page", + }, + }, + }, + { + title: "Qiskit Fall Fest Mexico-IPN", + image: "/images/events/fall-fest/mexico_city.png", + startDate: "October 17, 2022", + detail: "Online", + cta: { + label: "Learn more here", + url: "https://proyectosrym.cic.ipn.mx/qcoloquio/", + segment: { + cta: "qiskit-fall-fest-mexico-ipn", + location: "fall-fest-page", + }, + }, + }, + { + title: "University of Maryland", + image: "/images/events/fall-fest/maryland.png", + startDate: "October 28, 2022", + detail: "In Person", + cta: { + label: "Learn more here", + url: "https://umduqa.github.io/FallFest.html", + segment: { cta: "university-of-maryland", location: "fall-fest-page" }, + }, + }, + { + title: "Case Western Reserve University", + image: "/images/events/fall-fest/ohio.png", + startDate: "October 10, 2022", + detail: "In Person", + cta: { + label: "Learn more here", + url: "https://github.com/Case-Quantum-Computing-Club/CQC-qiskit-fall-fest-22", + segment: { + cta: "case-western-reserve-university", + location: "fall-fest-page", + }, + }, + }, + { + title: "University of Chicago", + image: "/images/events/fall-fest/illinois.png", + startDate: "October 10, 2022", + detail: "In Person", + cta: { + label: "Learn more here", + url: "https://www.facebook.com/groups/ucquantum", + segment: { cta: "university-of-chicago", location: "fall-fest-page" }, + }, + }, + { + title: "Fundamentals of Quantum Computing (Thapar University)", + image: "/images/events/fall-fest/patiala.png", + startDate: "October 15, 2022", + detail: "Hybrid", + cta: { + label: "Learn more here", + url: "https://github.com/developer-student-club-thapar/Qiskit-Fall-Fest-2022", + segment: { cta: "thapar-university", location: "fall-fest-page" }, + }, + }, + { + title: "Penn State", + image: "/images/events/fall-fest/pennsylvania.png", + startDate: "November 5, 2022", + detail: "In Person", + cta: { + label: "Learn more here", + url: "", + segment: { cta: "penn-state", location: "fall-fest-page" }, + }, + }, + { + title: "Quest - Qiskit Fall Fest, BITS Goa Chapter", + image: "/images/events/fall-fest/goa.png", + startDate: "November 25, 2022", + detail: "In Person", + cta: { + label: "Learn more here", + url: "https://github.com/qBITS-github/Quest-Qiskit-Fall-Fest", + segment: { + cta: "quest-qiskit-fall-fest-bits-goa-chapter", + location: "fall-fest-page", + }, + }, + }, + { + title: "Qiskit Fall Fest Morocco", + image: "/images/events/fall-fest/morocco.png", + startDate: "October 27, 2022", + detail: "In Person", + cta: { + label: "Learn more here", + url: "https://sites.google.com/view/qiskit-fall-fest-morocco/home", + segment: { cta: "qiskit-fall-fest-morocco", location: "fall-fest-page" }, + }, + }, + { + title: "Indian Institute of Technology Roorkee", + image: "/images/events/fall-fest/roorkee.png", + startDate: "October 28, 2022", + detail: "In Person", + cta: { + label: "Learn more here", + url: "https://github.com/qcgiitr/iitr-fall-fest-22", + segment: { + cta: "indian-institute-of-technology-roorkee", + location: "fall-fest-page", + }, + }, + }, + { + title: "Escuela de Computación Cuántica", + image: "/images/events/fall-fest/lima.png", + startDate: "October 17, 2022", + detail: "Online", + cta: { + label: "Learn more here", + url: "https://pythonclubforphysicists.notion.site/pythonclubforphysicists/Primera-Escuela-de-Computaci-n-Cu-ntica-af219f239f90418b900cba004e27c789", + segment: { + cta: "escuela-de-computación-cuántica", + location: "fall-fest-page", + }, + }, + }, + { + title: "Princeton University", + image: "/images/events/fall-fest/new_jersey.png", + startDate: "October 28, 2022", + detail: "In Person", + cta: { + label: "Learn more here", + url: "", + segment: { cta: "princeton-university", location: "fall-fest-page" }, + }, + }, + { + title: "University of Santiago de Compostela, Spain", + image: "/images/events/fall-fest/santiago.png", + startDate: "October 21, 2022", + detail: "In Person", + cta: { + label: "Learn more here", + url: "https://github.com/wyqian1027/Qiskit-Fall-Fest-USC-2022", + segment: { + cta: "university-of-santiago-de-compostela-spain", + location: "fall-fest-page", + }, + }, + }, + { + title: "University of Texas at Austin", + image: "/images/events/fall-fest/texas.png", + startDate: "October 10, 2022", + detail: "In Person", + cta: { + label: "Learn more here", + url: "https://github.com/UT-Austin-Quantum-Collective/Qiskit-Fall-Fest-2022/blob/main/README.md", + segment: { + cta: "university-of-texas-at-austin", + location: "fall-fest-page", + }, + }, + }, + { + title: "Izmir Institute of Technology", + image: "/images/events/fall-fest/urla.png", + startDate: "October 28, 2022", + detail: "In Person", + cta: { + label: "Learn more here", + url: "https://qisk.it/fallfesthype", + segment: { + cta: "izmir-institute-of-technology", + location: "fall-fest-page", + }, + }, + }, + { + title: "Start Innovation hub", + image: "/images/events/fall-fest/uyo.png", + startDate: "October 15, 2022", + detail: "In Person", + cta: { + label: "Learn more here", + url: "https://twitter.com/Q_affinity", + segment: { cta: "start-innovation-hub", location: "fall-fest-page" }, + }, + }, + { + title: "Quantum Fall Fest TU Wien", + image: "/images/events/fall-fest/vienna.png", + startDate: "November 19, 2022", + detail: "In Person", + cta: { + label: "Learn more here", + url: "", + segment: { cta: "quantum-fall-fest-tu-wien", location: "fall-fest-page" }, + }, + }, +]; + +export { header, agenda, helpfulResources, fallFest2022UniversityDirectory }; diff --git a/content/fall-fest-events/fall-fest-extension-events.json b/content/fall-fest-events/fall-fest-extension-events.json new file mode 100644 index 0000000000..dfb4aff3ad --- /dev/null +++ b/content/fall-fest-events/fall-fest-extension-events.json @@ -0,0 +1,74 @@ +[ + { + "institution": "Government Engineering College, Ajmer", + "country": "India" + }, + { + "institution": "Mansoura University", + "country": "Egypt" + }, + { + "institution": "Universidad San Carlos of Guatemala", + "country": "Guatemala" + }, + { + "institution": "P.G.D.A.V. College, Delhi University ", + "country": "India" + }, + { + "institution": "Aristotle University of Thessaloniki", + "country": "Germany" + }, + { + "institution": "University of California, Irvine ", + "country": "Greece" + }, + { + "institution": "Lancaster University Leipzig", + "country": "Taiwan" + }, + { + "institution": "National Taiwan University", + "country": "United States" + }, + { + "institution": "University of California, Irvine ", + "country": "United States" + }, + { + "institution": "Birla Institute of Technology and Science Pilani, K.K. Birla Goa Campus", + "country": "India" + }, + { + "institution": "Bennett University", + "country": "India" + }, + { + "institution": "Vanderbilt University", + "country": "United States" + }, + { + "institution": "University of Education, Winneba ", + "country": "Ghana" + }, + { + "institution": "Utah Valley University", + "country": "United States" + }, + { + "institution": "University of North Carolina at Chapel Hill", + "country": "United States" + }, + { + "institution": "Indian Institute of Technology,Patna", + "country": "India" + }, + { + "institution": "University of Minnesota", + "country": "United States" + }, + { + "institution": "Rice University", + "country": "United States" + } +] \ No newline at end of file diff --git a/content/fall-fest-events/fall-fest-partner-events.json b/content/fall-fest-events/fall-fest-partner-events.json new file mode 100644 index 0000000000..ea7b33dc7a --- /dev/null +++ b/content/fall-fest-events/fall-fest-partner-events.json @@ -0,0 +1,85 @@ +[ + { + "title": "Case Western", + "startDate": "November 7, 2023", + "detail": "In person", + "cta": { + "label": "Learn more here", + "segment": { + "cta": "case-western", + "location": "fall-fest-page" + } + }, + "image": "/images/events/downloaded/rec0nqAK6TrwnzZXk.jpg" + }, + { + "title": "RV PU College", + "startDate": "October 16, 2023", + "detail": "In person", + "cta": { + "label": "Learn more here", + "url": "https://www.quetzal.co.in/programs/workshops", + "segment": { + "cta": "rv-pu-college", + "location": "fall-fest-page" + } + }, + "image": "/images/events/downloaded/recnkaBsHuNOoJuuV.jpg" + }, + { + "title": "University of Santiago de Compostela", + "startDate": "October 18, 2023", + "detail": "In person", + "cta": { + "label": "Learn more here", + "url": "https://indico.cern.ch/event/1323985/", + "segment": { + "cta": "university-of-santiago-de-compostela", + "location": "fall-fest-page" + } + }, + "image": "/images/events/downloaded/reckcTfN3bk43XCkX.jpg" + }, + { + "title": "Defence Institute of Advanced Technology,Pune", + "startDate": "October 12, 2023", + "detail": "Hybrid", + "cta": { + "label": "Learn more here", + "url": "https://github.com/yuvrajsingh05121999/QSoD-Qiskit_Fall_Fest_2023.git", + "segment": { + "cta": "defence-institute-of-advanced-technologypune", + "location": "fall-fest-page" + } + }, + "image": "/images/events/downloaded/receCChugw2XoLnAU.jpg" + }, + { + "title": "TU Vienna", + "startDate": "October 21, 2023", + "detail": "In person", + "cta": { + "label": "Learn more here", + "url": "https://www.eventbrite.com/myevent?eid=712218262997", + "segment": { + "cta": "tu-vienna", + "location": "fall-fest-page" + } + }, + "image": "/images/events/downloaded/recmHE0qC1rxN2MiB.jpg" + }, + { + "title": "University of Houston ", + "startDate": "November 17, 2023", + "detail": "In person", + "cta": { + "label": "Learn more here", + "url": "https://github.com/SamD-1998/Quantum-Computing-Fest-2023", + "segment": { + "cta": "university-of-houston-", + "location": "fall-fest-page" + } + }, + "image": "/images/events/downloaded/recu4YP7eBA3IDUqB.jpg" + } +] \ No newline at end of file diff --git a/hooks/fall-fest-extension-event-conversion.utils.ts b/hooks/fall-fest-extension-event-conversion.utils.ts new file mode 100644 index 0000000000..3283f1eb61 --- /dev/null +++ b/hooks/fall-fest-extension-event-conversion.utils.ts @@ -0,0 +1,77 @@ +import Airtable from "airtable"; +import { AirtableRecords } from "./airtable-conversion-utils"; +import { FallFestExtensionEvent } from "types/fall-fest"; + +export const RECORD_FIELDS_IDS = Object.freeze({ + institution: "flddG950A6KMmF19G", + country: "fldkH49PJK7ZgkU4R", +} as const); + +const AIRTABLE_BASE_ID = "applCQ71D4Jkgn2Xy"; +class FallFestExtensionEventAirtableRecords extends AirtableRecords { + constructor( + apiKey: string, + view: string, + recordFields?: Record + ) { + super( + apiKey, + AIRTABLE_BASE_ID, + "Extension Website", + view, + undefined, + recordFields + ); + this.airtableBase = new Airtable({ apiKey: this.apiKey }).base( + AIRTABLE_BASE_ID + ); + } + + /** + * Fetch the Extension events from Airtable, convert them to the + * FallFestExtensionEvent type, and return them + * @returns The Fall Fest extension events. + */ + async fetchExtensionEvents(): Promise { + if (!this.recordFields) { + this.recordFields = await this.getAllFieldNames(RECORD_FIELDS_IDS); + } + + const extensionEvents: FallFestExtensionEvent[] = []; + const base = this.airtableBase; + + await base("Extension Website") + .select({ + fields: Object.values(this.recordFields), + view: "Website View", + // sort: [{ field: this.recordFields.name, direction: "asc" }], + }) + .eachPage(async (records, nextPage) => { + for (const record of records) { + this.id = record.id; + const extensionEvent = this.convertToExtensionEvent(record); + extensionEvents.push(await extensionEvent); + } + nextPage(); + }); + return Promise.resolve(extensionEvents); + } + + /** + * Convert an Airtable record to a FallFestExtensionEvent. + * @param record The Airtable record to convert. + * @returns The converted FallFestExtensionEvent. + */ + // eslint-disable-next-line require-await + async convertToExtensionEvent( + record: Record + ): Promise { + const event = { + institution: (record.get(this.recordFields!.institution) as string) || "", + country: (record.get(this.recordFields!.country) as string) || "", + }; + return event; + } +} + +export default FallFestExtensionEventAirtableRecords; diff --git a/hooks/fall-fest-partner-event-conversion.utils.ts b/hooks/fall-fest-partner-event-conversion.utils.ts new file mode 100644 index 0000000000..bbb0a80e99 --- /dev/null +++ b/hooks/fall-fest-partner-event-conversion.utils.ts @@ -0,0 +1,142 @@ +import Airtable from "airtable"; +import { + AirtableRecords, + getImageUrl, + findImageAttachment, +} from "./airtable-conversion-utils"; +import { FallFestPartnerEvent } from "types/fall-fest"; + +export const RECORD_FIELDS_IDS = Object.freeze({ + title: "fld7dWQ6pkQHYg2kj", + startDate: "fldf9c8jHEJ7GGbUA", + detail: "fld5T3Gd8Ti576bry", + cta: "fldscZgANb59Ued8M", + image: "fld1tyBDGz4o67y1a", +} as const); + +const AIRTABLE_BASE_ID = "applCQ71D4Jkgn2Xy"; +class FallFestPartnerEventAirtableRecords extends AirtableRecords { + constructor( + apiKey: string, + view: string, + recordFields?: Record + ) { + super( + apiKey, + AIRTABLE_BASE_ID, + "Partner Website", + view, + undefined, + recordFields + ); + this.airtableBase = new Airtable({ apiKey: this.apiKey }).base( + AIRTABLE_BASE_ID + ); + } + + /** + * Fetch the Partner events from Airtable, convert them to the + * FallFestPartnerEvent type, and return them + * @returns The Fall Fest partner events. + */ + async fetchPartnerEvents(): Promise { + if (!this.recordFields) { + this.recordFields = await this.getAllFieldNames(RECORD_FIELDS_IDS); + } + + const partnerEvents: FallFestPartnerEvent[] = []; + const base = this.airtableBase; + + await base("Partner Website") + .select({ + fields: Object.values(this.recordFields), + view: "Website view", + // sort: [{ field: this.recordFields.name, direction: "asc" }], + }) + .eachPage(async (records, nextPage) => { + for (const record of records) { + this.id = record.id; + const partnerEvent = this.convertToPartnerEvent(record); + partnerEvents.push(await partnerEvent); + } + nextPage(); + }); + return Promise.resolve(partnerEvents); + } + + /** + * Convert an Airtable record to a FallFestPartnerEvent. + * @param record The Airtable record to convert. + * @returns The converted FallFestPartnerEvent. + */ + // eslint-disable-next-line require-await + async convertToPartnerEvent( + record: Record + ): Promise { + const event = { + title: this.getTitle(record), + startDate: this.getStart(record) || "", + detail: this.getDetail(record), + cta: this.getCTA(record), + image: await this.getImage(record), + }; + return event; + } + + formatDate(isoDateString: string | number | Date) { + const options: Intl.DateTimeFormatOptions = { + year: "numeric", + month: "long", + day: "numeric", + }; + const date = new Date(isoDateString); + return date.toLocaleDateString("en-US", options); + } + + public getTitle(record: any): string { + return record.get(this.recordFields!.title); + } + + public getStart(record: any): string { + return this.formatDate(record.get(this.recordFields!.startDate)); + } + + public getDetail(record: any): string { + return record.get(this.recordFields!.detail); + } + + convertEventTitleToSlug(title: string) { + return title + .toLowerCase() + .replace(/\s+/g, "-") + .replace(/[^\w-]+/g, ""); + } + + public getCTA(record: any): any { + const title = record.get(this.recordFields?.title); + const link = record.get(this.recordFields?.cta); + return { + label: "Learn more here", + url: link, + segment: { + cta: this.convertEventTitleToSlug(title), + location: "fall-fest-page", + }, + }; + } + + public async getImage(record: any) { + const attachments = record.get(this.recordFields!.image); + const imageAttachment = attachments && findImageAttachment(attachments); + const imageUrl = imageAttachment && getImageUrl(imageAttachment); + + const imagePublicPath = `/images/events/downloaded/${this.id}.jpg`; + + return await this.storeImage(imageUrl, `public/${imagePublicPath}`) + .then(() => imagePublicPath) + // eslint-disable-next-line no-console + .catch(() => console.log("The event image is missing")); + } +} + +export default FallFestPartnerEventAirtableRecords; diff --git a/hooks/update-fall-fest-events.ts b/hooks/update-fall-fest-events.ts new file mode 100644 index 0000000000..4ba863cdd6 --- /dev/null +++ b/hooks/update-fall-fest-events.ts @@ -0,0 +1,34 @@ +import FallFestExtensionEventAirtableRecords from "./fall-fest-extension-event-conversion.utils"; +import FallFestPartnerEventAirtableRecords from "./fall-fest-partner-event-conversion.utils"; +import { writeJSONToFile } from "./utils/conversion-utils"; + +export default async function (apiKey: string, outputFolder: string) { + const extensionEventsAirtableRecords = + new FallFestExtensionEventAirtableRecords(apiKey, "Website View"); + const fallFestExtensionEvents = + await extensionEventsAirtableRecords.fetchExtensionEvents(); + + const partnerEventsAirtableRecords = new FallFestPartnerEventAirtableRecords( + apiKey, + "Website view" + ); + const fallFestPartnerEvents = + await partnerEventsAirtableRecords.fetchPartnerEvents(); + + const fallFestEventsOutputAndFilename = [ + { + events: fallFestExtensionEvents, + outputFilename: "fall-fest-extension-events.json", + }, + { + events: fallFestPartnerEvents, + outputFilename: "fall-fest-partner-events.json", + }, + ]; + + await Promise.all( + fallFestEventsOutputAndFilename.map((curr) => + writeJSONToFile(outputFolder, curr.outputFilename, curr.events) + ) + ); +} diff --git a/nuxt.config.ts b/nuxt.config.ts index a0d11bcd1f..1a5a69b9a2 100644 --- a/nuxt.config.ts +++ b/nuxt.config.ts @@ -2,6 +2,7 @@ import { defineNuxtConfig } from "nuxt/config"; import fetchEvents from "./hooks/update-events"; import fetchAdvocates from "./hooks/update-advocates"; import fetchEcosystemMembers from "./hooks/update-ecosystem"; +import fetchFallFestEvents from "./hooks/update-fall-fest-events"; import { generateMocks } from "./hooks/mock/mock-service"; const { AIRTABLE_API_KEY, GENERATE_CONTENT, NODE_ENV, SITE_URL, MOCK_CONTENT } = @@ -97,6 +98,10 @@ async function generateContent() { console.info("Generating the events content..."); await fetchEvents(AIRTABLE_API_KEY, "./content/events"); + // eslint-disable-next-line no-console + console.info("Generating the fall fest events content..."); + await fetchFallFestEvents(AIRTABLE_API_KEY, "./content/fall-fest-events"); + // eslint-disable-next-line no-console console.info("Generating the advocates content..."); await fetchAdvocates(AIRTABLE_API_KEY, "./content/advocates"); diff --git a/pages/events/fall-fest-2022.vue b/pages/events/fall-fest-2022.vue index 1cca1489d0..419d250fe6 100644 --- a/pages/events/fall-fest-2022.vue +++ b/pages/events/fall-fest-2022.vue @@ -30,7 +30,9 @@
- +
@@ -97,6 +99,7 @@ import { header, agenda, helpfulResources, + fallFest2022UniversityDirectory, } from "~/constants/fallFest2022Content"; definePageMeta({ diff --git a/pages/events/fall-fest.vue b/pages/events/fall-fest.vue index ef5cab8549..f83ffdefc1 100644 --- a/pages/events/fall-fest.vue +++ b/pages/events/fall-fest.vue @@ -28,6 +28,24 @@
+
+ +
+ +
+ + + +
import { header, helpfulResources } from "~/constants/fallFest2023Content"; +import partnerEvents from "~/content/fall-fest-events/fall-fest-partner-events.json"; +import extensionEvents from "~/content/fall-fest-events/fall-fest-extension-events.json"; + +interface eventDetails { + institution: string; + country: string; +} definePageMeta({ pageTitle: header.titleLine1, @@ -68,6 +93,29 @@ useSeoMeta({ twitterDescription: description, }); +const dataTable = { + headers: ["University", "Country"], +}; + +const scheduleToTableData = (slot: eventDetails) => [ + { + styles: + "max-width: 20rem; display: inline-block; padding-top: 8px; padding-bottom: 8px; font-weight: bold", + data: slot.institution, + }, + { + styles: "min-width: 9rem; display: inline-block;", + data: slot.country, + }, +]; + +const agenda = { + title: "Qiskit Fall Fest Extension Events", + subtitle: "*Schedule subject to change", + headers: ["University", "Country"], + tableData: extensionEvents.map(scheduleToTableData), +}; + const headerData = header; const helpfulResourcesData = helpfulResources; diff --git a/public/images/events/fall-fest/fall-fest-logo-2023.png b/public/images/events/fall-fest/fall-fest-logo-2023.png index eb41c1542b..d81cbe3828 100644 Binary files a/public/images/events/fall-fest/fall-fest-logo-2023.png and b/public/images/events/fall-fest/fall-fest-logo-2023.png differ diff --git a/types/fall-fest.ts b/types/fall-fest.ts new file mode 100644 index 0000000000..44ac65f90e --- /dev/null +++ b/types/fall-fest.ts @@ -0,0 +1,14 @@ +interface FallFestExtensionEvent { + institution: string; + country: string; +} + +interface FallFestPartnerEvent { + title: string; + startDate: string; + detail: string; + cta: string; + image: string; +} + +export { FallFestExtensionEvent, FallFestPartnerEvent };