Skip to content

Commit c2fa401

Browse files
authored
Merge pull request #81 from MichiganDataScienceTeam/summer24
Summer24
2 parents 6ea3b40 + 715df9d commit c2fa401

File tree

132 files changed

+743
-339
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

132 files changed

+743
-339
lines changed

components/communityImages.jsx

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import Image from 'next/image';
2+
3+
export default function CommunityImages({ images, basePath }) {
4+
return (
5+
<div className="flex flex-col sm:flex-row items-center mx-auto max-w-6xl">
6+
{images.map((image, index) => (
7+
<div key={index} className="w-full sm:w-1/2 mx-4 mb-6 flex flex-col justify-center items-center">
8+
<p className="text-base mt-2">{image.name}</p>
9+
<Image
10+
width={500}
11+
height={500}
12+
src={
13+
basePath
14+
? `${basePath}/images/community/${image.image}`
15+
: `/images/community/${image.image}`
16+
}
17+
alt={image.name}
18+
/>
19+
</div>
20+
))}
21+
</div>
22+
);
23+
}

components/currentProjectCard.jsx

Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
import Image from "next/image";
2+
3+
export default function CurrentProjectCard({ project, basePath }) {
4+
const projectImagePath = `${basePath ? basePath : ''}/images/projects/${project.image}`;
5+
const leadText = project.leads.length > 1 ? "Leads" : "Lead";
6+
7+
return (
8+
<div style={styles.card}>
9+
<div style={{ ...styles.column, ...styles.projectInfo }}>
10+
<Image
11+
style={styles.projectImage}
12+
width="300"
13+
height="300"
14+
src={projectImagePath}
15+
alt={project.label}
16+
/>
17+
<h3 style={styles.projectTitle}>{project.label}</h3>
18+
</div>
19+
<div style={{ ...styles.column, ...styles.leadsInfo }}>
20+
<h4 style={styles.leadText}>{leadText}:</h4>
21+
<div style={styles.leadsContainer}>
22+
{project.leads.map((lead, idx) => (
23+
<div key={idx} style={styles.lead}>
24+
<Image
25+
style={styles.leadImage}
26+
width="75"
27+
height="75"
28+
src={`${basePath ? basePath : ''}/images/team/${lead.image}`}
29+
alt={lead.name}
30+
/>
31+
<p style={styles.leadName}>{lead.name}</p>
32+
</div>
33+
))}
34+
</div>
35+
</div>
36+
</div>
37+
);
38+
}
39+
40+
const styles = {
41+
card: {
42+
display: 'flex',
43+
flexDirection: 'row',
44+
backgroundColor: '#333',
45+
padding: '16px',
46+
borderRadius: '8px',
47+
width: '100%',
48+
maxWidth: '600px',
49+
marginBottom: '32px',
50+
},
51+
column: {
52+
display: 'flex',
53+
flexDirection: 'column',
54+
alignItems: 'center',
55+
flex: 1,
56+
},
57+
projectInfo: {
58+
marginBottom: '16px',
59+
flex: 1,
60+
},
61+
projectImage: {
62+
borderRadius: '10%',
63+
objectFit: 'cover',
64+
width: '100%',
65+
height: 'auto',
66+
},
67+
projectTitle: {
68+
marginTop: '16px',
69+
fontSize: '24px',
70+
fontWeight: 'bold',
71+
textAlign: 'center',
72+
color: 'white',
73+
},
74+
leadsInfo: {
75+
display: 'flex',
76+
flexDirection: 'column',
77+
alignItems: 'center',
78+
flex: 1,
79+
},
80+
leadText: {
81+
fontSize: '20px',
82+
fontWeight: 'bold',
83+
color: 'white',
84+
},
85+
leadsContainer: {
86+
display: 'flex',
87+
flexDirection: 'column',
88+
alignItems: 'center',
89+
marginTop: '8px',
90+
gap: '16px',
91+
},
92+
lead: {
93+
display: 'flex',
94+
flexDirection: 'column',
95+
alignItems: 'center',
96+
},
97+
leadImage: {
98+
borderRadius: '50%',
99+
objectFit: 'cover',
100+
width: '75px',
101+
height: '75px',
102+
},
103+
leadName: {
104+
marginTop: '8px',
105+
textAlign: 'center',
106+
fontSize: '14px',
107+
fontWeight: '500',
108+
color: 'white',
109+
},
110+
};

components/icon.jsx

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@ import {
1212
IoBrowsersOutline,
1313
IoLogoSlack,
1414
IoCopyOutline,
15-
IoCalendarOutline
15+
IoCalendarOutline,
16+
IoDocumentTextOutline,
17+
IoDocumentOutline
1618
} from "react-icons/io5";
1719
import { createElement } from "react";
1820

@@ -31,13 +33,17 @@ const iconMap = {
3133
slack: IoLogoSlack,
3234
copy: IoCopyOutline,
3335
calendar: IoCalendarOutline,
34-
36+
"file-text": IoDocumentTextOutline,
37+
"file-pdf": IoDocumentOutline
3538
};
3639

