[frontend]: Get train data directly from API
This commit is contained in:
@ -176,90 +176,16 @@ function App() {
|
||||
switch (item.objectType) {
|
||||
case "IrishRailTrain":
|
||||
objectTitle = "Irish Rail Train: " + item.trainCode;
|
||||
let trainType;
|
||||
switch (item.trainType) {
|
||||
case "M":
|
||||
trainType = "Mainline";
|
||||
icon = "mainline";
|
||||
break;
|
||||
case "S":
|
||||
trainType = "Suburban";
|
||||
icon = "suburban";
|
||||
break;
|
||||
case "D":
|
||||
trainType = "DART";
|
||||
icon = "dart";
|
||||
break;
|
||||
default:
|
||||
trainType = "Unknown";
|
||||
}
|
||||
icon = item.trainTypeFull + item.trainPunctualityStatus;
|
||||
|
||||
let trainStatus;
|
||||
switch (item.trainStatus) {
|
||||
case "R":
|
||||
trainStatus = "Running";
|
||||
break;
|
||||
|
||||
case "T":
|
||||
trainStatus = "Terminated";
|
||||
break;
|
||||
|
||||
case "N":
|
||||
trainStatus = "Not yet running";
|
||||
break;
|
||||
|
||||
default:
|
||||
trainStatus = "Unknown";
|
||||
}
|
||||
|
||||
const splitMessage = item.trainPublicMessage.split("\\n");
|
||||
const match = splitMessage[1].match(/(-?\d+)\s+mins\s+late/);
|
||||
const punctuality = match ? parseInt(match[1], 10) : NaN;
|
||||
let latenessMessage;
|
||||
let punctualityStr;
|
||||
|
||||
if (punctuality < 0) {
|
||||
punctualityStr = "early";
|
||||
} else if (punctuality === 0) {
|
||||
punctualityStr = "On time";
|
||||
} else if (punctuality > 0) {
|
||||
punctualityStr = "late";
|
||||
} else {
|
||||
punctualityStr = "N/A";
|
||||
}
|
||||
|
||||
if (punctualityStr === "early") {
|
||||
latenessMessage = -punctuality + " minute" + (punctuality === -1 ? "" : "s") + " early";
|
||||
icon += "OnTime";
|
||||
}
|
||||
else if (punctualityStr === "On time") {
|
||||
latenessMessage = punctualityStr;
|
||||
icon += "OnTime";
|
||||
}
|
||||
else if (punctualityStr === "late") {
|
||||
latenessMessage = punctuality + " minute" + (punctuality === 1 ? "" : "s") + " late";
|
||||
|
||||
if (trainStatus === "Running") {
|
||||
icon += "Late";
|
||||
}
|
||||
else {
|
||||
icon += "NotRunning";
|
||||
}
|
||||
}
|
||||
else {
|
||||
latenessMessage = "On time";
|
||||
icon += "NotRunning";
|
||||
if (item.trainStatusFull == "Terminated" || item.trainStatusFull == "Not yet running") {
|
||||
icon = item.trainTypeFull + "NotRunning";
|
||||
}
|
||||
|
||||
popupContent = (
|
||||
<IrishRailTrainPopup
|
||||
item={item}
|
||||
objectTitle={objectTitle}
|
||||
splitMessage={splitMessage}
|
||||
trainType={trainType}
|
||||
trainStatus={trainStatus}
|
||||
latenessMessage={latenessMessage}
|
||||
|
||||
toggleFavourite={toggleFavourite}
|
||||
favourites={favourites}
|
||||
/>
|
||||
@ -268,10 +194,10 @@ function App() {
|
||||
markerText = item.trainPublicMessage + " " + item.trainDirection;
|
||||
display =
|
||||
((item.latitude !== "0" && item.longitude !== "0") &&
|
||||
((showMainline && trainType == "Mainline") || (showSuburban && trainType == "Suburban") || (showDart && trainType == "DART")) &&
|
||||
((showRunning && trainStatus == "Running") || (showNotYetRunning && trainStatus == "Not yet running") || (showTerminated && trainStatus == "Terminated")) &&
|
||||
((trainStatus == "Running" && showEarly && punctualityStr == "early") || (trainStatus == "Running" && showOnTime && punctualityStr == "On time") || (trainStatus == "Running" && showLate && punctualityStr == "late")
|
||||
|| (trainStatus == "Not yet running" && showNotYetRunning) || (trainStatus == "Terminated" && showTerminated))) &&
|
||||
((showMainline && item.trainTypeFull == "Mainline") || (showSuburban && item.trainTypeFull == "Suburban") || (showDart && item.trainTypeFull == "DART")) &&
|
||||
((showRunning && item.trainStatusFull == "Running") || (showNotYetRunning && item.trainStatusFull == "Not yet running") || (showTerminated && item.trainStatusFull == "Terminated")) &&
|
||||
((item.trainStatusFull == "Running" && showEarly && item.trainPunctualityStatus == "early") || (item.trainStatusFull == "Running" && showOnTime && item.trainPunctualityStatus == "On time") || (item.trainStatusFull == "Running" && showLate && item.trainPunctualityStatus == "late")
|
||||
|| (item.trainStatusFull == "Not yet running" && showNotYetRunning) || (item.trainStatusFull == "Terminated" && showTerminated))) &&
|
||||
(numberInputValue && userLocationAvailable ? haversineDistance(userLocation, [item.latitude, item.longitude]) < numberInputValue : true) &&
|
||||
(showFaovouritesOnly ? favourites.IrishRailTrain.includes(item.trainCode) : true);
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
import React, { useState } from "react";
|
||||
import { useMap } from "react-leaflet";
|
||||
|
||||
const IrishRailTrainPopup = ({ item, objectTitle, trainStatus, trainType, latenessMessage, splitMessage, toggleFavourite, favourites }) => {
|
||||
const IrishRailTrainPopup = ({ item, objectTitle, toggleFavourite, favourites }) => {
|
||||
const [isFavourite, setIsFavourite] = useState(favourites.IrishRailTrain?.includes(item.trainCode));
|
||||
|
||||
const handleToggleFavourite = () => {
|
||||
@ -23,12 +23,12 @@ const IrishRailTrainPopup = ({ item, objectTitle, trainStatus, trainType, latene
|
||||
</button>
|
||||
</div>
|
||||
<ul>
|
||||
<li><b>Train Details:</b> {splitMessage[1].split("(")[0]}</li>
|
||||
<li><b>Train Type:</b> {trainType}</li>
|
||||
<li><b>Status:</b> {trainStatus}</li>
|
||||
<li><b>Train Details:</b> {item.trainDetails}</li>
|
||||
<li><b>Train Type:</b> {item.trainTypeFull}</li>
|
||||
<li><b>Status:</b> {item.trainStatusFull}</li>
|
||||
<li><b>Direction:</b> {item.trainDirection}</li>
|
||||
<li><b>Update:</b> {splitMessage[2]}</li>
|
||||
<li><b>Punctuality:</b> {latenessMessage}</li>
|
||||
<li><b>Update:</b> {item.trainUpdate}</li>
|
||||
<li><b>Punctuality:</b> {item.latenessMessage}</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
|
@ -37,17 +37,20 @@ const icons = new Map([
|
||||
["IrishRailStation", new Icon({ iconUrl: trainStationIconURL, iconSize: [24, 24] })],
|
||||
["IrishRailTrain", new Icon({ iconUrl: trainIconURL, iconSize: [38, 38] })],
|
||||
|
||||
["mainlineNotRunning", new Icon({ iconUrl: trainNotRunningIconURL, iconSize: [38, 38] })],
|
||||
["mainlineOnTime", new Icon({ iconUrl: trainOnTimeIconURL, iconSize: [38, 38] })],
|
||||
["mainlineLate", new Icon({ iconUrl: trainLateIconURL, iconSize: [38, 38] })],
|
||||
["MainlineNotRunning", new Icon({ iconUrl: trainNotRunningIconURL, iconSize: [38, 38] })],
|
||||
["Mainlineon-time", new Icon({ iconUrl: trainOnTimeIconURL, iconSize: [38, 38] })],
|
||||
["Mainlineearly", new Icon({ iconUrl: trainOnTimeIconURL, iconSize: [38, 38] })],
|
||||
["Mainlinelate", new Icon({ iconUrl: trainLateIconURL, iconSize: [38, 38] })],
|
||||
|
||||
["suburbanNotRunning", new Icon({ iconUrl: trainNotRunningIconURL, iconSize: [38, 38] })],
|
||||
["suburbanOnTime", new Icon({ iconUrl: trainOnTimeIconURL, iconSize: [38, 38] })],
|
||||
["suburbanLate", new Icon({ iconUrl: trainLateIconURL, iconSize: [38, 38] })],
|
||||
["SuburbanNotRunning", new Icon({ iconUrl: trainNotRunningIconURL, iconSize: [38, 38] })],
|
||||
["Suburbanon-time", new Icon({ iconUrl: trainOnTimeIconURL, iconSize: [38, 38] })],
|
||||
["Suburbanearly", new Icon({ iconUrl: trainOnTimeIconURL, iconSize: [38, 38] })],
|
||||
["Suburbanlate", new Icon({ iconUrl: trainLateIconURL, iconSize: [38, 38] })],
|
||||
|
||||
["dartNotRunning", new Icon({ iconUrl: dartNotRunningIconURL, iconSize: [38, 38] })],
|
||||
["dartOnTime", new Icon({ iconUrl: dartOnTimeIconURL, iconSize: [38, 38] })],
|
||||
["dartLate", new Icon({ iconUrl: dartLateIconURL, iconSize: [38, 38] })],
|
||||
["DARTNotRunning", new Icon({ iconUrl: dartNotRunningIconURL, iconSize: [38, 38] })],
|
||||
["DARTon-time", new Icon({ iconUrl: dartOnTimeIconURL, iconSize: [38, 38] })],
|
||||
["DARTearly", new Icon({ iconUrl: dartOnTimeIconURL, iconSize: [38, 38] })],
|
||||
["DARTlate", new Icon({ iconUrl: dartLateIconURL, iconSize: [38, 38] })],
|
||||
|
||||
["LuasStop", new Icon({ iconUrl: luasIconURL, iconSize: [38, 38] })],
|
||||
["LuasStopGreen", new Icon({ iconUrl: luasIconGreenURL, iconSize: [38, 38] })],
|
||||
|
Reference in New Issue
Block a user