diff --git a/pages/aboutus/index.js b/pages/aboutus/index.js index b146c72..6bf48b1 100644 --- a/pages/aboutus/index.js +++ b/pages/aboutus/index.js @@ -1,9 +1,24 @@ import ResponsiveAppBar from "../../components/widgets/ResponsiveAppBar"; -import { createTheme, ThemeProvider, Container, Box } from "@mui/material"; +import { + createTheme, + ThemeProvider, + Container, + Box, + Button, + Dialog, + DialogTitle, + DialogContent, + DialogActions, + IconButton, +} from "@mui/material"; +import CloseIcon from "@mui/icons-material/Close"; import "bootstrap/dist/css/bootstrap.min.css"; import { Card } from "react-bootstrap"; import isulogo from "../../components/images/ISULogo.png"; import Image from "next/image"; +import { useState, useEffect } from "react"; + +const reduxBaseUrl = process.env.NEXT_PUBLIC_REDUX_BASE_URL; export default function AboutUsPage() { const theme = createTheme({ @@ -16,59 +31,73 @@ export default function AboutUsPage() { const cardBodyStyle = { padding: "20px" }; - const contributors = [ - "Kaden Marchetti", - "Caleb Eardley", - "Daniel Igbokwe", - "Alex Diviney", - "Janita Aamir", - "Andrija Sevaljevic", - "Garret Stouffer", - "Porter Glines", - "Show Pratoomratana", - "Russell Phillips", - "Michael Crapse", - "Ian Gonzalez", - "Sabal Subedi", - "Himanshu Jha", - "Sansar Kharal", - "Pratham Khanal", - "George Lake", - "Grant Gardner", - "Jason Wright", - "Alex Svancara", - "Eric Hill", - "Max Grünwoldt", - "Paul Gilbreath", - "Andreas Kramer", - "Courtney Bodily", - "Rakesh Itani" - ]; + const [contributors, setContributors] = useState([]); + const [githubMap, setGithubMap] = useState({}); + const [selectedContributor, setSelectedContributor] = useState(null); + const [profileData, setProfileData] = useState(null); + const [modalOpen, setModalOpen] = useState(false); + const [loading, setLoading] = useState(false); + + useEffect(() => { + fetch(`${reduxBaseUrl}Navigation/ContributorProfile/directory`) + .then((r) => r.json()) + .then((entries) => { + setContributors(entries.map((e) => e.name)); + const map = {}; + for (const entry of entries) { + if (entry.githubUsername) map[entry.name] = entry.githubUsername; + } + setGithubMap(map); + }) + .catch(() => {}); + }, []); + + const handleContributorClick = (name) => { + setLoading(true); + setSelectedContributor(name); + setProfileData(null); + setModalOpen(true); + + fetch(`${reduxBaseUrl}Navigation/ContributorProfile/${encodeURIComponent(name)}`) + .then((r) => (r.ok ? r.json() : null)) + .then((data) => { + setProfileData(data); + setLoading(false); + }) + .catch(() => setLoading(false)); + }; + + const handleCloseModal = () => { + setModalOpen(false); + setSelectedContributor(null); + setProfileData(null); + setLoading(false); + }; const publications = [ { title: - "R. Phillips and P. M. Bodily, “Spade: A library for programmatic parsing and verification of discrete data structures,” in 2025 Intermountain Engineering, Technology and Computing (IETC), pp. 1–5, IEEE, 2025.", + "R. Phillips and P. M. Bodily, Spade: A library for programmatic parsing and verification of discrete data structures, in 2025 Intermountain Engineering, Technology and Computing (IETC), pp. 1–5, IEEE, 2025.", link: "https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=11039449", }, { title: - "K. Marchetti, A. Sevaljevic, A. Diviney, R. Phillips, C. Eardley, R. Khadka, D. Igbokwe, and P. M. Bodily, “Redux: An interactive, dynamic knowledge base for teaching NP-completeness,” in Proceedings of the 29th annual ACM conference on Innovation and Technology in Computer Science Education (ITiCSE), 2024.", + "K. Marchetti, A. Sevaljevic, A. Diviney, R. Phillips, C. Eardley, R. Khadka, D. Igbokwe, and P. M. Bodily, Redux: An interactive, dynamic knowledge base for teaching NP-completeness, in Proceedings of the 29th annual ACM conference on Innovation and Technology in Computer Science Education (ITiCSE), 2024.", link: "https://etd.iri.isu.edu/ViewSpecimen.aspx?ID=2206", }, { title: - "A. Sevaljevic and P. M. Bodily, “Comparative empirical analysis of dancing links implementations to solve the exact cover problem,” in Proceedings of the 4th Intermountain Engineering, Technology, and Computing Conference (i-ETC), pp. 255–258, IEEE, 2024.", + "A. Sevaljevic and P. M. Bodily, Comparative empirical analysis of dancing links implementations to solve the exact cover problem, in Proceedings of the 4th Intermountain Engineering, Technology, and Computing Conference (i-ETC), pp. 255–258, IEEE, 2024.", link: "https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=10564396", }, { title: - 'K. Marchetti and P. Bodily, "Visualizing the 3SAT to CLIQUE Reduction Process," 2022 Intermountain Engineering, Technology and Computing (IETC), Orem, UT, USA, 2022, pp. 1-5, doi: 10.1109/IETC54973.2022.9796851.', + "K. Marchetti and P. Bodily, Visualizing the 3SAT to CLIQUE Reduction Process, 2022 Intermountain Engineering, Technology and Computing (IETC), Orem, UT, USA, 2022, pp. 1-5, doi: 10.1109/IETC54973.2022.9796851.", link: "https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9796851", }, { title: - 'K. Marchetti and P. Bodily, "KAMI: Leveraging the power of crowd-sourcing to solve complex, real-world problems," 2022 Intermountain Engineering, Technology and Computing (IETC), Orem, UT, USA, 2022, pp. 1-4, doi: 10.1109/IETC54973.2022.9796945.', + "K. Marchetti and P. Bodily, KAMI: Leveraging the power of crowd-sourcing to solve complex, real-world problems, 2022 Intermountain Engineering, Technology and Computing (IETC), Orem, UT, USA, 2022, pp. 1-4, doi: 10.1109/IETC54973.2022.9796945.", link: "https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9796945", }, ]; @@ -79,47 +108,30 @@ export default function AboutUsPage() {
- {/* ABOUT US Card */} + {/* ABOUT US */} - - About Us - + About Us {"Welcome to Redux, a platform for NP-Complete problems. Input your challenges and gain access to reductions, solutions, verifiers, and visualizations. Join our community of problem solvers and unravel computational complexities using the application's library. The project was greatly inspired by Richard Karp's paper "} - - "Reducibility Among Combinatorial Problems" + + Reducibility Among Combinatorial Problems {" "} - {"(Karp, 1972)."} + (Karp, 1972).
- {/* PUBLICATIONS Card */} + {/* PUBLICATIONS */} - - Publications - + Publications -

- Below are research publications associated with the Redux project - and its contributors: -

+

Below are research publications associated with the Redux project and its contributors:

@@ -128,71 +140,146 @@ export default function AboutUsPage() {
- {/* CONTRIBUTORS Card */} + {/* CONTRIBUTORS */} - - Contributors - + Contributors

This project was started by Dr.{" "} - + Paul Bodily , who is also the ISU Faculty Sponsor of the project.

-

- The students who contributed to the creation of the application - are: -

+

The students who contributed to the creation of the application are:

- {/* Column-ordered 3-column layout */} -
+
{contributors.map((name, index) => ( -
• {name}
+
+ •{" "} + handleContributorClick(name)} + onMouseEnter={(e) => (e.target.style.color = "#ff9a40")} + onMouseLeave={(e) => (e.target.style.color = "#f47920")} + style={{ color: "#f47920", textDecoration: "underline", cursor: "pointer", fontWeight: "500" }} + > + {name} + +
))}
- {/* LEARN MORE Card */} - - Learn More - - {`Additional documentation can be found at the following links:`} - - - - +
+ + {/* LEARN MORE */} + + Learn More + + Additional documentation can be found at the following links: + + + + + {/* ISU Logo */} - + ISU Logo + + {/* Contributor Profile Modal */} + + + {githubMap[selectedContributor] && ( + {selectedContributor} + )} + {selectedContributor && `${selectedContributor}'s Profile`} + t.palette.grey[500] }} + > + + + + + + {loading ? ( +

Loading...

+ ) : profileData ? ( +
+
Personal Information
+

Email: {profileData.email || "Not specified"}

+

Education: {profileData.education || "Not specified"}

+

Major: {profileData.major || "Not specified"}

+

Bio: {profileData.bio || "Not specified"}

+ + {githubMap[selectedContributor] && ( +

+ GitHub: + + {`github.com/${githubMap[selectedContributor]}`} + +

+ )} + +
Contributions
+

Total Contributions: {profileData.totalContributions || 0}

+ + {profileData.problemsContributed?.length > 0 && ( +
+ Problems: {profileData.problemsContributed.length} +
    + {profileData.problemsContributed.map((p, i) =>
  • {p}
  • )} +
+
+ )} + + {profileData.solversCreated?.length > 0 && ( +
+ Solvers: {profileData.solversCreated.length} +
    + {profileData.solversCreated.map((s, i) =>
  • {s}
  • )} +
+
+ )} + + {profileData.reductionsCreated?.length > 0 && ( +
+ Reductions: {profileData.reductionsCreated.length} +
    + {profileData.reductionsCreated.map((r, i) =>
  • {r}
  • )} +
+
+ )} +
+ ) : ( +

No data found

+ )} +
+ + + + +
); }