From cb94b545dc04a434903eec1915387c82f2e2d0d9 Mon Sep 17 00:00:00 2001 From: harukin-DeskMini Date: Thu, 26 Jan 2023 06:36:52 +0900 Subject: [PATCH] =?UTF-8?q?LEDVision=E3=81=AE=E3=82=A8=E3=83=A9=E3=83=BCfa?= =?UTF-8?q?llback=E5=AF=BE=E7=AD=96&=E5=A7=8B=E7=99=BA=E9=A7=85=E8=A1=A8?= =?UTF-8?q?=E8=A8=98=E3=81=AE=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/発車時刻表/LED_vidion.js | 76 +++++++++++++++--------- lib/getStationList.js | 12 ++++ 2 files changed, 60 insertions(+), 28 deletions(-) diff --git a/components/発車時刻表/LED_vidion.js b/components/発車時刻表/LED_vidion.js index 1767625..3dcb4d5 100644 --- a/components/発車時刻表/LED_vidion.js +++ b/components/発車時刻表/LED_vidion.js @@ -4,6 +4,7 @@ import { Switch } from "react-native-elements"; import { widthPercentageToDP as wp } from "react-native-responsive-screen"; import { customTrainDataDetector } from "../custom-train-data"; import { useInterval } from "../../lib/useInterval"; +import trainList from "../../assets/originData/trainList"; let diagramData = undefined; @@ -56,6 +57,7 @@ export default function LED_vision(props) { ) .then((response) => response.text()) .then((d) => { + if (d.indexOf("404 Not Found") != -1) throw Error; const val = d.replace("[\r\n", "").split(",\r\n"); let trainDiagram = {}; val.forEach((element) => { @@ -79,6 +81,21 @@ export default function LED_vision(props) { } }); setStationDiagram(returnData); + }) + .catch((d) => { + console.log("fallback"); + setTrainDiagram(trainList); + let returnData = {}; + if (!trainList) { + setStationDiagram(returnData); + return; + } + Object.keys(trainList).forEach((key) => { + if (trainList[key].match(props.station.Station_JP)) { + returnData[key] = trainList[key]; + } + }); + setStationDiagram(returnData); }); }, []); @@ -122,10 +139,14 @@ export default function LED_vision(props) { HeaderConfig ) .then((response) => response.json()) - .then((d) => d.map((x) => ({ num: x.TrainNum, delay: x.delay }))) + .then((d) => + d.map((x) => ({ num: x.TrainNum, delay: x.delay, Pos: x.Pos })) + ) .then(setCurrentTrain); - useEffect(getCurrentTrain, []); + useEffect(() => { + getCurrentTrain(); + }, []); useInterval(getCurrentTrain, 15000); @@ -145,6 +166,18 @@ export default function LED_vision(props) { return false; }; + const getTrainType = (data) => { + switch (data) { + case "Rapid": + return { color: "aqua", name: "快速" }; + case "LTDEXP": + return { color: "red", name: "特急" }; + case "NightLTDEXP": + return { color: "red", name: "寝台特急" }; + case "Normal": + return { color: "white", name: "普通列車" }; + } + }; return ( 6 ? 15 : 20, - color: (() => { - switch (train.type) { - case "Rapid": - return "aqua"; - case "LTDEXP": - return "red"; - case "NightLTDEXP": - return "red"; - case "Normal": - return "white"; - } - })(), + color: getTrainType(train.type).color, fontWeight: "bold", }} > {trainIDSwitch ? d.train - : (() => { - switch (train.type) { - case "Rapid": - return "快速"; - case "LTDEXP": - return "特急"; - case "NightLTDEXP": - return "寝台特急"; - case "Normal": - return "普通列車"; - } - })() + + : getTrainType(train.type).name + " " + train.trainName + (train.trainNumDistance == undefined @@ -268,10 +280,18 @@ export default function LED_vision(props) { }} > {(() => { - const delay = currentTrain.filter( + const current = currentTrain.filter( (a) => a.num == d.train - )[0].delay; + )[0]; + const delay = current.delay; switch (true) { + case delay == "入線": + if (current.Pos == props.station.Station_JP) { + return "当駅始発"; + } else { + return "発車前"; + } + case isNaN(delay): return delay; case delay == 0: diff --git a/lib/getStationList.js b/lib/getStationList.js index 7ada195..d2a4280 100644 --- a/lib/getStationList.js +++ b/lib/getStationList.js @@ -18,6 +18,18 @@ import train_lang from "../assets/originData/train_lang"; let status = undefined; +export const lineList = [ + "予讃線", + "松宇線", + "伊予灘線", + "土讃線", + "窪川線", + "高徳線", + "徳島線", + "鳴門線", + "瀬戸大橋線", +]; + export const getStationList = async (props) => { if (status) return status; //駅リストイニシャライズ