mirror of
https://github.com/UofCBaja/BajaUofCWebsite.git
synced 2025-06-15 13:24:17 -06:00
167 lines
5.1 KiB
JavaScript
167 lines
5.1 KiB
JavaScript
import "./OurSponsors.css";
|
|
import { useEffect, useState } from "react";
|
|
import currentSponsorData from "../MockDB/sponsorship.yml";
|
|
import pastSponsorData from "../MockDB/pastSponsors.yml";
|
|
import yaml from "js-yaml";
|
|
import OpenPage from "../Header/OpenPage";
|
|
|
|
/**
|
|
* @param {null} null - requires onthing
|
|
* @returns {JSX.Element} JSX - HTML tags and JS functionality
|
|
* @description Our Sponsors Page
|
|
* @author Brock <darkicewolf50@gmail.com>
|
|
* @todo finish page layout
|
|
*/
|
|
const OurSponsors = () => {
|
|
const [currentSponsorsDict, setCurrentSponsorsDict] = useState(); //variable states for the dictionary of sponsors
|
|
const [pastSponsorsDict, setPastSponsorsDict] = useState();
|
|
|
|
useEffect(() => {
|
|
getCurrentSponsors();
|
|
getPastSponsors();
|
|
}, []);
|
|
|
|
/**
|
|
* @param {null} null - requires nothing (link)
|
|
* @returns {Object} sponsorsDict - gets a Dictionary of our sponsors from synology drive
|
|
* @description Gets the list of sponsors from the synology drive (not implemented), converts the json file into a dictionary
|
|
* @author Brock <darkicewolf50@gmail.com>
|
|
* @todo add gPRC to backend and front end add connect to synology drive
|
|
*/
|
|
const getCurrentSponsors = async () => {
|
|
try {
|
|
const res = await fetch(currentSponsorData);
|
|
const rawText = await res.text();
|
|
const yamlDict = yaml.load(rawText);
|
|
setCurrentSponsorsDict(yamlDict);
|
|
} catch (error) {
|
|
//error checking
|
|
console.log(error);
|
|
console.error("Error recieving data from server:");
|
|
}
|
|
};
|
|
/**
|
|
* @param {null} null - requires nothing (link)
|
|
* @returns {Object} sponsorsDict - gets a Dictionary of our sponsors from synology drive
|
|
* @description Gets the list of sponsors from the synology drive (not implemented), converts the json file into a dictionary
|
|
* @author Brock <darkicewolf50@gmail.com>
|
|
* @todo add gPRC to backend and front end add connect to synology drive
|
|
*/
|
|
const getPastSponsors = async () => {
|
|
try {
|
|
const res = await fetch(pastSponsorData);
|
|
const rawText = await res.text();
|
|
const yamlDict = yaml.load(rawText);
|
|
setPastSponsorsDict(yamlDict);
|
|
} catch (error) {
|
|
// error checking
|
|
console.error("Error recieving data from server:");
|
|
}
|
|
};
|
|
// needs to change into ? : statement and have content above it
|
|
if (!currentSponsorsDict && !pastSponsorsDict) {
|
|
//awaiting for a resposne from the backend
|
|
//add loading notification to user
|
|
return <p>Loading...</p>;
|
|
}
|
|
if (currentSponsorsDict && pastSponsorsDict) {
|
|
//maps out the dictionary and displays the content
|
|
return (
|
|
<div id="OurSponsors">
|
|
<div id="BecomeASponsors">
|
|
<OpenPage
|
|
pageToGoTo={"/BecomeASponsor"}
|
|
textOnButton={"Become a Sponsor"}
|
|
/>
|
|
</div>
|
|
<div id="Sponsor">
|
|
<h2 className="SponsorsTitle">Current Sponsors</h2>
|
|
{/* gets the outmost name of the Object Name of tier*/}
|
|
{Object.keys(currentSponsorsDict).map((sponsorsTier) => {
|
|
return (
|
|
<div className="Sponsors">
|
|
<h3>{sponsorsTier}</h3>
|
|
{/* gets key form list of tier */}
|
|
{Object.keys(currentSponsorsDict[sponsorsTier]).map(
|
|
(sponsorsKey) => {
|
|
return (
|
|
<div>
|
|
{/* gets name out of object and gets data of that sponsor preped */}
|
|
{Object.keys(
|
|
currentSponsorsDict[sponsorsTier][sponsorsKey]
|
|
).map((sponsorName) => {
|
|
let sponsorData =
|
|
currentSponsorsDict[sponsorsTier][sponsorsKey][
|
|
sponsorName
|
|
];
|
|
return (
|
|
<a
|
|
href={sponsorData.Url}
|
|
target="_blank"
|
|
rel="noreferrer">
|
|
<div>
|
|
<h4>{sponsorName}</h4>
|
|
<img
|
|
src={sponsorData.LogoUrl}
|
|
alt={sponsorName + "'s Logo"}
|
|
/>
|
|
</div>
|
|
{(sponsorsTier !== "Silver Tier" ||
|
|
sponsorsTier !== "Bronze Tier") && (
|
|
<div>
|
|
<p>{sponsorData.DescriptionAboutSponsor}</p>
|
|
</div>
|
|
)}
|
|
</a>
|
|
);
|
|
})}
|
|
</div>
|
|
);
|
|
}
|
|
)}
|
|
</div>
|
|
);
|
|
})}
|
|
</div>
|
|
<div id="Sponsor">
|
|
<h2
|
|
className="SponsorsTitle"
|
|
id="SponsorEnd">
|
|
Past Sponsors
|
|
</h2>
|
|
{/* gets keys o objects in list */}
|
|
{Object.keys(pastSponsorsDict).map((pastSponsorKey) => {
|
|
return (
|
|
<div className="Sponsors">
|
|
{/* gets name of sponsor then uses it to get data of past sponsor */}
|
|
{Object.keys(pastSponsorsDict[pastSponsorKey]).map(
|
|
(pastSponsorName) => {
|
|
let pastSponsors =
|
|
pastSponsorsDict[pastSponsorKey][pastSponsorName];
|
|
return (
|
|
<a
|
|
href={pastSponsors.Url}
|
|
target="_blank"
|
|
rel="noreferrer">
|
|
<div>
|
|
<h4>{pastSponsorName}</h4>
|
|
<img
|
|
src={pastSponsors.LogoUrl}
|
|
alt={pastSponsorName + "'s Logo"}
|
|
/>
|
|
</div>
|
|
</a>
|
|
);
|
|
}
|
|
)}
|
|
</div>
|
|
);
|
|
})}
|
|
</div>
|
|
</div>
|
|
);
|
|
}
|
|
};
|
|
|
|
export default OurSponsors;
|