From 7492028a2157957dad65dbb76daead19e98e6acf Mon Sep 17 00:00:00 2001 From: harukin-OneMix4 Date: Mon, 15 Jan 2024 04:20:58 +0900 Subject: [PATCH] =?UTF-8?q?=E9=96=A2=E4=BF=82=E3=81=82=E3=82=8A=E3=81=9D?= =?UTF-8?q?=E3=81=86=E3=81=AA=E5=88=97=E8=BB=8A=E3=82=92=E3=83=94=E3=83=83?= =?UTF-8?q?=E3=82=AF=E3=82=A2=E3=83=83=E3=83=97=E3=81=99=E3=82=8B=E6=A9=9F?= =?UTF-8?q?=E8=83=BD=E3=82=92=E4=BB=AE=E4=BD=9C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ActionSheetComponents/EachTrainInfo.js | 61 ++++++++++++++++++- 1 file changed, 58 insertions(+), 3 deletions(-) diff --git a/components/ActionSheetComponents/EachTrainInfo.js b/components/ActionSheetComponents/EachTrainInfo.js index 711b439..78881ca 100644 --- a/components/ActionSheetComponents/EachTrainInfo.js +++ b/components/ActionSheetComponents/EachTrainInfo.js @@ -28,6 +28,8 @@ import lineColorList from "../../assets/originData/lineColorList"; import { useCurrentTrain } from "../../stateBox/useCurrentTrain"; import { checkDuplicateTrainData } from "../../lib/checkDuplicateTrainData"; import dayjs from "dayjs"; +import { getTrainType } from "../../lib/getTrainType"; +import { customTrainDataDetector } from "../custom-train-data"; export const EachTrainInfo = (props) => { if (!props.payload) return <>; @@ -46,7 +48,52 @@ export const EachTrainInfo = (props) => { const { currentTrain } = useCurrentTrain(); const [currentTrainData, setCurrentTrainData] = useState([]); + const [nearTrainIDList, setNearTrainIDList] = useState([]); + useEffect(() => { + const returnArray = []; + if (!data.trainNum) return; + if ( + new RegExp(/^4[1-9]\d\d[DM]$/).test(data.trainNum) || + new RegExp(/^5[1-7]\d\d[DM]$/).test(data.trainNum) + ) { + if (trainList[data.trainNum.substring(1)]) { + returnArray.push(data.trainNum.substring(1)); + } + } + if (new RegExp(/^[1-9]\d\d[DM]$/).test(data.trainNum)) { + if (trainList["4" + data.trainNum]) { + returnArray.push("4" + data.trainNum); + } + if (trainList["5" + data.trainNum]) { + returnArray.push("5" + data.trainNum); + } + } + setNearTrainIDList(returnArray); + }, [data]); + const openTrainInfo = (d) => { + const train = customTrainDataDetector(d); + let TrainNumber = ""; + if (train.trainNumDistance != undefined) { + const timeInfo = + parseInt(d.replace("M", "").replace("D", "")) - train.trainNumDistance; + TrainNumber = timeInfo + "号"; + } + const payload = { + data: { + trainNum: d, + limited: `${getTrainType(train.type).data}:${ + train.trainName + }${TrainNumber}`, + }, + navigate, + originalStationList, + from: "AllTrainDiagramView", + }; + SheetManager.show("EachTrainInfo", { + payload, + }); + }; useEffect(() => { setCurrentTrainData( checkDuplicateTrainData( @@ -302,9 +349,17 @@ export const EachTrainInfo = (props) => { : ""} - - {data.trainNum} - + { + nearTrainIDList.length && openTrainInfo(nearTrainIDList[0]); + }} + > + + {data.trainNum} + {nearTrainIDList.length ? "..." : ""} + + + {data.limited != undefined && getType(data.limited.split(":")[0]) && !data.limited.split(":")[1].match("サンポート") && (