[frontend]: Add 'Favourite' button to TrainStationPopup

This commit is contained in:
2025-03-14 20:26:11 +00:00
parent e95ee3e6ba
commit d26df25dd5
2 changed files with 24 additions and 4 deletions

View File

@ -275,7 +275,12 @@ function App() {
case "IrishRailStation":
objectTitle = item.trainStationDesc + " Train Station";
popupContent = (
<TrainStationPopup item={item} objectTitle={objectTitle} />
<TrainStationPopup
item={item}
objectTitle={objectTitle}
toggleFavourite={toggleFavourite}
favourites={favourites}
/>
);
markerText = item.trainStationCode + " " + item.trainStationDesc;

View File

@ -1,7 +1,14 @@
import React, { useState, useRef } from "react";
import { useMap } from "react-leaflet";
const TrainStationPopup = ({ item, objectTitle }) => {
const TrainStationPopup = ({ item, objectTitle, toggleFavourite, favourites }) => {
const [isFavourite, setIsFavourite] = useState(favourites.IrishRailStation?.includes(item.trainStationCode));
const handleToggleFavourite = () => {
toggleFavourite("IrishRailStation", item.trainStationCode);
setIsFavourite((prev) => !prev);
};
const [trainInfo, setTrainInfo] = useState("");
const map = useMap(); // Access the Leaflet map instance
@ -62,7 +69,15 @@ const TrainStationPopup = ({ item, objectTitle }) => {
return (
<div>
<h3>{objectTitle}</h3>
<div style={{display: "flex", justifyContent: "space-between", alignItems: "center"}}>
<h3>{objectTitle}</h3>
<button
onClick={handleToggleFavourite}
style={{background: "white", border: "none", fontSize: "20px", cursor: "pointer"}}
>
{isFavourite ? "⭐" : "☆"}
</button>
</div>
<ul>
<li><b>Train Station Name:</b> {item.trainStationDesc}</li>
<li><b>Train Station ID:</b> {item.trainStationID}</li>
@ -83,7 +98,7 @@ const TrainStationPopup = ({ item, objectTitle }) => {
Load incoming trains
</button>
<div
dangerouslySetInnerHTML={{ __html: trainInfo }}
dangerouslySetInnerHTML={{__html: trainInfo}}
style={{
marginTop: "10px",
maxHeight: "200px", // limit popup height