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