Skip to content

Commit b60a615

Browse files
committed
Merge branch 'styling' of https://github.com/InferenceKTH/Find-My-Next-Course into styling
2 parents 08b8a2b + 3a62c17 commit b60a615

File tree

2 files changed

+40
-13
lines changed

2 files changed

+40
-13
lines changed

my-app/src/presenters/ListViewPresenter.jsx

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,17 @@
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 }) => {
9-
9+
const addFavourite = (course) => {
10+
model.addFavourite(course);
11+
}
12+
const removeFavourite = (course) => {
13+
model.removeFavourite(course);
14+
}
1015
const handleFavouriteClick = (course) => {
1116
if (model.favourites.some(fav => fav.code === course.code)) {
1217
model.removeFavourite(course);
@@ -17,15 +22,16 @@ const ListViewPresenter = observer(({ model }) => {
1722

1823
const [isPopupOpen, setIsPopupOpen] = useState(false);
1924
const [selectedCourse, setSelectedCourse] = useState(null);
20-
const preP = <PrerequisitePresenter model={model} selectedCourse={selectedCourse}/>
21-
const popup = <CoursePagePopup isOpen={isPopupOpen} onClose={() => setIsPopupOpen(false)} course={selectedCourse} handleFavouriteClick={handleFavouriteClick} prerequisiteTree={preP}/>
25+
const preP = <PrerequisitePresenter model={model} selectedCourse={selectedCourse} />
26+
27+
const popup = <CoursePagePopup
28+
favouriteCourses={model.favourites}
29+
addFavourite={addFavourite}
30+
removeFavourite={removeFavourite}
31+
isOpen={isPopupOpen} onClose={() => setIsPopupOpen(false)}
32+
course={selectedCourse}
33+
prerequisiteTree={preP} />
2234

23-
const addFavourite = (course) => {
24-
model.addFavourite(course);
25-
}
26-
const removeFavourite = (course) => {
27-
model.removeFavourite(course);
28-
}
2935

3036
return <ListView
3137
courses={model.courses}

my-app/src/views/ListView.jsx

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,25 @@ function ListView(props) {
1212
));
1313
};
1414

15+
const handleFavouriteClick = (course) => {
16+
if (props.favouriteCourses.some(fav => fav.code === course.code)) {
17+
props.removeFavourite(course);
18+
} else {
19+
props.addFavourite(course);
20+
}
21+
};
22+
23+
1524
return (
1625
<div className="relative bg-white text-black p-2 flex flex-col gap-5 h-full overflow-auto">
1726
{coursesToDisplay.length > 0 ? (
1827
coursesToDisplay.map((course) => (
1928
<div
29+
onClick={() => {
30+
console.log('Clicked:', course); // check browser console
31+
props.setSelectedCourse(course);
32+
props.setIsPopupOpen(true);
33+
}}
2034
key={course.code}
2135
className="p-5 hover:bg-blue-100 flex items-center border border-b-black border-solid w-full rounded-lg cursor-pointer"
2236
>
@@ -34,7 +48,10 @@ function ListView(props) {
3448
{course.description.length > 150 && (
3549
<span
3650
className="text-blue-500 cursor-pointer"
37-
onClick={() => toggleReadMore(course.code)}
51+
onClick={(e) => {
52+
e.stopPropagation(); // Prevent the event from bubbling up.
53+
toggleReadMore(course.code);
54+
}}
3855
>
3956
{readMoreState[course.code]
4057
?
@@ -46,7 +63,10 @@ function ListView(props) {
4663
<div>
4764
<button
4865
className="text-yellow-500 cursor-pointer"
49-
onClick={() => props.handleFavouriteClick(course)}
66+
onClick={(e) => {
67+
e.stopPropagation(); // Prevent the event from bubbling up.
68+
handleFavouriteClick(course);
69+
}}
5070
>
5171
{props.favouriteCourses.some(fav => fav.code === course.code)
5272
?
@@ -66,8 +86,9 @@ function ListView(props) {
6686
color="#000061"
6787
/>
6888
)}
89+
{props.popUp}
6990
</div>
7091
);
7192
}
7293

73-
export default ListView;
94+
export default ListView;

0 commit comments

Comments
 (0)