feat: successfully hooked up to our experimental backend api that provides course instructor data
This commit is contained in:
83
docs/main.js
83
docs/main.js
@@ -13,6 +13,17 @@ if (chartDiv.getAttribute('value') == 'invisible') {
|
|||||||
}
|
}
|
||||||
Chart.defaults.global.defaultFontColor = "#F8F0E5";
|
Chart.defaults.global.defaultFontColor = "#F8F0E5";
|
||||||
|
|
||||||
|
let gradeMapping = {
|
||||||
|
"A_Plus": "A",
|
||||||
|
"A_Minus": "A-",
|
||||||
|
"B_Plus": "B+",
|
||||||
|
"B_Minus": "B-",
|
||||||
|
"C_Plus": "C+",
|
||||||
|
"C_Minus": "C-",
|
||||||
|
"D_Plus": "D+",
|
||||||
|
"D_Minus": "D-"
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parse the input forms and determines if any fields are missing
|
* Parse the input forms and determines if any fields are missing
|
||||||
*/
|
*/
|
||||||
@@ -74,42 +85,44 @@ async function PapaParse(department, num, name, instructor, sem) {
|
|||||||
//Update to an array of URL options instead of a lengthy switch statement for readability
|
//Update to an array of URL options instead of a lengthy switch statement for readability
|
||||||
const url = semesterURLs[sem] || 'https://derec4.github.io/ut-grade-data/2022%20Fall.json';
|
const url = semesterURLs[sem] || 'https://derec4.github.io/ut-grade-data/2022%20Fall.json';
|
||||||
const response = await fetch(url);
|
const response = await fetch(url);
|
||||||
const cData = await response.json();
|
let cData = await response.json();
|
||||||
let selectedClass = cData.filter(cData => cData["Course Prefix"] == department);
|
let selectedClass = cData.filter(cData => cData["Course Prefix"] == department);
|
||||||
|
let usingExperimental = false;
|
||||||
|
|
||||||
const altUrl = new URL('https://ut-grade-data.vercel.app/v2/query');
|
if (instructor) {
|
||||||
|
const altUrl = new URL("https://ut-grade-data.vercel.app/v2/query");
|
||||||
const params = {
|
const params = {
|
||||||
department: department,
|
department: department,
|
||||||
sem: sem,
|
sem: sem,
|
||||||
num: num,
|
num: num,
|
||||||
professor: instructor
|
professor: instructor,
|
||||||
};
|
};
|
||||||
|
|
||||||
// Object.keys(params).forEach(key => {
|
Object.keys(params).forEach((key) => {
|
||||||
// if (params[key]) {
|
if (params[key]) {
|
||||||
// url.searchParams.append(key, params[key]);
|
altUrl.searchParams.append(key, params[key]);
|
||||||
// }
|
}
|
||||||
// });
|
});
|
||||||
|
|
||||||
// temp code below
|
console.log(altUrl);
|
||||||
const url2 = 'https://ut-grade-data.vercel.app/v2/query?department=Computer Science&sem=Fall 2023&num=439&professor=Norman';
|
|
||||||
|
|
||||||
// try {
|
try {
|
||||||
// const response = await fetch(altUrl);
|
const response = await fetch(altUrl);
|
||||||
// const data = await response.json();
|
const data = await response.json();
|
||||||
|
|
||||||
// if (data.length === 0) {
|
if (data.length === 0) {
|
||||||
// alert("No data found. Try again :(");
|
console.error("Error executing query :((( :", error);
|
||||||
// return;
|
return;
|
||||||
// }
|
}
|
||||||
|
|
||||||
// console.log(data);
|
selectedClass = data;
|
||||||
// } catch (error) {
|
usingExperimental = true;
|
||||||
// console.error("Error fetching data:", error);
|
} catch (error) {
|
||||||
// alert("An error occurred while fetching data. Please try again.");
|
console.error("Error fetching data:", error);
|
||||||
// }
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (sem.substring(0, 2) === 's2') {
|
if (!usingExperimental && sem.substring(0, 2) === 's2') {
|
||||||
/**
|
/**
|
||||||
* Summer names are really weird but we can safely assume the prefix of the semester
|
* Summer names are really weird but we can safely assume the prefix of the semester
|
||||||
* will not become "s3" within the next lifetime
|
* will not become "s3" within the next lifetime
|
||||||
@@ -120,7 +133,7 @@ async function PapaParse(department, num, name, instructor, sem) {
|
|||||||
selectedClass = cData.filter(cData => cData["Course Prefix"] == department)
|
selectedClass = cData.filter(cData => cData["Course Prefix"] == department)
|
||||||
.filter(cData => cData["Course Number"].includes(num.toString().toUpperCase()))
|
.filter(cData => cData["Course Number"].includes(num.toString().toUpperCase()))
|
||||||
}
|
}
|
||||||
} else {
|
} else if (!usingExperimental) {
|
||||||
selectedClass = selectedClass.filter(cData => cData["Course Number"] == num.toString().toUpperCase()).filter(cData => cData["Course Title"].includes(name));
|
selectedClass = selectedClass.filter(cData => cData["Course Number"] == num.toString().toUpperCase()).filter(cData => cData["Course Title"].includes(name));
|
||||||
if (selectedClass.length == 0) {
|
if (selectedClass.length == 0) {
|
||||||
// Possible that the class name was typed wrong; try again with just the course number
|
// Possible that the class name was typed wrong; try again with just the course number
|
||||||
@@ -152,7 +165,15 @@ async function PapaParse(department, num, name, instructor, sem) {
|
|||||||
'Other': 0
|
'Other': 0
|
||||||
};
|
};
|
||||||
|
|
||||||
let lableName = selectedClass[0]["Course Title"];
|
let lableName = usingExperimental ? selectedClass[0]["Course_Title"] : selectedClass[0]["Course Title"];
|
||||||
|
|
||||||
|
if (usingExperimental) {
|
||||||
|
for (let classObj of selectedClass) {
|
||||||
|
updateGradeDist(classObj, gradeDist);
|
||||||
|
}
|
||||||
|
console.log(gradeDist);
|
||||||
|
(gradeChart ? updateChart(lableName, gradeDist) : createChart(gradeDist, lableName));
|
||||||
|
} else {
|
||||||
let sameName = true;
|
let sameName = true;
|
||||||
for (i in selectedClass) {
|
for (i in selectedClass) {
|
||||||
let letterGrade = selectedClass[i]["Letter Grade"];
|
let letterGrade = selectedClass[i]["Letter Grade"];
|
||||||
@@ -171,6 +192,9 @@ async function PapaParse(department, num, name, instructor, sem) {
|
|||||||
(gradeChart ? updateChart(lableName, gradeDist) : createChart(gradeDist, lableName));
|
(gradeChart ? updateChart(lableName, gradeDist) : createChart(gradeDist, lableName));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* If the chart is in a state of existence, we update the data values
|
* If the chart is in a state of existence, we update the data values
|
||||||
*/
|
*/
|
||||||
@@ -231,3 +255,12 @@ function createChart(gradeDist, courseName) {
|
|||||||
chartDiv.style.display = '';
|
chartDiv.style.display = '';
|
||||||
formDiv.setAttribute("style", "grid-row: 1");
|
formDiv.setAttribute("style", "grid-row: 1");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function updateGradeDist(classObj, gradeDist) {
|
||||||
|
for (let key in classObj) {
|
||||||
|
if (key in gradeDist || key in gradeMapping) {
|
||||||
|
let normalizedKey = gradeMapping[key] || key;
|
||||||
|
gradeDist[normalizedKey] += classObj[key];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user