From f64a7bb7b2c7d67fcb0f65fbed81057e122c807d Mon Sep 17 00:00:00 2001 From: Kieren Date: Mon, 11 Dec 2023 19:23:43 +1100 Subject: [PATCH 01/12] push --- overload/src/app/components/coursesList.tsx | 6 ++++- .../src/app/components/selectedCourses.tsx | 9 +++++-- .../src/app/components/termSelectDropDown.tsx | 24 ++++++++++++------- overload/src/app/home/page.tsx | 12 ++++++++-- 4 files changed, 37 insertions(+), 14 deletions(-) diff --git a/overload/src/app/components/coursesList.tsx b/overload/src/app/components/coursesList.tsx index 857c707..ac0c846 100644 --- a/overload/src/app/components/coursesList.tsx +++ b/overload/src/app/components/coursesList.tsx @@ -18,7 +18,11 @@ type Term = { course: Course; }; -export const CoursesList = async () => { +type CoursesListProps = { + selectedTerm: number +} + +export const CoursesList = async ({ selectedTerm }: CoursesListProps) => { //imitate delay await new Promise(resolve => setTimeout(resolve, 3000)); diff --git a/overload/src/app/components/selectedCourses.tsx b/overload/src/app/components/selectedCourses.tsx index 4b1cae7..0919203 100644 --- a/overload/src/app/components/selectedCourses.tsx +++ b/overload/src/app/components/selectedCourses.tsx @@ -1,11 +1,16 @@ +"use client" import SelectedCourse from "./selectedCourse"; import Dropdown from "./termSelectDropDown"; -export const SelectedCourses = () => { +type SelectedCoursesProps = { + handleSelectTerm: (term: number) => void; +} + +export const SelectedCourses = ({ handleSelectTerm }: SelectedCoursesProps) => { return (
- +
diff --git a/overload/src/app/components/termSelectDropDown.tsx b/overload/src/app/components/termSelectDropDown.tsx index 166141c..f27dfa5 100644 --- a/overload/src/app/components/termSelectDropDown.tsx +++ b/overload/src/app/components/termSelectDropDown.tsx @@ -1,24 +1,30 @@ +"use client" import React, { useState } from 'react'; -export default function Dropdown() { -// const [selectedOption, setSelectedOption] = useState(''); +type DropdownProps = { + handleSelectTerm: (term: number) => void; +} + +export default function Dropdown({ handleSelectTerm }: DropdownProps) { + const [selectedOption, setSelectedOption] = useState(1); -// const handleChange = (event: any) => { -// setSelectedOption(event.target.value); -// }; + const handleChange = (event: any) => { + setSelectedOption(event.target.value); + }; return (
- + */}
); } diff --git a/overload/src/app/home/page.tsx b/overload/src/app/home/page.tsx index a5100b1..b40fad2 100644 --- a/overload/src/app/home/page.tsx +++ b/overload/src/app/home/page.tsx @@ -1,7 +1,15 @@ +"use client" import SelectedCourses from "../components/selectedCourses"; import CoursesList from "../components/coursesList"; +import { useState } from "react"; export const Home = async () => { + const [selectedTerm, setSelectedTerm] = useState(1); + + const handleSelectTerm = (term: number) => { + setSelectedTerm(term); + } + return (
@@ -11,11 +19,11 @@ export const Home = async () => {
{/* Content for the 70% width div */} - +
{/* Content for the 30% width div */} - +
From 3dbd5e314662f5f53705d765cb701e3d0139d9bf Mon Sep 17 00:00:00 2001 From: Kieren Date: Tue, 12 Dec 2023 13:07:39 +1100 Subject: [PATCH 02/12] change --- .../src/app/components/selectedCourse.tsx | 9 ++++-- .../src/app/components/selectedCourses.tsx | 10 ++++--- .../src/app/components/termSelectDropDown.tsx | 4 +-- overload/src/app/home/page.tsx | 28 +++++++++++++++++-- 4 files changed, 40 insertions(+), 11 deletions(-) diff --git a/overload/src/app/components/selectedCourse.tsx b/overload/src/app/components/selectedCourse.tsx index e8909cd..5ec3a0b 100644 --- a/overload/src/app/components/selectedCourse.tsx +++ b/overload/src/app/components/selectedCourse.tsx @@ -1,7 +1,12 @@ -export const SelectedCourse = () => { +type SelectedCourseProps = { + courseCode: string + courseName: string +} + +export const SelectedCourse = ({ courseCode, courseName }: SelectedCourseProps) => { return (
- SelectedCourse + {courseCode}: {courseName}
) } diff --git a/overload/src/app/components/selectedCourses.tsx b/overload/src/app/components/selectedCourses.tsx index 0919203..59dd7d6 100644 --- a/overload/src/app/components/selectedCourses.tsx +++ b/overload/src/app/components/selectedCourses.tsx @@ -1,21 +1,23 @@ "use client" +import { Course } from "../home/page"; import SelectedCourse from "./selectedCourse"; import Dropdown from "./termSelectDropDown"; type SelectedCoursesProps = { + selectedCourses: Course[] handleSelectTerm: (term: number) => void; } -export const SelectedCourses = ({ handleSelectTerm }: SelectedCoursesProps) => { +export const SelectedCourses = ({ selectedCourses, handleSelectTerm }: SelectedCoursesProps) => { + const courses = selectedCourses.map((course) => ) + return (
- - - + {courses}
) diff --git a/overload/src/app/components/termSelectDropDown.tsx b/overload/src/app/components/termSelectDropDown.tsx index f27dfa5..8a25b1a 100644 --- a/overload/src/app/components/termSelectDropDown.tsx +++ b/overload/src/app/components/termSelectDropDown.tsx @@ -14,7 +14,7 @@ export default function Dropdown({ handleSelectTerm }: DropdownProps) { return (
- {/* */} +
); } diff --git a/overload/src/app/home/page.tsx b/overload/src/app/home/page.tsx index b40fad2..d1790a2 100644 --- a/overload/src/app/home/page.tsx +++ b/overload/src/app/home/page.tsx @@ -2,24 +2,46 @@ import SelectedCourses from "../components/selectedCourses"; import CoursesList from "../components/coursesList"; import { useState } from "react"; +import Navbar from "../components/NavBar"; + +export type Course = { + courseCode: string + courseName: string +} export const Home = async () => { - const [selectedTerm, setSelectedTerm] = useState(1); + const [selectedTerm, setSelectedTerm] = useState(1); + const [selectedCourses, setSelectedCourses] = useState([ + { + courseCode: "COMP1511", + courseName: "Programming fundementalss" + } + ]) const handleSelectTerm = (term: number) => { setSelectedTerm(term); } + const handleSelectCourse = (course: Course) => { + const currentlySelectedCourses = [...selectedCourses] + if (currentlySelectedCourses.length > 2) return; + currentlySelectedCourses.push(course); + setSelectedCourses(currentlySelectedCourses); + } return (
+ {/*
+ hello +
*/} +
- top +
{/* Content for the 70% width div */} - +
{/* Content for the 30% width div */} From 7d6fcd96e1a3ce9517c12611f422286ea54e9343 Mon Sep 17 00:00:00 2001 From: FlyingChilli04 Date: Tue, 12 Dec 2023 21:04:52 +1100 Subject: [PATCH 03/12] added filter implementation --- overload/src/app/CourseFilter.tsx | 38 +++++++++++++++++++++++ overload/src/app/components/SearchBar.tsx | 20 +++++++++++- overload/src/app/course-rating/page.tsx | 12 ++++++- 3 files changed, 68 insertions(+), 2 deletions(-) create mode 100644 overload/src/app/CourseFilter.tsx diff --git a/overload/src/app/CourseFilter.tsx b/overload/src/app/CourseFilter.tsx new file mode 100644 index 0000000..183b311 --- /dev/null +++ b/overload/src/app/CourseFilter.tsx @@ -0,0 +1,38 @@ +'use client' +import React from 'react'; + +export const CourseFilter = (prop) => { + // const [isChecked, setIsChecked] = React.useState(false); + const handleCheckboxChange = () => { + setIsChecked(prev => !prev); + }; + + return ( +
+ + + +
+ ) +} \ No newline at end of file diff --git a/overload/src/app/components/SearchBar.tsx b/overload/src/app/components/SearchBar.tsx index 14fdec8..c6c9693 100644 --- a/overload/src/app/components/SearchBar.tsx +++ b/overload/src/app/components/SearchBar.tsx @@ -1,6 +1,7 @@ 'use client'; import React from 'react'; import CourseCard from './CourseCard'; +import { CourseFilter } from '../CourseFilter'; type Course = { courseCode: string; @@ -14,7 +15,18 @@ type Term = { course: Course; }; -export const SearchBar = () => { +type FilterObject = { + term: string; + isChecked: boolean; +} + +type SearchBarProps = { + setFilterOn: React.Dispatch>; + filterOn: FilterObject[]; +}; + + +export const SearchBar = ({filterOn, setFilterOn}: SearchBarProps) => { const [searchTerm, setSearchTerm] = React.useState(''); const [dataList, setDataList] = React.useState([]); @@ -58,7 +70,13 @@ export const SearchBar = () => { onChange={(e) => setSearchTerm(e.target.value)} />
+
    {courseCards}
); }; + +// pull filter +// for each thingy \ No newline at end of file diff --git a/overload/src/app/course-rating/page.tsx b/overload/src/app/course-rating/page.tsx index 6732366..517eab6 100644 --- a/overload/src/app/course-rating/page.tsx +++ b/overload/src/app/course-rating/page.tsx @@ -1,11 +1,21 @@ import React from 'react' import { SearchBar } from "../components/SearchBar" +type FilterObject = { + term: string; + isChecked: boolean; +} + export default function CourseRatingPage() { + const [filterOn, setFilterOn] = React.useState([{term: 'Term 1', isChecked: false}, , {term: 'Term 2', isChecked: false}, {term: 'Term 3', isChecked: false}]); + return (
{/* */}

OverLoad

- + {/* */}
) From 07e7ee2902cf49dcd5ae1f9dad178d21f19e410c Mon Sep 17 00:00:00 2001 From: FlyingChilli04 Date: Tue, 12 Dec 2023 21:34:17 +1100 Subject: [PATCH 04/12] attempted to fix filter --- overload/src/app/CourseFilter.tsx | 21 +++++++++++++++------ overload/src/app/components/SearchBar.tsx | 1 + overload/src/app/course-rating/page.tsx | 8 ++------ 3 files changed, 18 insertions(+), 12 deletions(-) diff --git a/overload/src/app/CourseFilter.tsx b/overload/src/app/CourseFilter.tsx index 183b311..35d8928 100644 --- a/overload/src/app/CourseFilter.tsx +++ b/overload/src/app/CourseFilter.tsx @@ -1,10 +1,19 @@ 'use client' import React from 'react'; -export const CourseFilter = (prop) => { - // const [isChecked, setIsChecked] = React.useState(false); +type FilterObject = { + term: string; + isChecked: boolean; +} + +type CourseFilterProps = { + filterOn: FilterObject; + setFilterOn: React.Dispatch>; +} + +export const CourseFilter = ({filterOn, setFilterOn}: CourseFilterProps) => { const handleCheckboxChange = () => { - setIsChecked(prev => !prev); + setFilterOn(prev => !prev); }; return ( @@ -12,7 +21,7 @@ export const CourseFilter = (prop) => {
    {courseCards}
diff --git a/overload/src/app/course-rating/page.tsx b/overload/src/app/course-rating/page.tsx index 517eab6..f0e66e3 100644 --- a/overload/src/app/course-rating/page.tsx +++ b/overload/src/app/course-rating/page.tsx @@ -1,13 +1,9 @@ +'use client'; import React from 'react' import { SearchBar } from "../components/SearchBar" -type FilterObject = { - term: string; - isChecked: boolean; -} export default function CourseRatingPage() { - const [filterOn, setFilterOn] = React.useState([{term: 'Term 1', isChecked: false}, , {term: 'Term 2', isChecked: false}, {term: 'Term 3', isChecked: false}]); - + const [filterOn, setFilterOn] = React.useState([{term: 'Term 1', isChecked: false}, {term: 'Term 2', isChecked: false}, {term: 'Term 3', isChecked: false}]); return (
{/* */} From b76d942c151604e3b9a32efca1e70087ef015f47 Mon Sep 17 00:00:00 2001 From: FlyingChilli04 Date: Tue, 12 Dec 2023 21:47:23 +1100 Subject: [PATCH 05/12] Incorrect implementation for filter --- overload/src/app/CourseFilter.tsx | 10 +++++----- overload/src/app/components/SearchBar.tsx | 16 ++++++++++++++++ 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/overload/src/app/CourseFilter.tsx b/overload/src/app/CourseFilter.tsx index 35d8928..68f8d36 100644 --- a/overload/src/app/CourseFilter.tsx +++ b/overload/src/app/CourseFilter.tsx @@ -7,13 +7,13 @@ type FilterObject = { } type CourseFilterProps = { - filterOn: FilterObject; + filterOn: FilterObject[]; setFilterOn: React.Dispatch>; } export const CourseFilter = ({filterOn, setFilterOn}: CourseFilterProps) => { const handleCheckboxChange = () => { - setFilterOn(prev => !prev); + setFilterOn([{term: 'Term 1', isChecked: !filterOn[0].isChecked}, {term: 'Term 2', isChecked: !filterOn[1].isChecked}, {term: 'Term 3', isChecked: !filterOn[2].isChecked}]); }; return ( @@ -21,7 +21,7 @@ export const CourseFilter = ({filterOn, setFilterOn}: CourseFilterProps) => {