From b0da71786a25137378e0712737d8243e19b8b806 Mon Sep 17 00:00:00 2001 From: Zach Florian Date: Wed, 15 Nov 2023 11:49:37 -0500 Subject: [PATCH] added in-line comments for readability --- class_registration_app/src/assets/main.css | 1 + .../src/components/CourseSearch.vue | 27 +++++++++++-------- .../src/components/DashBoard.vue | 19 +++++++------ .../src/components/NotFound.vue | 2 +- .../src/components/StartUp.vue | 27 ++++++++++--------- class_registration_app/tsconfig.node.json | 3 ++- class_registration_app/vite.config.ts | 3 ++- 7 files changed, 47 insertions(+), 35 deletions(-) diff --git a/class_registration_app/src/assets/main.css b/class_registration_app/src/assets/main.css index d5aaabe..ca09037 100644 --- a/class_registration_app/src/assets/main.css +++ b/class_registration_app/src/assets/main.css @@ -137,6 +137,7 @@ a, border-radius: 10px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); transition: transform 1s, box-shadow 1s; + color:#000 } .course-list-item:hover{ diff --git a/class_registration_app/src/components/CourseSearch.vue b/class_registration_app/src/components/CourseSearch.vue index 6c9ac26..e80f0a4 100644 --- a/class_registration_app/src/components/CourseSearch.vue +++ b/class_registration_app/src/components/CourseSearch.vue @@ -4,7 +4,8 @@ const AsyncComponent = defineAsyncComponent(() => import('./CourseSearch.vue') ); -interface CourseInfo { + +interface CourseInfo { //enter all course info parameters here to prevent TypeScript errors CourseId: string; CourseLocation: string; OpenStatus: boolean; @@ -12,21 +13,21 @@ interface CourseInfo { MaxStudents: number; StudentsEnrolled: number; Prerequisites: string; - Section: string; // added for section + Section: string; } function handleSearch() { + // for multiple searches... delete all previous results to populate new ones const elementsToRemove = document.querySelectorAll(`.${"course-list-item"}`); elementsToRemove.forEach(element => { element.remove(); }); - - console.log("button clicked"); //arn:aws:execute-api:us-east-1:671289147354:5prodolbi7/*/GET/courses + //API Gateway link const apiUrl = 'https://5prodolbi7.execute-api.us-east-1.amazonaws.com/Beta'; - + //using fetch instead of axios let courseJson = fetch(`${apiUrl}/courses`) .then(response => { if (response.ok) { @@ -35,13 +36,16 @@ function handleSearch() { throw "Error" } }).then(response => { - console.log(response.Items); + console.log(response.Items); //testing results + //must include type of element with typescript let searchbar = document.getElementById("search"); - + + //filter all courses retrieved from API with user input let filteredCourses = response.Items.filter(function (course: CourseInfo) { return course.CourseId.includes(searchbar.value.toUpperCase())} ); - + + //with every result, build a div that will display that information filteredCourses.forEach((Course: CourseInfo) => { let container = document.getElementById("container"); let div = document.createElement("div"); @@ -64,7 +68,7 @@ function handleSearch() { course_location.textContent = Course.CourseLocation; course_status.className = "course-status"; - if(Course.OpenStatus){ + if(Course.OpenStatus){ //course_status returns a bool course_status.textContent = "Enroll Status: Open"; }else{ course_status.textContent = "Enroll Status: Closed"; @@ -81,9 +85,10 @@ function handleSearch() { course_section.className = "course-section"; course_section.textContent = "Section: " + Course.Section; + //*****IMPORTANT - all classes are found in main.css under "assets" + //classes under style scoped are not reactive for some reason - - // Append the div to the container + // Append the divs to the container if (container != null){ container.appendChild(div); div.appendChild(course_name); diff --git a/class_registration_app/src/components/DashBoard.vue b/class_registration_app/src/components/DashBoard.vue index e71cfab..7477a9a 100644 --- a/class_registration_app/src/components/DashBoard.vue +++ b/class_registration_app/src/components/DashBoard.vue @@ -2,6 +2,7 @@