From 525fbaa717fe2d21b57b11b6254cb4af681bb68f Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Wed, 24 Sep 2025 10:48:34 +0000 Subject: [PATCH] =?UTF-8?q?=E6=8E=A8=E5=AE=9A=E4=BD=8D=E7=BD=AE=E7=A7=BB?= =?UTF-8?q?=E5=8B=95=E3=82=92=E4=BD=9C=E6=88=90=E3=80=81=E3=83=87=E3=82=B6?= =?UTF-8?q?=E3=82=A4=E3=83=B3=E3=82=92=E8=AA=BF=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Apps/FixedPositionBox/FixedTrainBox.tsx | 90 +++++++++++++++---- 1 file changed, 73 insertions(+), 17 deletions(-) diff --git a/components/Apps/FixedPositionBox/FixedTrainBox.tsx b/components/Apps/FixedPositionBox/FixedTrainBox.tsx index 3739c0e..852b60d 100644 --- a/components/Apps/FixedPositionBox/FixedTrainBox.tsx +++ b/components/Apps/FixedPositionBox/FixedTrainBox.tsx @@ -152,8 +152,7 @@ export const FixedTrain: FC = ({ stopStationIDList[ stopStationIDList.findIndex((d) => d.includes("U14")) - 1 ][0]; - } - else if (position[0] == "+Iyo") { + } else if (position[0] == "+Iyo") { position[0] = stopStationIDList[ stopStationIDList.findIndex((d) => d.includes("U14")) + 1 @@ -164,7 +163,7 @@ export const FixedTrain: FC = ({ stopStationIDList[ stopStationIDList.findIndex((d) => d.includes("U14")) + 1 ][0]; - }else if (position[1] == "-Iyo") { + } else if (position[1] == "-Iyo") { position[1] = stopStationIDList[ stopStationIDList.findIndex((d) => d.includes("U14")) - 1 @@ -178,6 +177,7 @@ export const FixedTrain: FC = ({ const [nextStationData, setNextStationData] = useState([]); const [untilStationData, setUntilStationData] = useState([]); + const [probably, setProbably] = useState(false); useEffect(() => { //棒線駅判定を入れて、棒線駅なら時間を見て分数がマイナスならcontinue; const points = findReversalPoints(currentPosition, stopStationIDList); @@ -186,18 +186,50 @@ export const FixedTrain: FC = ({ let searchCountFirst = points.findIndex((d) => d == true); let searchCountLast = points.findLastIndex((d) => d == true); console.log("searchCountBase", searchCountFirst, searchCountLast); + + const delayTime = train?.delay == "入線" ? 0 : train?.delay; + let additionalSkipCount = 0; for ( let searchCount = searchCountFirst; searchCount < points.length; searchCount++ ) { + console.log("searchCount", searchCount); + console.log(points.length); const nextPos = trainDataWidhThrough[searchCount]; + if (nextPos) { const [station, se, time] = nextPos.split(","); - if (se.includes("通")) continue; - else { + + if (searchCountFirst == searchCountLast) { setNextStationData(getStationDataFromName(station)); break; + } else { + let distanceMinute = 0; + if (time != "") { + const now = dayjs(); + const hour = parseInt(time.split(":")[0]); + const distanceTime = now + .hour(hour < 4 ? hour + 24 : hour) + .minute(parseInt(time.split(":")[1])); + distanceMinute = distanceTime.diff(now, "minute") + delayTime; + if (now.hour() < 4) { + if (hour < 4) { + distanceMinute = distanceMinute - 1440; + } + } + } + if (distanceMinute >= 0) { + if (se.includes("通")) { + continue; + } else { + setNextStationData(getStationDataFromName(station)); + break; + } + } else { + additionalSkipCount++; + continue; + } } } } @@ -209,6 +241,12 @@ export const FixedTrain: FC = ({ ) { trainList.push(trainDataWidhThrough[searchCount]); } + if (additionalSkipCount > 0) { + trainList = trainList.slice(additionalSkipCount); + setProbably(true); + } else { + setProbably(false); + } setUntilStationData(trainList); }, [currentPosition, trainDataWidhThrough]); const [ToData, setToData] = useState(""); @@ -402,18 +440,36 @@ export const FixedTrain: FC = ({ alignItems: "center", }} > - - {nextStationData[0]?.Station_JP == train?.Pos - ? "ただいま" - : "次は"} - + + + {nextStationData[0]?.Station_JP == train?.Pos + ? "ただいま" + : "次は"} + + {probably && ( + + (時刻推定) + + )} +