From 9b9e119adcac9b5b9c0f70ebbc1e190689adfef5 Mon Sep 17 00:00:00 2001
From: Charles Tang
Date: Sat, 13 Jan 2024 12:23:55 -0500
Subject: [PATCH 1/8] cards!
---
package-lock.json | 8 +--
src/DataParse/ClassCard.css | 3 +
src/DataParse/ClassCard.js | 79 +++++++++++++++++++++++++
src/DataParse/DataParse.js | 95 ++++++------------------------
src/DataParse/ProfessorRating.json | 22 +++++++
5 files changed, 126 insertions(+), 81 deletions(-)
create mode 100644 src/DataParse/ClassCard.css
create mode 100644 src/DataParse/ClassCard.js
create mode 100644 src/DataParse/ProfessorRating.json
diff --git a/package-lock.json b/package-lock.json
index 4092794..5108097 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -17602,16 +17602,16 @@
}
},
"node_modules/typescript": {
- "version": "5.3.3",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz",
- "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==",
+ "version": "4.9.5",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
+ "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
"peer": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
},
"engines": {
- "node": ">=14.17"
+ "node": ">=4.2.0"
}
},
"node_modules/unbox-primitive": {
diff --git a/src/DataParse/ClassCard.css b/src/DataParse/ClassCard.css
new file mode 100644
index 0000000..74a53c5
--- /dev/null
+++ b/src/DataParse/ClassCard.css
@@ -0,0 +1,3 @@
+.less-margin {
+ margin: 0 0 0 0;
+}
\ No newline at end of file
diff --git a/src/DataParse/ClassCard.js b/src/DataParse/ClassCard.js
new file mode 100644
index 0000000..c1bcb46
--- /dev/null
+++ b/src/DataParse/ClassCard.js
@@ -0,0 +1,79 @@
+import { useState, useEffect } from "react";
+import { useNavigate } from "react-router";
+import { Card, Progress } from 'antd';
+import { CodeOutlined, PlusSquareOutlined, InfoCircleOutlined } from '@ant-design/icons';
+
+import data from './prod-data.json';
+import './ClassCard.css';
+
+const ClassCard = ({index}) => {
+
+
+
+ const [OSCARatings, setOscarRatings] = useState([0, 0, 0]);
+ //console.log(data["Report_Entry"][index]);
+
+ const getCourseDescription = (inputString) => {
+ const endIndex = inputString.toLowerCase().indexOf("recommended background");
+ const firstString = inputString.slice(0, endIndex);
+ const lastString = inputString.slice(endIndex,)
+ return [firstString, lastString];
+ }
+
+ const getOSCARRatings = () => {
+ const temp = [Math.round(Math.random() * 100), Math.round(Math.random() * 100), 0];
+ temp[2] = 0.6 * temp[0] + 0.4 * temp[1];
+ return temp;
+ }
+
+ useEffect(() => {
+ // Call the function once on component mount
+ setOscarRatings(getOSCARRatings());
+ }, []);
+
+
+ return (
+ <>
+
+ }
+ actions={[{}, {}]}
+ bodyStyle={{
+ padding: 5,
+ lineHeight: 1,
+ margin: 0,
+ }}
+ headStyle={{
+ fontSize: 15,
+ color: "white",
+ background:
+ "#716868",
+ }}
+ style={{
+ width: 300,
+ }}
+ >
+ Professor: {data["Report_Entry"][index]["Instructors"] ? data["Report_Entry"][index]["Instructors"] : "None Assigned"}
+ {data["Report_Entry"][index]["Offering_Period"]}
+ {/* {getCourseDescription(data["Report_Entry"][index]["Course_Description"].replace(/<\/?[^>]+(>|$)/g, " "))[0]}
*/}
+ {/* {getCourseDescription(data["Report_Entry"][index]["Course_Description"].replace(/<\/?[^>]+(>|$)/g, " "))[1]}
*/}
+
+ {data["Report_Entry"][index]["Instructors"] !== "" && (
+
+
Professor Difficulty
+
)}
+
+ >
+ );
+
+}
+
+export default ClassCard;
\ No newline at end of file
diff --git a/src/DataParse/DataParse.js b/src/DataParse/DataParse.js
index be59933..422dc6f 100644
--- a/src/DataParse/DataParse.js
+++ b/src/DataParse/DataParse.js
@@ -1,94 +1,35 @@
import { useState, useEffect } from "react";
import { useNavigate } from "react-router";
-import { Card, Progress } from 'antd';
-import { CodeOutlined, PlusSquareOutlined } from '@ant-design/icons';
+import ClassCard from "./ClassCard";
+import { Pagination } from 'antd';
import data from './prod-data.json';
+function DataParse({ course_code }) {
-const SingleClassCard = ({ index }) => {
+ const [currentSlide, setCurrentSlide] = useState(0);
- const [OSCARatings, setOscarRatings] = useState([0, 0, 0]);
- //console.log(data["Report_Entry"][index]);
-
- const getCourseDescription = (inputString) => {
- const endIndex = inputString.toLowerCase().indexOf("recommended background");
- const firstString = inputString.slice(0, endIndex);
- const lastString = inputString.slice(endIndex,)
- return [firstString, lastString];
- }
-
- const getOSCARRatings = () => {
- const temp = [Math.round(Math.random() * 100), Math.round(Math.random() * 100), 0];
- temp[2] = 0.6 * temp[0] + 0.4 * temp[1];
- return temp;
- }
+ let classComponents = [];
+ let [arraything, setArrayThing] = useState([]);// [450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460
useEffect(() => {
// Call the function once on component mount
- setOscarRatings(getOSCARRatings());
- }, []);
-
-
- return (
- <>
-
- }
- actions={[{}]}
- bodyStyle={{
- padding: 5,
- lineHeight: 1,
- margin: 0,
- }}
- headStyle={{
- fontSize: 15,
- color: "white",
- background:
- "#716868",
- }}
- style={{
- width: 300,
- }}
- >
- Professor: {data["Report_Entry"][index]["Instructors"] ? data["Report_Entry"][index]["Instructors"] : "None Assigned"}
- {/* {getCourseDescription(data["Report_Entry"][index]["Course_Description"].replace(/<\/?[^>]+(>|$)/g, " "))[0]}
*/}
- {/* {getCourseDescription(data["Report_Entry"][index]["Course_Description"].replace(/<\/?[^>]+(>|$)/g, " "))[1]}
*/}
-
- {data["Report_Entry"][index]["Instructors"] !== "" && (
-
-
Professor Difficulty
-
(Math.round(percent / 2) / 10) + "/5"} status="active" strokeColor="#716868" />
- Class Difficulty
- (Math.round(percent / 2) / 10) + "/5"} status="active" strokeColor="#716868" />
- Projected Difficulty
- (Math.round(percent / 2) / 10) + "/5"} status="active" strokeColor="#716868" />
- )}
-
-
- When: {data["Report_Entry"][index]["Offering_Period"]}
- >
- );
-
-}
-function DataParse({ index }) {
-
- const classComponents = [];
-
- // Loop through indices 450 to 500
- for (let i = 450; i <= 500; i++) {
- if (data["Report_Entry"][i]["Instructional_Format"] === "Laboratory") {
- continue;
+ for (let i = 0; i < data["Report_Entry"].length; i++) {
+ // console.log(data["Report_Entry"][i]["Course_Title"].slice(0, data["Report_Entry"][i]["Course_Title"].indexOf(" - ")).trim());
+ if (data["Report_Entry"][i] && data["Report_Entry"][i]["Course_Title"].slice(0, data["Report_Entry"][i]["Course_Title"].indexOf(" - ")).trim() === course_code) {
+ classComponents.push();
+ }
}
- classComponents.push();
- }
+ setArrayThing(classComponents);
+ }, [course_code, data]);
return (
<>
- {classComponents}
+ {arraything[currentSlide]}
+ {/* {classComponents.map((value) => (
+
+ ))} */}
+ {arraything.length > 0 && setCurrentSlide(page)} />}
>
);
}
diff --git a/src/DataParse/ProfessorRating.json b/src/DataParse/ProfessorRating.json
new file mode 100644
index 0000000..0743c67
--- /dev/null
+++ b/src/DataParse/ProfessorRating.json
@@ -0,0 +1,22 @@
+{
+ "Gillian Smith" : 92,
+ "Matthew Ahrens":88,
+ "Taylor Andrews":84,
+ "Herman Servatius":10,
+ "Shubbhi Taneja":75,
+ "Michael Engling":89,
+ "Yu-Shan Sun":68,
+ "Jennifer Mortensen":83,
+ "Mark Sheahan":0,
+ "Erin Solovey":84,
+ "Lane Harrison":0,
+ "Paul Delvy":83,
+ "Micha Hofri":20,
+ "Keith Pray":73,
+ "Joshua Cuneo":75,
+ "Rose Bohrer":78,
+ "Rodica Neamtu":84,
+ "Sakire Arslan Ay":0,
+ "Xiaoyan Sun":0,
+ "Wilson Wong":0
+}
\ No newline at end of file
From a651ea8775e6e10d8463e5abe3989189b58c3e7e Mon Sep 17 00:00:00 2001
From: Charles Tang
Date: Sat, 13 Jan 2024 13:48:56 -0500
Subject: [PATCH 2/8] updated card w real content
---
src/DataParse/ClassCard.js | 26 +-
src/DataParse/CourseRatings.json | 769 +++++++++++++++++++++++++++++
src/DataParse/DataParse.js | 7 +-
src/DataParse/ProfessorRating.json | 548 +++++++++++++++++++-
4 files changed, 1316 insertions(+), 34 deletions(-)
create mode 100644 src/DataParse/CourseRatings.json
diff --git a/src/DataParse/ClassCard.js b/src/DataParse/ClassCard.js
index c1bcb46..3524cfa 100644
--- a/src/DataParse/ClassCard.js
+++ b/src/DataParse/ClassCard.js
@@ -4,12 +4,14 @@ import { Card, Progress } from 'antd';
import { CodeOutlined, PlusSquareOutlined, InfoCircleOutlined } from '@ant-design/icons';
import data from './prod-data.json';
+import profRatings from './ProfessorRating.json';
+import classRatings from './CourseRatings.json';
import './ClassCard.css';
-const ClassCard = ({index}) => {
-
-
+const ClassCard = ({ index }) => {
+ const courseCode = data["Report_Entry"][index]["Course_Title"].slice(0, data["Report_Entry"][index]["Course_Title"].indexOf(" - ")).trim();
+ const professor = data["Report_Entry"][index]["Instructors"] ? data["Report_Entry"][index]["Instructors"] : "";
const [OSCARatings, setOscarRatings] = useState([0, 0, 0]);
//console.log(data["Report_Entry"][index]);
@@ -21,13 +23,17 @@ const ClassCard = ({index}) => {
}
const getOSCARRatings = () => {
- const temp = [Math.round(Math.random() * 100), Math.round(Math.random() * 100), 0];
- temp[2] = 0.6 * temp[0] + 0.4 * temp[1];
- return temp;
+ // const temp = [Math.round(Math.random() * 100), Math.round(Math.random() * 100), 0];
+ // temp[2] = 0.6 * temp[0] + 0.4 * temp[1];
+ // return temp;
+ const courseRating = classRatings[courseCode] ? classRatings[courseCode] : Math.round(Math.random() * 100);
+ const profRating = profRatings[professor] ? profRatings[professor] : Math.round(Math.random() * 100);
+ const projRating = 0.6 * profRating + 0.4 * courseRating;
+
+ return [profRating, courseRating, projRating]
}
useEffect(() => {
- // Call the function once on component mount
setOscarRatings(getOSCARRatings());
}, []);
@@ -63,11 +69,11 @@ const ClassCard = ({index}) => {
{data["Report_Entry"][index]["Instructors"] !== "" && (
-
Professor Difficulty
+
Professor Rating
(Math.round(percent / 2) / 10) + "/5"} status="active" strokeColor="#716868" />
- Class Difficulty
+ Class Rating
(Math.round(percent / 2) / 10) + "/5"} status="active" strokeColor="#716868" />
- Projected Difficulty
+ Projected Rating
(Math.round(percent / 2) / 10) + "/5"} status="active" strokeColor="#716868" />
)}
diff --git a/src/DataParse/CourseRatings.json b/src/DataParse/CourseRatings.json
new file mode 100644
index 0000000..b47090a
--- /dev/null
+++ b/src/DataParse/CourseRatings.json
@@ -0,0 +1,769 @@
+{
+ "AB 1533": 54,
+ "AB 2533": 75,
+ "ACC 2060": 78,
+ "AE 2310": 22,
+ "AE 2320": 59,
+ "AE 2550": 35,
+ "AE 3430": 47,
+ "AE 4310": 50,
+ "AE 4320": 63,
+ "AE 4410": 26,
+ "AE 5032": 48,
+ "AE 5131": 40,
+ "AE 5132": 92,
+ "AE 5231": 57,
+ "AE 5232": 93,
+ "AE 5331": 81,
+ "AE 5332": 52,
+ "AE 5431": 44,
+ "AE 6093": 49,
+ "AR 1100": 52,
+ "AR 1101": 45,
+ "AR 140X": 39,
+ "AR 2048": 70,
+ "AR 2101": 26,
+ "AR 2111": 24,
+ "AR 2115": 63,
+ "AR 2202": 55,
+ "AR 2222": 98,
+ "AR 2301": 34,
+ "AR 2333": 42,
+ "AR 2401": 29,
+ "AR 2750": 30,
+ "AR 3112": 90,
+ "AR 3222": 44,
+ "AR 3333": 61,
+ "AR 3700": 27,
+ "AREN 2023": 60,
+ "AREN 2025": 74,
+ "AREN 3002": 63,
+ "AREN 3003": 95,
+ "AREN 3022": 65,
+ "AREN 3024": 33,
+ "AS 1003": 61,
+ "AS 1004": 62,
+ "AS 2003": 94,
+ "AS 2004": 86,
+ "AS 3003": 100,
+ "AS 3004": 25,
+ "AS 4003": 80,
+ "AS 4004": 75,
+ "BB 1001": 33,
+ "BB 1002": 53,
+ "BB 1025": 95,
+ "BB 1035": 52,
+ "BB 1045": 24,
+ "BB 2003": 56,
+ "BB 2030": 77,
+ "BB 2040": 25,
+ "BB 2550": 60,
+ "BB 2903": 31,
+ "BB 2904": 22,
+ "BB 2920": 38,
+ "BB 292X": 45,
+ "BB 2950": 27,
+ "BB 3010": 54,
+ "BB 3102": 94,
+ "BB 3120": 92,
+ "BB 3140": 80,
+ "BB 3513": 94,
+ "BB 3515": 36,
+ "BB 3517": 76,
+ "BB 3526": 79,
+ "BB 3570": 87,
+ "BB 3920": 85,
+ "BB 4170": 60,
+ "BB 4190": 67,
+ "BB 4900": 86,
+ "BB 501": 60,
+ "BB 505": 76,
+ "BB 508": 86,
+ "BB 509": 61,
+ "BB 554": 84,
+ "BB 561": 34,
+ "BB 570": 47,
+ "BB 581": 69,
+ "BB 590": 39,
+ "BCB 3010": 57,
+ "BCB 501": 87,
+ "BCB 510": 52,
+ "BCB 590": 94,
+ "BME 1004": 71,
+ "BME 2001": 25,
+ "BME 2210": 78,
+ "BME 2211": 43,
+ "BME 2502": 25,
+ "BME 3012": 53,
+ "BME 3013": 60,
+ "BME 301X": 97,
+ "BME 3111": 56,
+ "BME 3300": 59,
+ "BME 3503": 47,
+ "BME 3505": 99,
+ "BME 3506": 41,
+ "BME 3605": 22,
+ "BME 360X": 60,
+ "BME 3610": 35,
+ "BME 3811": 96,
+ "BME 3813": 23,
+ "BME 4201": 93,
+ "BME 4504": 27,
+ "BME 4606": 70,
+ "BME 4701": 22,
+ "BME 481X": 87,
+ "BME 4828": 78,
+ "BME 4831": 36,
+ "BME 531": 29,
+ "BME 532": 62,
+ "BME 533": 84,
+ "BME 550": 75,
+ "BME 552": 87,
+ "BME 560": 30,
+ "BME 580": 23,
+ "BME 583": 40,
+ "BME 591": 74,
+ "BUS 1020": 44,
+ "BUS 2001": 65,
+ "BUS 2020": 26,
+ "BUS 2080": 99,
+ "BUS 500": 87,
+ "BUS 596": 37,
+ "BUS 632": 22,
+ "BUS 691": 74,
+ "CE 2002": 40,
+ "CE 3006": 21,
+ "CE 3010": 48,
+ "CE 3022": 34,
+ "CE 3026": 28,
+ "CE 3030": 26,
+ "CE 3044": 82,
+ "CE 3050": 34,
+ "CE 3061": 71,
+ "CE 3062": 95,
+ "CE 4007": 36,
+ "CE 4060": 85,
+ "CE 4063": 23,
+ "CE 4071": 87,
+ "CE 4600": 34,
+ "CE 501": 74,
+ "CE 5303": 61,
+ "CE 534": 37,
+ "CE 542": 67,
+ "CE 583": 67,
+ "CE 584": 93,
+ "CE 587": 20,
+ "CE 590": 26,
+ "CH 1010": 31,
+ "CH 1020": 78,
+ "CH 1030": 30,
+ "CH 1040": 92,
+ "CH 2320": 64,
+ "CH 2330": 90,
+ "CH 2360": 59,
+ "CH 2660": 26,
+ "CH 2670": 76,
+ "CH 3530": 76,
+ "CH 4120": 82,
+ "CH 4140": 63,
+ "CH 4150": 40,
+ "CH 4170": 64,
+ "CH 4190": 58,
+ "CH 4420": 81,
+ "CH 4520": 45,
+ "CH 516": 53,
+ "CH 520": 41,
+ "CH 536": 24,
+ "CH 540": 98,
+ "CH 555": 53,
+ "CH 571": 59,
+ "CHE 2013": 89,
+ "CHE 2014": 25,
+ "CHE 3201": 26,
+ "CHE 3301": 35,
+ "CHE 3501": 61,
+ "CHE 3722": 72,
+ "CHE 4063": 29,
+ "CHE 4405": 36,
+ "CHE 502": 73,
+ "CHE 503": 48,
+ "CHE 504": 96,
+ "CHE 521": 52,
+ "CHE 565": 27,
+ "CHE 571": 27,
+ "CHE 580": 54,
+ "CN 1543": 47,
+ "CN 2541": 82,
+ "CN 2544": 20,
+ "CN 3541": 100,
+ "CN 357X": 59,
+ "CP 1000": 27,
+ "CS 1004": 92,
+ "CS 1101": 87,
+ "CS 2011": 28,
+ "CS 2022": 27,
+ "CS 2102": 93,
+ "CS 2119": 70,
+ "CS 2223": 81,
+ "CS 2301": 67,
+ "CS 2303": 82,
+ "CS 3013": 22,
+ "CS 3041": 36,
+ "CS 3043": 57,
+ "CS 3133": 81,
+ "CS 3431": 94,
+ "CS 3516": 71,
+ "CS 3733": 96,
+ "CS 4032": 91,
+ "CS 4123": 59,
+ "CS 4233": 23,
+ "CS 4241": 34,
+ "CS 4341": 67,
+ "CS 4342": 98,
+ "CS 4401": 74,
+ "CS 4432": 47,
+ "CS 4433": 33,
+ "CS 4513": 36,
+ "CS 4516": 85,
+ "CS 4731": 65,
+ "CS 4801": 80,
+ "CS 4804": 48,
+ "CS 5003": 95,
+ "CS 5007": 25,
+ "CS 502": 44,
+ "CS 503": 48,
+ "CS 5084": 99,
+ "CS 509": 52,
+ "CS 525": 34,
+ "CS 534": 80,
+ "CS 539": 21,
+ "CS 541": 89,
+ "CS 542": 46,
+ "CS 545": 95,
+ "CS 546": 22,
+ "CS 548": 56,
+ "CS 549": 35,
+ "CS 558": 85,
+ "CS 571": 38,
+ "CS 573": 86,
+ "CS 585": 45,
+ "CS 586": 50,
+ "CS 587": 57,
+ "CS 588": 82,
+ "CS 673": 93,
+ "DEV 2200": 36,
+ "DEV 520": 24,
+ "DEV 530": 50,
+ "DEV 540": 27,
+ "DS 1010": 48,
+ "DS 2010": 49,
+ "DS 3010": 64,
+ "DS 4433": 21,
+ "DS 4635": 49,
+ "DS 501": 94,
+ "DS 502": 48,
+ "DS 503": 48,
+ "DS 504": 91,
+ "DS 541": 58,
+ "DS 577": 36,
+ "DS 595": 32,
+ "DS 598": 87,
+ "ECE 2010": 52,
+ "ECE 2019": 48,
+ "ECE 2029": 94,
+ "ECE 2049": 20,
+ "ECE 2112": 88,
+ "ECE 2201": 53,
+ "ECE 2305": 21,
+ "ECE 2311": 76,
+ "ECE 2312": 50,
+ "ECE 2799": 59,
+ "ECE 3012": 71,
+ "ECE 3204": 27,
+ "ECE 3829": 57,
+ "ECE 3849": 100,
+ "ECE 4305": 33,
+ "ECE 4503": 58,
+ "ECE 4801": 94,
+ "ECE 4802": 86,
+ "ECE 503": 26,
+ "ECE 5105": 34,
+ "ECE 5204": 70,
+ "ECE 524": 54,
+ "ECE 5312": 62,
+ "ECE 545": 78,
+ "ECE 5500": 43,
+ "ECE 5511": 97,
+ "ECE 5520": 95,
+ "ECE 5522": 87,
+ "ECE 5530": 48,
+ "ECE 5532": 81,
+ "ECE 5540": 25,
+ "ECE 5723": 50,
+ "ECE 5724": 71,
+ "ECE 577": 74,
+ "ECE 579": 43,
+ "ECE 588": 85,
+ "ECE 596": 54,
+ "ECE 673": 26,
+ "ECON 1110": 53,
+ "ECON 2120": 77,
+ "ECON 2126": 34,
+ "ECON 2130": 39,
+ "ECON 2155": 56,
+ "ECON 3100": 38,
+ "EDU 220X": 46,
+ "EDU 230X": 97,
+ "EN 1219": 100,
+ "EN 1251": 73,
+ "EN 2219": 26,
+ "EN 2271": 27,
+ "EN 241X": 27,
+ "EN 3219": 58,
+ "EN 3257": 23,
+ "EN 3271": 44,
+ "ENV 2201": 57,
+ "ENV 2319": 70,
+ "ENV 2700": 31,
+ "ENV 2900": 45,
+ "ES 1310": 82,
+ "ES 1500": 47,
+ "ES 2001": 71,
+ "ES 202X": 72,
+ "ES 2501": 58,
+ "ES 2502": 81,
+ "ES 2503": 25,
+ "ES 3001": 58,
+ "ES 3002": 100,
+ "ES 3003": 87,
+ "ES 3004": 61,
+ "ES 3011": 79,
+ "ES 3323": 38,
+ "ESL 500": 68,
+ "ETR 1100": 27,
+ "ETR 2900": 95,
+ "ETR 491X": 87,
+ "ETR 4930": 66,
+ "ETR 593": 26,
+ "FIN 1250": 91,
+ "FIN 2070": 68,
+ "FIN 500": 27,
+ "FP 3070": 41,
+ "FP 4001": 33,
+ "FP 553": 54,
+ "FP 555": 54,
+ "FP 571": 90,
+ "FP 575": 38,
+ "FP 580": 51,
+ "FY 1101": 54,
+ "FY 1800": 85,
+ "GE 2341": 52,
+ "GN 2511": 91,
+ "GN 2512": 54,
+ "GN 3514": 90,
+ "GOV 1301": 91,
+ "GOV 1320": 78,
+ "GOV 2314": 77,
+ "GOV 2319": 54,
+ "HI 1314": 25,
+ "HI 2310": 95,
+ "HI 2314": 76,
+ "HI 2315": 23,
+ "HI 2320": 70,
+ "HI 2329": 26,
+ "HI 2335": 35,
+ "HI 2350": 44,
+ "HI 2900": 49,
+ "HI 2913": 35,
+ "HI 2930": 60,
+ "HI 3312": 37,
+ "HI 3314": 42,
+ "HI 331X": 82,
+ "HI 3335": 98,
+ "HI 3343": 23,
+ "HU 1500": 40,
+ "HU 2222": 77,
+ "HU 2258": 75,
+ "HU 2501": 37,
+ "HU 250X": 94,
+ "HU 2901": 58,
+ "HU 3900": 87,
+ "HU 3910": 42,
+ "ID 2050": 57,
+ "ID 2314": 70,
+ "ID 3527": 40,
+ "ID 3529": 64,
+ "ID 4000": 84,
+ "ID 500": 93,
+ "IMGD 1000": 76,
+ "IMGD 1001": 48,
+ "IMGD 1002": 72,
+ "IMGD 2000": 96,
+ "IMGD 2030": 71,
+ "IMGD 2048": 36,
+ "IMGD 2101": 63,
+ "IMGD 2222": 53,
+ "IMGD 2333": 80,
+ "IMGD 2450": 88,
+ "IMGD 2900": 91,
+ "IMGD 2905": 57,
+ "IMGD 3000": 88,
+ "IMGD 3030": 24,
+ "IMGD 3222": 53,
+ "IMGD 3333": 75,
+ "IMGD 3700": 84,
+ "IMGD 4000": 24,
+ "IMGD 4099": 98,
+ "IMGD 4200": 88,
+ "IMGD 4500": 42,
+ "IMGD 4600": 62,
+ "IMGD 4700": 74,
+ "IMGD 5000": 55,
+ "IMGD 5200": 23,
+ "IMGD 5500": 22,
+ "IMGD 5600": 24,
+ "IMGD 6001": 26,
+ "INTL 1100": 40,
+ "INTL 2100": 44,
+ "INTL 2210": 88,
+ "INTL 2910": 93,
+ "INTL 3050": 61,
+ "INTL 4100": 49,
+ "ISE 1801": 91,
+ "ISE 1803": 45,
+ "ISE 2810": 86,
+ "JP 120X": 28,
+ "JP 200X": 58,
+ "MA 1021": 24,
+ "MA 1022": 45,
+ "MA 1023": 49,
+ "MA 1024": 66,
+ "MA 1120": 73,
+ "MA 1801": 72,
+ "MA 1971": 45,
+ "MA 2051": 34,
+ "MA 2071": 58,
+ "MA 2072": 71,
+ "MA 2073": 72,
+ "MA 2201": 84,
+ "MA 2210": 66,
+ "MA 2251": 68,
+ "MA 2273": 70,
+ "MA 2611": 30,
+ "MA 2612": 99,
+ "MA 2621": 59,
+ "MA 2631": 63,
+ "MA 3212": 50,
+ "MA 322X": 66,
+ "MA 3257": 88,
+ "MA 3471": 92,
+ "MA 3627": 49,
+ "MA 3825": 43,
+ "MA 3831": 77,
+ "MA 3832": 31,
+ "MA 4216": 87,
+ "MA 4235": 31,
+ "MA 4291": 52,
+ "MA 4632": 91,
+ "MA 4635": 90,
+ "MA 464X": 65,
+ "MA 4891": 90,
+ "MA 501": 63,
+ "MA 511": 36,
+ "MA 514": 21,
+ "MA 529": 40,
+ "MA 541": 70,
+ "MA 542": 49,
+ "MA 543": 75,
+ "MA 556": 28,
+ "MA 557": 98,
+ "MA 559": 56,
+ "MA 590": 44,
+ "ME 1800": 75,
+ "ME 2300": 35,
+ "ME 2820": 37,
+ "ME 3310": 52,
+ "ME 3311": 98,
+ "ME 3320": 68,
+ "ME 3506": 81,
+ "ME 3901": 45,
+ "ME 4320": 22,
+ "ME 4322": 92,
+ "ME 4323": 76,
+ "ME 4324": 25,
+ "ME 4429": 86,
+ "ME 4504": 30,
+ "ME 4506": 29,
+ "ME 4606": 73,
+ "ME 4840": 88,
+ "ME 4875": 73,
+ "ME 501": 43,
+ "ME 5108": 78,
+ "ME 516": 85,
+ "ME 5200": 52,
+ "ME 5205": 38,
+ "ME 521": 91,
+ "ME 530": 93,
+ "ME 5303": 99,
+ "ME 5304": 37,
+ "ME 5358": 93,
+ "ME 5361": 64,
+ "ME 5370": 30,
+ "ME 5385": 25,
+ "ME 5420": 98,
+ "ME 5441": 51,
+ "ME 550": 90,
+ "ME 5503": 33,
+ "ME 552": 83,
+ "ME 591": 72,
+ "MFE 500": 51,
+ "MFE 5385": 40,
+ "MFE 541": 25,
+ "MFE 5420": 35,
+ "MFE 5841": 36,
+ "MIS 2300": 45,
+ "MIS 3010": 83,
+ "MIS 3720": 77,
+ "MIS 4084": 35,
+ "MIS 4720": 67,
+ "MIS 500": 35,
+ "MIS 502": 25,
+ "MIS 510": 78,
+ "MIS 571": 86,
+ "MIS 573": 73,
+ "MIS 576": 26,
+ "MIS 581": 73,
+ "MIS 583": 76,
+ "MIS 584": 20,
+ "MKT 3640": 97,
+ "MKT 4030": 81,
+ "MKT 500": 39,
+ "MKT 565": 45,
+ "MKT 568": 74,
+ "MKT 569": 64,
+ "ML 1021": 77,
+ "ML 1022": 98,
+ "ML 2021": 61,
+ "ML 2022": 28,
+ "ML 3021": 82,
+ "ML 3022": 57,
+ "ML 4023": 78,
+ "ML 4024": 31,
+ "MME 518": 22,
+ "MME 525": 65,
+ "MME 528": 69,
+ "MME 531": 23,
+ "MTE 5385": 50,
+ "MTE 540": 51,
+ "MTE 5420": 52,
+ "MTE 550": 68,
+ "MTE 558": 98,
+ "MTE 561": 83,
+ "MTE 575": 55,
+ "MTE 580": 34,
+ "MTE 5841": 90,
+ "MTE 5844": 60,
+ "MTE 594": 31,
+ "MU 1511": 87,
+ "MU 1611": 64,
+ "MU 2300": 23,
+ "MU 2611": 92,
+ "MU 2631": 73,
+ "MU 2632": 54,
+ "MU 2633": 57,
+ "MU 2636": 91,
+ "MU 2637": 43,
+ "MU 2638": 35,
+ "MU 2639": 94,
+ "MU 2640": 80,
+ "MU 2641": 26,
+ "MU 2642": 91,
+ "MU 2643": 41,
+ "MU 2644": 45,
+ "MU 2722": 24,
+ "MU 2723": 53,
+ "MU 3001": 48,
+ "MU 3615": 44,
+ "MU 3616": 52,
+ "NEU 502": 48,
+ "NEU 505": 40,
+ "NEU 590": 54,
+ "NSE 515": 56,
+ "NSE 560": 31,
+ "OBC 1010": 21,
+ "OBC 4367": 30,
+ "OBC 505": 42,
+ "OBC 506": 84,
+ "OBC 533": 56,
+ "OIE 2081": 73,
+ "OIE 2850": 21,
+ "OIE 3020": 26,
+ "OIE 3405": 21,
+ "OIE 3410": 94,
+ "OIE 3420": 27,
+ "OIE 3510": 49,
+ "OIE 4410": 21,
+ "OIE 4460": 83,
+ "OIE 501": 51,
+ "OIE 542": 57,
+ "OIE 548": 63,
+ "OIE 549": 88,
+ "OIE 553": 87,
+ "OIE 558": 37,
+ "OIE 597": 63,
+ "PH 1110": 22,
+ "PH 1111": 91,
+ "PH 1120": 25,
+ "PH 1121": 23,
+ "PH 1130": 95,
+ "PH 1140": 84,
+ "PH 1150": 26,
+ "PH 2101": 74,
+ "PH 2201": 36,
+ "PH 2510": 52,
+ "PH 2520": 72,
+ "PH 2550": 89,
+ "PH 2651": 98,
+ "PH 3206": 52,
+ "PH 3401": 24,
+ "PH 3402": 52,
+ "PH 3503": 34,
+ "PH 3504": 24,
+ "PH 515": 62,
+ "PH 544": 57,
+ "PH 563": 43,
+ "PH 571": 75,
+ "PH 580": 30,
+ "PH 597": 76,
+ "PSY 1400": 78,
+ "PSY 1401": 55,
+ "PSY 1402": 61,
+ "PSY 1412": 30,
+ "PSY 1504": 97,
+ "PSY 1800": 70,
+ "PSY 2408": 95,
+ "PSY 2800": 63,
+ "PSY 4800": 44,
+ "PSY 504": 91,
+ "PSY 590": 34,
+ "PY 1731": 40,
+ "PY 2712": 64,
+ "PY 2713": 86,
+ "PY 2716": 42,
+ "PY 2717": 49,
+ "PY 2718": 87,
+ "PY 3711": 33,
+ "PY 3721": 28,
+ "RBE 1001": 55,
+ "RBE 2001": 87,
+ "RBE 2002": 73,
+ "RBE 3001": 62,
+ "RBE 3002": 49,
+ "RBE 3100": 57,
+ "RBE 4322": 54,
+ "RBE 470X": 23,
+ "RBE 4815": 67,
+ "RBE 500": 94,
+ "RBE 501": 68,
+ "RBE 502": 34,
+ "RBE 521": 41,
+ "RBE 530": 87,
+ "RBE 549": 78,
+ "RBE 550": 51,
+ "RBE 580": 55,
+ "RBE 594": 32,
+ "RBE 595": 68,
+ "RE 1731": 64,
+ "RE 2716": 67,
+ "RE 2721": 58,
+ "RE 3711": 69,
+ "RE 3721": 85,
+ "SD 550": 50,
+ "SEME 504": 60,
+ "SEME 525": 73,
+ "SP 1523": 71,
+ "SP 1524": 72,
+ "SP 3521": 22,
+ "SP 3522": 86,
+ "SP 3527": 67,
+ "SP 3529": 87,
+ "SS 1505": 51,
+ "STS 1200": 99,
+ "STS 4000": 31,
+ "SYS 501": 24,
+ "SYS 502": 79,
+ "SYS 510": 29,
+ "SYS 511": 86,
+ "SYS 512": 68,
+ "SYS 520": 33,
+ "SYS 521": 86,
+ "SYS 540": 35,
+ "SYS 585": 65,
+ "TH 2100": 55,
+ "TH 2500": 60,
+ "TH 310X": 91,
+ "TH 3300": 93,
+ "TH 360X": 24,
+ "WPE 1003": 98,
+ "WPE 1008": 62,
+ "WPE 1009": 76,
+ "WPE 1011": 42,
+ "WPE 1012": 64,
+ "WPE 1013": 95,
+ "WPE 1018": 79,
+ "WPE 1019": 74,
+ "WPE 1054": 65,
+ "WPE 1055": 89,
+ "WPE 1059": 67,
+ "WPE 1070": 72,
+ "WPE 1077": 61,
+ "WPE 1080": 84,
+ "WPE 1099": 97,
+ "WPE 1200": 63,
+ "WPE 1201": 67,
+ "WPE 1203": 41,
+ "WPE 1204": 43,
+ "WPE 1206": 39,
+ "WPE 1207": 35,
+ "WPE 1209": 79,
+ "WPE 1210": 97,
+ "WPE 1211": 82,
+ "WPE 1212": 39,
+ "WPE 1213": 88,
+ "WPE 1214": 78,
+ "WPE 1216": 61,
+ "WPE 1221": 96,
+ "WPE 1224": 75,
+ "WPE 1225": 51,
+ "WPE 1230": 48,
+ "WPE 1232": 66,
+ "WPE 1233": 52,
+ "WPE 1234": 28,
+ "WPE 1235": 72,
+ "WPE 1236": 37,
+ "WPE 1611": 80,
+ "WPE 1612": 84,
+ "WPE 1699": 79,
+ "WPE 2007": 67,
+ "WPE 2008": 87,
+ "WPE 2009": 29,
+ "WPE 2010": 50,
+ "WPE 2011": 82,
+ "WPE 2012": 82,
+ "WPE 2013": 53,
+ "WPE 2014": 23,
+ "WPE 2015": 87,
+ "WPE 2016": 33,
+ "WR 1010": 42,
+ "WR 1011": 94,
+ "WR 2010": 65,
+ "WR 2210": 44,
+ "WR 241X": 53,
+ "WR 2450": 40,
+ "WR 253X": 87,
+ "WR 3210": 80,
+ "WR 3214": 27,
+ "WR 3300": 92,
+ "WR 4210": 94,
+ "WR 513": 25
+}
\ No newline at end of file
diff --git a/src/DataParse/DataParse.js b/src/DataParse/DataParse.js
index 422dc6f..2638fc3 100644
--- a/src/DataParse/DataParse.js
+++ b/src/DataParse/DataParse.js
@@ -9,14 +9,15 @@ function DataParse({ course_code }) {
const [currentSlide, setCurrentSlide] = useState(0);
- let classComponents = [];
+ let classComponents = [];
let [arraything, setArrayThing] = useState([]);// [450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460
useEffect(() => {
// Call the function once on component mount
for (let i = 0; i < data["Report_Entry"].length; i++) {
// console.log(data["Report_Entry"][i]["Course_Title"].slice(0, data["Report_Entry"][i]["Course_Title"].indexOf(" - ")).trim());
- if (data["Report_Entry"][i] && data["Report_Entry"][i]["Course_Title"].slice(0, data["Report_Entry"][i]["Course_Title"].indexOf(" - ")).trim() === course_code) {
+ if (data["Report_Entry"][i] && data["Report_Entry"][i]["Course_Title"].slice(0, data["Report_Entry"][i]["Course_Title"].indexOf(" - ")).trim() === course_code
+ && data["Report_Entry"][i]["Instructor"] !== "") {
classComponents.push();
}
}
@@ -25,7 +26,7 @@ function DataParse({ course_code }) {
return (
<>
- {arraything[currentSlide]}
+ {arraything[currentSlide]}
{/* {classComponents.map((value) => (
))} */}
diff --git a/src/DataParse/ProfessorRating.json b/src/DataParse/ProfessorRating.json
index 0743c67..0ffa757 100644
--- a/src/DataParse/ProfessorRating.json
+++ b/src/DataParse/ProfessorRating.json
@@ -1,22 +1,528 @@
{
- "Gillian Smith" : 92,
- "Matthew Ahrens":88,
- "Taylor Andrews":84,
- "Herman Servatius":10,
- "Shubbhi Taneja":75,
- "Michael Engling":89,
- "Yu-Shan Sun":68,
- "Jennifer Mortensen":83,
- "Mark Sheahan":0,
- "Erin Solovey":84,
- "Lane Harrison":0,
- "Paul Delvy":83,
- "Micha Hofri":20,
- "Keith Pray":73,
- "Joshua Cuneo":75,
- "Rose Bohrer":78,
- "Rodica Neamtu":84,
- "Sakire Arslan Ay":0,
- "Xiaoyan Sun":0,
- "Wilson Wong":0
-}
\ No newline at end of file
+ "Mohammed El Hamzaoui": 51,
+ "Nii Ollenu": 66,
+ "Raghvendra Cowlagi": 83,
+ "Ye Lu": 41,
+ "Hektor Kashuri": 90,
+ "Nikhil Karanjgaokar": 41,
+ "Zhangxian Yuan": 32,
+ "Michael Demetriou": 96,
+ "Jagannath Jayachandran": 53,
+ "Nikolaos Gatsonis": 87,
+ "Zachary Taillefer": 89,
+ "John Blandino": 30,
+ "Mark Richman": 63,
+ "Marie Keller": 68,
+ "Robyn Thomas": 45,
+ "Susan Hong-Sammons": 56,
+ "Nick Carter": 90,
+ "Matthew Steinke": 37,
+ "Roshanak Bigonah": 90,
+ "Farley Chery": 62,
+ "Michelle Borowski": 46,
+ "David Samson": 72,
+ "Ralph Sutter": 32,
+ "Adryen Gonzalez": 30,
+ "Joshua Rosenstock": 42,
+ "Edward Gutierrez": 48,
+ "Steven Van Dessel": 39,
+ "Soroush Farzin": 63,
+ "Nan Ma": 63,
+ "Shichao Liu": 93,
+ "Adam Messer": 99,
+ "Matthew Anderson": 37,
+ "Ashley Olson": 36,
+ "Chris Collins": 71,
+ "Michael Buckholt": 51,
+ "Louis Roberts": 89,
+ "Marja Bakermans": 75,
+ "Scarlet Shell": 94,
+ "Pamela Weathers": 97,
+ "Lauren Mathews": 39,
+ "Jill Rulfs": 47,
+ "Shane McInally": 31,
+ "Inna Nechipurenko": 72,
+ "Joseph Cullon": 74,
+ "Natalie Farny": 58,
+ "Elizabeth Ryder": 64,
+ "Tanja Dominko": 91,
+ "Luis Vidali": 66,
+ "Carl Moxey": 87,
+ "Floyd Brownewell": 63,
+ "JoAnn Whitefleet-Smith": 33,
+ "Destin Heilman": 73,
+ "Jean-Francois Hamel": 44,
+ "Joseph Duffy": 36,
+ "Masha Fridkis-Hareli": 71,
+ "Mia Bosinger": 72,
+ "Sam Walcott": 76,
+ "Dmitry Korkin": 65,
+ "Taimoor Afzal": 36,
+ "Yonghui Ding": 57,
+ "Dirk Albrecht": 71,
+ "Adam Lammert": 59,
+ "John Obayemi": 83,
+ "Sakthikumar Ambady": 86,
+ "Brenton Faber": 58,
+ "Zoe Reidinger": 64,
+ "Karen Troy": 34,
+ "Raymond Page": 30,
+ "Diana Alatalo": 47,
+ "Zhenglun Alan Wei": 90,
+ "Brian Savilonis": 48,
+ "Catherine Whittington": 86,
+ "George Pins": 42,
+ "Kevin Cornwell": 99,
+ "Doug Ferguson": 46,
+ "Yihao Zheng": 36,
+ "Adriana Hera": 48,
+ "Mohammed Salman Shazeeb": 77,
+ "Christopher Nycz": 39,
+ "Edward Gonsalves": 93,
+ "Sandhya Balasubramanian": 44,
+ "Robert Lombardi": 75,
+ "Marco Bonilla": 54,
+ "Michael Ahern": 84,
+ "James McKenna": 75,
+ "Kenny Ching": 85,
+ "Purvi Shah": 40,
+ "Joe Zhu": 98,
+ "Tahar El-Korchi": 96,
+ "Leonard Albano": 68,
+ "Ajmal Paktiawal": 78,
+ "Jessica Rosewitz": 43,
+ "Mingjiang Tao": 87,
+ "Suzanne LePage": 31,
+ "John Bergendahl": 34,
+ "Laila Abu-Lail": 67,
+ "Nima Rahbar": 89,
+ "Jeanine Dudle": 83,
+ "Stephen Kmiotek": 45,
+ "John Sullivan": 75,
+ "Paul Mathisen": 70,
+ "Brian O'Rourke": 80,
+ "Richard Gram": 39,
+ "Michael Christiansen": 76,
+ "Luciana Burdi": 41,
+ "Harold Walker": 58,
+ "Alissa Richard": 38,
+ "Uma Kumar": 42,
+ "Raul Orduna Picon": 59,
+ "Ronald Grimm": 35,
+ "Roy Kennedy": 61,
+ "Elizabeth Bafaro": 65,
+ "Anitha Alanthadka": 79,
+ "Ivan Mardilovich": 55,
+ "George Kaminski": 50,
+ "Drew Brodeur": 66,
+ "Christopher Lambert": 67,
+ "John MacDonald": 60,
+ "Patricia Musacchio": 63,
+ "Jose Arguello": 63,
+ "Carissa Olsen": 55,
+ "Bruce Bursten": 100,
+ "Suzanne Scarlata": 58,
+ "James Dittami": 58,
+ "Alex Maag": 55,
+ "Susan Zhou": 64,
+ "Christina Bailey-Hytholt": 64,
+ "Eric Young": 62,
+ "Susan Roberts": 55,
+ "Anthony Dixon": 44,
+ "Michael Timko": 94,
+ "Nikolaos Kazantzis": 75,
+ "N. Aaron Deskins": 99,
+ "Walter Zurawsky": 83,
+ "Huili Zheng": 97,
+ "Hsinhan Hung": 52,
+ "Wen-Hua Du": 48,
+ "Sakire Arslan Ay": 57,
+ "Xiaoyan Sun": 64,
+ "Wilson Wong": 35,
+ "Zhongqiang Zhang": 44,
+ "Andrea Arnold": 75,
+ "Hanmeng Zhan": 58,
+ "Gary Pollice": 33,
+ "Xiaozhong Liu": 69,
+ "Xiangnan Kong": 69,
+ "Jun Dai": 73,
+ "Fabricio Murai": 98,
+ "Elke Rundensteiner": 69,
+ "Craig Wills": 78,
+ "Koksal Mus": 58,
+ "Thierry Petit": 91,
+ "Joseph Johnson": 63,
+ "Larz White": 62,
+ "Carlo Pinciroli": 66,
+ "Chun-Kit Ngan": 62,
+ "Kyumin Lee": 94,
+ "Ricky Sethi": 57,
+ "Mohammed A": 58,
+ "Ziming Zhang": 31,
+ "Jorge Toro": 98,
+ "Nitin Sanket": 64,
+ "Elizabeth Wilson": 84,
+ "Curran Kelleher": 85,
+ "Mohamed Eltabakh": 52,
+ "Yanhua Li": 85,
+ "George Heineman": 82,
+ "Berk Sunar": 47,
+ "Tom Hollywood": 72,
+ "Navneet Anand": 97,
+ "Mahamadou Sagna": 90,
+ "Achirri Ismael": 43,
+ "Torumoy Ghoshal": 56,
+ "Fatemeh Emdad": 39,
+ "Oren Mangoubi": 88,
+ "Randy Paffenroth": 76,
+ "Narahara Chari Dingari": 42,
+ "Ali Gholipour": 76,
+ "Sergey Makaroff": 91,
+ "Mostafa Asheghan": 54,
+ "Gregory Noetscher": 82,
+ "Yarkin Doroz": 59,
+ "Shahin Tajik": 57,
+ "Reinhold Ludwig": 35,
+ "Suat Ay": 98,
+ "Fatemeh Ganji": 83,
+ "Ted Clancy": 90,
+ "Bashima Islam": 30,
+ "Jennifer Stander": 96,
+ "Bo Tang": 98,
+ "Stephen Bitar": 32,
+ "Patrick Schaumont": 78,
+ "Alexander Wyglinski": 54,
+ "Vishwanath Iyer": 74,
+ "Fred Floru": 55,
+ "Ulkuhan Guler": 60,
+ "Gregary Prince": 96,
+ "Mahmood Mirheydar": 61,
+ "Edvina Uzunovic": 42,
+ "Dean Sorensen": 74,
+ "Fei Ding": 45,
+ "Zainalabedin Navabi": 65,
+ "Gbetonmasse Somasse": 64,
+ "Michael Radzicki": 81,
+ "Alexander Smith": 33,
+ "Hermine Vedogbeton": 62,
+ "Noemi Robertson": 99,
+ "Kathy Chen": 39,
+ "Jillian DiBonaventura": 32,
+ "Kate McIntyre": 34,
+ "Michelle Ephraim": 38,
+ "Joseph Aguilar": 66,
+ "Lance Schachterle": 73,
+ "Kevin Lewis": 60,
+ "Jim Cocola": 40,
+ "Trent Masiki": 42,
+ "Derren Rosbach": 75,
+ "Grant Burrier": 49,
+ "Robert Krueger": 93,
+ "Mehul Bhatia": 99,
+ "Alireza Ebadi": 61,
+ "Sarah Jane Wodin-Schwartz": 97,
+ "Jamie Monat": 94,
+ "Fiona Levey": 49,
+ "Jianyu Liang": 64,
+ "Danielle Cote": 91,
+ "Diana Lados": 100,
+ "Makhlouf Makhlouf": 52,
+ "Mitra Anand": 42,
+ "Zhikun Hou": 64,
+ "Lee Moradi": 57,
+ "Zhu Mao": 100,
+ "Joe Stabile": 74,
+ "Jiawei Yang": 81,
+ "Mustapha Fofana": 64,
+ "Cosme Furlong-Vazquez": 77,
+ "Selcuk Guceri": 37,
+ "Ananthalakshmy Krishna Moorthy": 44,
+ "Aswin Gnanaskandan": 97,
+ "Lin Cheng": 68,
+ "Aidin Panahi": 35,
+ "James Urban": 49,
+ "Nicholas Dembsey": 32,
+ "Mehdi Mortazavi": 96,
+ "Cagdas Onal": 46,
+ "Erica Stults": 55,
+ "Barbara Finer": 73,
+ "Martin Burt": 49,
+ "Micah Chase": 38,
+ "Rosanna Garcia": 70,
+ "Robert Sarnie": 59,
+ "Xin Gao": 50,
+ "Kwamie Dunbar": 72,
+ "Kathy Notarianni": 100,
+ "Milosh Puchovsky": 79,
+ "Ali Rangwala": 53,
+ "David Medich": 63,
+ "Kristin Boudreau": 44,
+ "David DiBiasio": 56,
+ "Stefano DeAngelis": 74,
+ "Brittany Taylor": 52,
+ "Malvina Piziak": 78,
+ "Carrick Eggleston": 55,
+ "Gizem Arslan": 36,
+ "Daniel DiMassa": 95,
+ "Crystal Brown": 79,
+ "Marie Natoli": 60,
+ "Steven Bullock": 61,
+ "Megan Sethi": 46,
+ "Christopher Fobare": 98,
+ "Alexander Herbert": 47,
+ "Peter Hansen": 69,
+ "Constance Clark": 71,
+ "David Spanagel": 81,
+ "Emily Gioielli": 66,
+ "Jeanne Essame": 78,
+ "Holger Droessler": 33,
+ "John Galante": 64,
+ "Lindsay Davis": 49,
+ "Chieko Nakajima": 61,
+ "Elizabeth Victor": 39,
+ "Shana Lessing": 46,
+ "Yunus Telliel": 76,
+ "James Hanlan": 32,
+ "Jennifer Rudolph": 40,
+ "Adrien Stoloff": 39,
+ "Rebecca Moody": 39,
+ "Althea Danielski": 49,
+ "Roger Gottlieb": 59,
+ "Douglas Olsen": 95,
+ "Lucy Caplan": 35,
+ "James Welu": 32,
+ "Sarah Lucie": 34,
+ "John Sanbonmatsu": 42,
+ "R. Maxwell Racine": 89,
+ "Matthew Scinto": 38,
+ "Scott Burton": 61,
+ "Dan Schimmel": 43,
+ "Frederick Bianchi": 61,
+ "V Manzo": 81,
+ "Joshua Rohde": 96,
+ "David Ibbett": 65,
+ "Scott Barton": 32,
+ "Mitchell Lutch": 71,
+ "Patrick Crowe": 93,
+ "Alejandro Manga Tinoco": 69,
+ "Katherine Foo": 45,
+ "Lorraine Higgins": 90,
+ "Ingrid Shockey": 95,
+ "William San Mart\u00edn": 82,
+ "Courtney Kurlanska": 95,
+ "Dominic Golding": 66,
+ "Jefferson Sphar": 47,
+ "Michael Miller": 72,
+ "Robert Hersh": 42,
+ "Amanda Wittman": 57,
+ "Melissa Butler": 84,
+ "Tsitsi Masvawure": 64,
+ "Rosemary Taylor": 81,
+ "Laura Bond": 91,
+ "Liza Boritz": 67,
+ "Rick Vaz": 60,
+ "Laura Roberts": 61,
+ "Nelson Torres Mesa": 62,
+ "Angel Rivera": 66,
+ "Rory Flinn": 82,
+ "Melissa Kagen": 38,
+ "Walt Yarbrough": 90,
+ "Karen Stewart": 92,
+ "Rodney DuPlessis": 51,
+ "Elizabeth Hambleton": 66,
+ "Ben Schneider": 45,
+ "Lena Dias": 78,
+ "Mark Claypool": 76,
+ "Monty Sharma": 95,
+ "Geoffrey Pfeifer": 99,
+ "Esther Boucher-Yip": 74,
+ "Emiko Rafique": 38,
+ "Jon Abraham": 97,
+ "Yonatan Ashenafi": 71,
+ "Michael Johnson": 61,
+ "Nicole Buczkowski": 42,
+ "Ralihe Raul Villagran Olivas": 49,
+ "Qiao Zhuang": 46,
+ "Marcel Blais": 80,
+ "Michael Smith": 46,
+ "William Sanguinet": 66,
+ "John Goulet": 66,
+ "Dana Ferranti": 56,
+ "Joseph Fehribach": 70,
+ "Dalin Tang": 73,
+ "Vadim Yakovlev": 99,
+ "Binan Gu": 85,
+ "Tatiana Doytchinova": 89,
+ "Wagner Zsolt Adam": 80,
+ "Mayer Humi": 43,
+ "Nathan Uricchio": 44,
+ "Burt Tilley": 83,
+ "Francesca Bernardi": 38,
+ "Dina Rassias": 87,
+ "Andre Nachbin": 38,
+ "Samuel Tripp": 62,
+ "William Martin": 95,
+ "Qingshuo Song": 53,
+ "Guanying Peng": 46,
+ "Brigitte Servatius": 75,
+ "Tharindu De Alwis": 82,
+ "Adam Sales": 48,
+ "Carly Thorp": 46,
+ "Zheyang Wu": 84,
+ "Fangfang Wang": 43,
+ "Buddika Peiris": 46,
+ "Nadeesha Jayaweera": 55,
+ "Stephan Sturm": 68,
+ "Gu Wang": 49,
+ "Barry Posterro": 40,
+ "Christopher Larsen": 62,
+ "Jeffrey Barden": 52,
+ "Marcus Sarkis-Martins": 86,
+ "Balgobin Nandram": 36,
+ "Adam Powell": 86,
+ "Ahmet Sabuncu": 50,
+ "Pradeep Radhakrishnan": 47,
+ "Vladimir Vantsevich": 53,
+ "Eben Cobb": 46,
+ "Pratap Rao": 72,
+ "Loris Fichera": 76,
+ "Jamal Yagoobi": 95,
+ "Mohammad Mahdi Agheli Hajiabadi": 55,
+ "Michael Fritschy": 38,
+ "Christopher Brown": 62,
+ "Paul Cotnoir": 75,
+ "Daniel Treku": 49,
+ "Jim Ryan": 85,
+ "Nima Kordzadeh": 84,
+ "Vance Wilson": 42,
+ "Bengisu Tulu": 98,
+ "Soussan Djamasbi": 88,
+ "Adrienne Hall-Phillips": 69,
+ "Farnoush Reshadi": 32,
+ "Charles Dougherty": 47,
+ "Donald Vota": 69,
+ "Patrick Crews": 71,
+ "Daniel Challas-Gimm": 93,
+ "James Conley": 57,
+ "Joseph Mazzocchi": 31,
+ "Kyle Tsaknopoulos": 61,
+ "Brajendra Mishra": 47,
+ "Thomas Christiansen": 96,
+ "Jonathan Blumhofer": 64,
+ "Monica Hatch Moysey": 63,
+ "Emmanuel Attah Poku": 65,
+ "Pieter Struyk": 37,
+ "Alan Vaudreuil": 84,
+ "Jason Davis": 68,
+ "Richard Lopez": 85,
+ "Snehalata Kadam": 87,
+ "John Lindholm": 67,
+ "Michael Elmes": 98,
+ "Brent French": 44,
+ "Steve Taylor": 35,
+ "Joseph Sarkis": 34,
+ "Walter Towner": 65,
+ "Sharon Johnson": 81,
+ "Sara Saberi": 34,
+ "Renata Konrad": 100,
+ "Izabela Stroe": 94,
+ "Nancy Burnham": 87,
+ "Kateryna Friedman": 90,
+ "Richard Quimby": 77,
+ "Thomas Noviello": 50,
+ "Kun-Ta Wu": 40,
+ "Qi Wen": 40,
+ "Rudra Kafle": 32,
+ "Ben Pollard": 97,
+ "Lyubov Titova": 41,
+ "Alex Zozulya": 89,
+ "William McCarthy": 64,
+ "Raisa Trubko": 92,
+ "Padmanabhan Aravind": 84,
+ "Richard Marchetti": 91,
+ "Jim Doyle": 90,
+ "Gia Davis": 60,
+ "Kaitlyn Schneider": 91,
+ "Angela Incollingo Rodriguez": 79,
+ "Stacy Shaw": 44,
+ "Erin Ottmar": 85,
+ "Shamim Hunt": 40,
+ "Greg Lewin": 97,
+ "Vincent Aloi": 78,
+ "Andre Rosendo": 86,
+ "Alexandros Lioulemes": 30,
+ "Akin Tatoglu": 76,
+ "Siamak Ghorbani Faal": 79,
+ "Daniel Montrallo Flickinger": 75,
+ "Jane Li": 97,
+ "John Nafziger": 30,
+ "Markus Nemitz": 36,
+ "Haichong Zhang": 86,
+ "Kevin Leahy": 84,
+ "James Brodovsky": 44,
+ "Navid Dadkhah Tehrani": 67,
+ "Lina Munoz-Marquez": 71,
+ "Aarti Madan": 43,
+ "Ingrid Matos-Nin": 31,
+ "Khalid Saeed": 87,
+ "Shelly Yarnie": 63,
+ "Robert Tranchina": 90,
+ "Christopher Piccirillo": 89,
+ "Robert Wheeler": 67,
+ "Bobbi Young": 60,
+ "Fred Robinson": 39,
+ "Mark Flanders": 56,
+ "Olivia Scanlon": 46,
+ "Laura Eckelman": 78,
+ "Matthew Kelly": 83,
+ "Jason Steele": 36,
+ "Dylan Foran": 41,
+ "Brenden Casey": 87,
+ "Matt Oney": 80,
+ "Lawrence Noble": 62,
+ "Kimberly Cosenza": 55,
+ "Christopher Robertson": 47,
+ "Courtney Chase": 41,
+ "Riley Naclerio": 76,
+ "Christopher Bartley": 31,
+ "Heather Ross": 33,
+ "Cailyn Straubel": 67,
+ "Cherise Galasso": 95,
+ "Brian Kelley": 56,
+ "Stephanie Riley-Schafer": 46,
+ "Brian Chabot": 41,
+ "Emily Mauro": 54,
+ "Adriana Owen": 42,
+ "Galen Holmes": 68,
+ "Paul Bennett": 45,
+ "Linda Bullock": 47,
+ "Christopher Gilmore": 92,
+ "Chad Gaylord": 98,
+ "Ann McCarron": 68,
+ "Paula Fitzpatrick": 39,
+ "Robin Benoit": 80,
+ "Diana Fiorentino": 51,
+ "Kathryn Moncrief": 64,
+ "Meng Le": 71,
+ "Shavaun Cloran": 51,
+ "Sandra Duguay": 49,
+ "Ryan Madan": 78,
+ "Sarah Riddick": 88,
+ "Gillian Smith": 92,
+ "Matthew Ahrens": 88,
+ "Taylor Andrews": 84,
+ "Herman Servatius": 10,
+ "Shubbhi Taneja": 75,
+ "Michael Engling": 89,
+ "Yu-Shan Sun": 68,
+ "Jennifer Mortensen": 83,
+ "Mark Sheahan": 0,
+ "Erin Solovey": 84,
+ "Lane Harrison": 0,
+ "Paul Delvy": 83,
+ "Micha Hofri": 20,
+ "Keith Pray": 73,
+ "Joshua Cuneo": 75,
+ "Rose Bohrer": 78,
+ "Rodica Neamtu": 84
+}
From cbf92a71e4f397af6e71411a1dad3633522bc6c5 Mon Sep 17 00:00:00 2001
From: Charles Tang
Date: Sat, 13 Jan 2024 14:10:59 -0500
Subject: [PATCH 3/8] readme
---
README.md | 92 ++++++++++++++++++++++++++++------------------------
Roadmap.png | Bin 0 -> 57627 bytes
2 files changed, 49 insertions(+), 43 deletions(-)
create mode 100644 Roadmap.png
diff --git a/README.md b/README.md
index 58beeac..04fc5fc 100644
--- a/README.md
+++ b/README.md
@@ -1,70 +1,76 @@
-# Getting Started with Create React App
+
+
+
+
+
Roadmap-WPI
-This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).
+
+ A universal solution to introduce you to WPI's major requirement system
Developed by WPI students for WPI students (GoatHack 2024).
+
+
+
-## Available Scripts
+### About
-In the project directory, you can run:
+Roadmap-WPI provides a clean, aesthetic visual solution to help incoming WPI students understand the major requirements system. The website is designed to be easy to use and understand, and is a great resource for students to use when planning their academic career by keeping track of their major requirements and progress as well as visualizing prerequisites and course offerings. This project was developed by Randy Huang, Tarun Eswar, Ajay Bhagavatula, Erica Dong, and Charles Tang for the GoatHacks 2024 hackathon at WPI.
-### `npm start`
+### Technical
+#### Technology Used
+
-The page will reload when you make changes.\
-You may also see any lint errors in the console.
+#### Local Hosting
-### `npm test`
+To run the project locally, you may clone this respository. You must have Node version 18+ installed on your machine.
-Launches the test runner in the interactive watch mode.\
-See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.
+```bash
+git clone https://github.com/WPI-Roadmap/client-side.git
+```
-### `npm run build`
+Then, install the dependencies.
-Builds the app for production to the `build` folder.\
-It correctly bundles React in production mode and optimizes the build for the best performance.
+```bash
+cd client-side
+npm install
+```
-The build is minified and the filenames include the hashes.\
-Your app is ready to be deployed!
+Finally, run the project.
-See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.
+```bash
+npm start
+```
-### `npm run eject`
+Go to `localhost:3000` to view the project.
-**Note: this is a one-way operation. Once you `eject`, you can't go back!**
+### Feature List
-If you aren't satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.
+- [x] Roadmap visualization for all majors (hierarchal diagram)
+- [x] Sync with OSCAR.wpi.edu and COURSELISTINGS.wpi.edu for up-to-date course offerings and professor/course ratings
+- [x] Tracking sheet digitization for helping you satisfy major requirements
+- [ ] LLM-based course recommendations based on your major, interests, and satisfaction with past courses
+- [ ] Profile syncing and WPI SSO
-Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you're on your own.
+### Contributing
-You don't have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn't feel obligated to use this feature. However we understand that this tool wouldn't be useful if you couldn't customize it when you are ready for it.
+We'd love to have your help in making Roadmap-WPI better. The project still has work to do before full production launch, but if there's an issue you'd like to see addressed sooner rather than later, let us know.
-## Learn More
+For any concerns, please open an [issue](https://github.com/WPI-Roadmap/client-side/issues), or feel free to, [fork the project and send a pull request](https://github.com/WPI-Roadmap/client-side/pulls).
-You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).
+
-To learn React, check out the [React documentation](https://reactjs.org/).
-### Code Splitting
-This section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting)
+### Versions
+* Version 1.0 (01/14/2024)
+ * Initial Release
+ * See [Commits history]
-### Analyzing the Bundle Size
+### License
-This section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size)
-### Making a Progressive Web App
+[![Open Source Love](https://badges.frapsoft.com/os/v2/open-source-200x33.png?v=103)](#)
-This section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app)
-### Advanced Configuration
-
-This section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration)
-
-### Deployment
-
-This section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment)
-
-### `npm run build` fails to minify
-
-This section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify)
+[![license](https://img.shields.io/github/license/mashape/apistatus.svg?style=for-the-badge)](https://github.com/tamzi/ReadMe-MasterTemplates/blob/master/LICENSE)
diff --git a/Roadmap.png b/Roadmap.png
new file mode 100644
index 0000000000000000000000000000000000000000..bc3cd8e72cb244613f7b8825ca93927463469d03
GIT binary patch
literal 57627
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