Skip to content

Commit 9eedf18

Browse files
committed
added fav button on the popup almost works
1 parent 0c3d969 commit 9eedf18

File tree

2 files changed

+29
-9
lines changed

2 files changed

+29
-9
lines changed

my-app/src/presenters/ListViewPresenter.jsx

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,31 @@
11
import React from 'react';
2-
import { observer} from "mobx-react-lite";
2+
import { observer } from "mobx-react-lite";
33
import { useState } from 'react';
44
import ListView from "../views/ListView.jsx";
55
import CoursePagePopup from '../views/Components/CoursePagePopup.jsx';
66
import PrerequisitePresenter from './PrerequisitePresenter.jsx';
77

88
const ListViewPresenter = observer(({ model }) => {
99

10+
11+
1012
const [isPopupOpen, setIsPopupOpen] = useState(false);
1113
const [selectedCourse, setSelectedCourse] = useState(null);
12-
const preP = <PrerequisitePresenter model={model} selectedCourse={selectedCourse}/>
13-
const popup = <CoursePagePopup isOpen={isPopupOpen} onClose={() => setIsPopupOpen(false)} course={selectedCourse} prerequisiteTree={preP}/>
14-
14+
const preP = <PrerequisitePresenter model={model} selectedCourse={selectedCourse} />
1515
const addFavourite = (course) => {
1616
model.addFavourite(course);
1717
}
1818
const removeFavourite = (course) => {
1919
model.removeFavourite(course);
2020
}
21+
const popup = <CoursePagePopup
22+
favouriteCourses={model.favourites}
23+
addFavourite={addFavourite}
24+
removeFavourite={removeFavourite}
25+
isOpen={isPopupOpen} onClose={() => setIsPopupOpen(false)}
26+
course={selectedCourse}
27+
prerequisiteTree={preP} />
28+
2129

2230
return <ListView
2331
courses={model.courses}

my-app/src/views/Components/CoursePagePopup.jsx

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import React, { useEffect, useRef } from 'react'
22

3-
function CoursePagePopup({ isOpen, onClose, course, prerequisiteTree }) {
3+
function CoursePagePopup({ favouriteCourses, addFavourite,
4+
removeFavourite, isOpen, onClose, course, prerequisiteTree }) {
45
const treeRef = useRef(null);
56
useEffect(() => {
67
const handleKeyDown = (event) => {
@@ -18,6 +19,15 @@ function CoursePagePopup({ isOpen, onClose, course, prerequisiteTree }) {
1819
};
1920
}, [isOpen, onClose]);
2021

22+
23+
const handleFavouriteClick = (course) => {
24+
if (favouriteCourses.some(fav => fav.code === course.code)) {
25+
removeFavourite(course);
26+
} else {
27+
addFavourite(course);
28+
}
29+
};
30+
2131
const handleTreeClick = () => {
2232
if (treeRef.current) {
2333
treeRef.current.focus(); // gives it focus
@@ -40,21 +50,23 @@ function CoursePagePopup({ isOpen, onClose, course, prerequisiteTree }) {
4050
<div>
4151
<h2 className="text-5xl font-extrabold text-[#2e2e4f] ">
4252
<span className="text-violet-700">{course.code}</span> - {course.name}
43-
<span className="ml-4 text-lg text-violet-700">({course.credits} Credits)</span>
53+
<span className="ml-4 text-lg text-violet-700 whitespace-nowrap">
54+
({course.credits} Credits)
55+
</span>
4456
</h2>
4557
<div className="my-6 h-1.5 w-full bg-violet-500"></div>
4658
</div>
4759
<div>
4860
<button
49-
className="text-yellow-500 cursor-pointer"
61+
className="text-yellow-500 bg-yellow-400 cursor-pointer"
5062
onClick={(e) => {
5163
e.stopPropagation(); // prevent popup from opening
5264
handleFavouriteClick(course.code);
5365
}}
5466
>
55-
{/* {model.favouriteCourses.includes(course.code)
67+
{favouriteCourses.includes(course.code)
5668
? 'Remove from Favourites'
57-
: 'Add to Favourites'} */}
69+
: 'Add to Favourites'}
5870
</button>
5971
</div>
6072

0 commit comments

Comments
 (0)