37-
export default function Icon(props) {
38-
if (!(props.name in iconMap)) {
39-
console.error("Could not find name " + props.name);
40+
export default function Icon({ name, ...props }) {
41+
const IconComponent = iconMap[name];
42+
43+
if (!IconComponent) {
44+
console.error(`Could not find icon with name "${name}"`);
4045
return null;
4146
}
42-
return createElement(iconMap[props.name], props);
47+
48+
return createElement(IconComponent, props);
4349
}

components/projectCard.jsx

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import Link from "next/link";
2+
import Image from "next/image";
3+
import Icon from "@/components/icon";
4+
5+
export default function ProjectCard({ project, basePath }) {
6+
const imagePath = `${basePath}/images/projects/${project.label.toLowerCase().split(" ").join("_")}.jpg`;
7+
return (
8+
<div className="text-left sm:text-center rounded bg-grey py-2 sm:py-4 px-2 sm:px-8 w-full sm:w-60 flex sm:block gap-8">
9+
<Image
10+
className="sm:mx-auto sm:mb-4 sm:w-44 sm:h-44 w-24 h-24 my-auto rounded-full object-cover"
11+
width="176"
12+
height="176"
13+
src={imagePath}
14+
alt={project.label}
15+
/>
16+
<div className="">
17+
<h3 className="mb-1 text-2xl font-bold tracking-tight">{project.label}</h3>
18+
<ul className="flex sm:justify-center mt-2 sm:mt-4 space-x-4">
19+
{project.github && (
20+
<li>
21+
<Link href={project.github} className="hover:text-gray" aria-label="Github Repo">
22+
<Icon name="github" className="text-3xl" />
23+
</Link>
24+
</li>
25+
)}
26+
{project.googleSlides && (
27+
<li>
28+
<Link href={project.googleSlides} className="hover:text-gray" aria-label="Google Slides">
29+
<Icon name="file-pdf" className="text-3xl" />
30+
</Link>
31+
</li>
32+
)}
33+
</ul>
34+
</div>
35+
</div>
36+
);
37+
}

config/communityImages.json

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
[
2+
{
3+
"name": "WN24 Project Expo",
4+
"image": "WN24_EXPO.JPG"
5+
},
6+
{
7+
"name": "WN24 Data Science Night",
8+
"image": "WN24_DSN.JPG"
9+
}
10+
]
11+

config/currentProjects.json

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
[
2+
{
3+
"label": "Economic Forecasting",
4+
"image": "economic_forecasting.jpg",
5+
"leads": [
6+
{ "name": "Jordan Ives", "image": "temp.jpeg" },
7+
{ "name": "Amelia Weyhing", "image": "aweyhing.JPG" }
8+
]
9+
},
10+
{
11+
"label": "Research Grant Analysis",
12+
"image": "research_grant_analysis.jpg",
13+
"leads": [
14+
{ "name": "Erin Alcott", "image": "ealcott.jpg" },
15+
{ "name": "Linda Ru", "image": "clindaru.png" }
16+
]
17+
},
18+
{
19+
"label": "Car Brand Classification",
20+
"image": "car_brand_classification.jpg",
21+
"leads": [
22+
{ "name": "Aditi Kashi", "image": "adikashi.jpg" },
23+
{ "name": "Anish Kudupudi", "image": "temp.jpeg" }
24+
]
25+
},
26+
{
27+
"label": "SoccerNet",
28+
"image": "soccernet.jpg",
29+
"leads": [
30+
{ "name": "Antonio Capdevielle", "image": "temp.jpeg" },
31+
{ "name": "Shiva Chandran", "image": "shivac.jpg" }
32+
]
33+
},
34+
{
35+
"label": "LLM Augmentation",
36+
"image": "llm_augmentation.jpg",
37+
"leads": [
38+
{ "name": "Aditya Murali", "image": "temp.jpeg" },
39+
{ "name": "Jordan Jones", "image": "jordanrj.jpeg" }
40+
]
41+
},
42+
{
43+
"label": "Facial Recognition",
44+
"image": "facial_recognition.jpg",
45+
"leads": [
46+
{ "name": "Andrew Black", "image": "andbl.jpeg" },
47+
{ "name": "Judith Wu", "image": "temp.jpeg" }
48+
]
49+
},
50+
{
51+
"label": "RL Neuroevolution",
52+
"image": "reinforcement_learning.jpg",
53+
"leads": [
54+
{ "name": "Luke Yang", "image": "lukeyang.jpeg" },
55+
{ "name": "Nathan Kawamoto", "image": "temp.jpeg" }
56+
]
57+
},
58+
{
59+
"label": "Mining & Analyzing Tweets",
60+
"image": "twitter_sentiment_analysis.jpg",
61+
"leads": [
62+
{ "name": "Nidhil Nayudu", "image": "temp.jpeg" },
63+
{ "name": "Tiernan Jesrani", "image": "tiernanj.jpg" }
64+
]
65+
},
66+
{
67+
"label": "ViT From Scratch",
68+
"image": "vit_from_scratch.jpg",
69+
"leads": [
70+
{ "name": "Anthony Chen", "image": "anthoc.jpeg" },
71+
{ "name": "Matthew Drutis", "image": "madrutis.jpg" }
72+
]
73+
},
74+
{
75+
"label": "Mini Copilot",
76+
"image": "mini_copilot.jpg",
77+
"leads": [
78+
{ "name": "Amirali Danai", "image": "amiralid.png" },
79+
{ "name": "Nishant Dash", "image": "temp.jpeg" }
80+
]
81+
},
82+
{
83+
"label": "Poker Bot",
84+
"image": "poker_bot.jpg",
85+
"leads": [
86+
{ "name": "Jason Yen", "image": "temp.jpeg" },
87+
{ "name": "Onat Ozer", "image": "temp.jpeg" },
88+
{ "name": "Aditya Sinha", "image": "temp.jpeg" }
89+
]
90+
}
91+
]
92+

0 commit comments

Comments
 (0)