From b8176d2f29149759fa41d6e5ae4845cc4eea0cab Mon Sep 17 00:00:00 2001 From: harukin-OneMix4 Date: Fri, 2 Feb 2024 12:11:32 +0900 Subject: [PATCH] =?UTF-8?q?=E8=A3=8F=E5=88=97=E8=BB=8A=E6=8E=A2=E7=B4=A2?= =?UTF-8?q?=E3=82=92=E5=A4=96=E9=83=A8=E3=81=AB=E5=87=BA=E5=8A=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ActionSheetComponents/EachTrainInfo.js | 44 ++----------------- stateBox/useBusAndTrainData.js | 31 +++++++++++++ 2 files changed, 35 insertions(+), 40 deletions(-) diff --git a/components/ActionSheetComponents/EachTrainInfo.js b/components/ActionSheetComponents/EachTrainInfo.js index 8b3feb4..4c81861 100644 --- a/components/ActionSheetComponents/EachTrainInfo.js +++ b/components/ActionSheetComponents/EachTrainInfo.js @@ -7,7 +7,6 @@ import { Text, TouchableOpacity, TouchableWithoutFeedback, - TouchableHighlight, Platform, } from "react-native"; import { Ionicons, MaterialCommunityIcons } from "@expo/vector-icons"; @@ -15,9 +14,7 @@ import ActionSheet, { SheetManager, useScrollHandlers, } from "react-native-actions-sheet"; -import { useSafeAreaInsets } from "react-native-safe-area-context"; import { AS } from "../../storageControl"; -import LottieView from "lottie-react-native"; import trainList from "../../assets/originData/trainList"; import { lineList } from "../../lib/getStationList"; import { @@ -31,7 +28,6 @@ import dayjs from "dayjs"; import { getTrainType } from "../../lib/getTrainType"; import { customTrainDataDetector } from "../custom-train-data"; import { useBusAndTrainData } from "../../stateBox/useBusAndTrainData"; -import { Swipeable } from "react-native-gesture-handler"; export const EachTrainInfo = (props) => { if (!props.payload) return <>; @@ -48,7 +44,7 @@ export const EachTrainInfo = (props) => { const [trainPositionSwitch, setTrainPositionSwitch] = useState("false"); const { currentTrain } = useCurrentTrain(); - const { initializeTrainPairList } = useBusAndTrainData(); + const { getInfluencedTrainData } = useBusAndTrainData(); const [currentTrainData, setCurrentTrainData] = useState([]); const [nearTrainIDList, setNearTrainIDList] = useState([]); @@ -59,36 +55,15 @@ export const EachTrainInfo = (props) => { //裏列車探索 useEffect(() => { - const trainPairList = initializeTrainPairList(); - - const returnArray = []; if (!data.trainNum) return; - if (trainPairList[data.trainNum]) { - returnArray.push(Object.keys(trainPairList[data.trainNum])[0]); - } - if ( - // 列番が4xxDまたは5xxDの場合はxxDの列番を検索 - 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)) { - // 列番がxxDの場合は4xxDと5xxDの列番を検索 - if (trainList["4" + data.trainNum]) returnArray.push("4" + data.trainNum); - if (trainList["5" + data.trainNum]) returnArray.push("5" + data.trainNum); - } + const [returnArray, TDArray] = getInfluencedTrainData(data.trainNum); setNearTrainIDList(returnArray); - if (!returnArray[0]) return; - const TD = trainList[returnArray[0]]; - if (!TD) return; - const TDArray = TD.split("#").filter((d) => d != ""); setShowNearTrain(TDArray); }, [data]); + useEffect(() => { if (trainData.length == 0) return; + if (showNearTrain.length == 0) return; showNearTrain.forEach((d) => { const [station, se, time] = d.split(","); @@ -673,9 +648,6 @@ export const EachTrainInfo = (props) => { points={points} currentTrainData={currentTrainData} openStationACFromEachTrainInfo={openStationACFromEachTrainInfo} - headAndTail={showNearTrain.map((d) => d.split(",")[0])} - openBackTrainInfo={openBackTrainInfo} - isConcatNear={isConcatNear} /> ) )} @@ -760,9 +732,6 @@ const StationButton = ({ points, currentTrainData, openStationACFromEachTrainInfo, - headAndTail, - openBackTrainInfo, - isConcatNear, }) => { const [station, se, time] = i.split(","); // 阿波池田,発,6:21 const Stations = stationList @@ -798,11 +767,6 @@ const StationButton = ({ .add(isNaN(currentTrainData?.delay) ? 0 : currentTrainData.delay, "minute"); const timeString = dates.format("HH:mm").split(":"); - const StationNames = Stations && Stations[0]?.StationName; - const [isConnected, setIsConnected] = useState( - headAndTail.includes(StationNames) - ); - const swipagleRef = useRef(null); return ( openStationACFromEachTrainInfo(station)} diff --git a/stateBox/useBusAndTrainData.js b/stateBox/useBusAndTrainData.js index 3c8311f..cbfaf86 100644 --- a/stateBox/useBusAndTrainData.js +++ b/stateBox/useBusAndTrainData.js @@ -1,10 +1,12 @@ import React, { createContext, useContext, useState } from "react"; +import trainList from "../assets/originData/trainList"; const initialState = { busAndTrainData: [], setBusAndTrainData: () => {}, trainPairData: [], setTrainPairData: () => {}, initializeTrainPairList: () => {}, + getInfluencedTrainData: () => {}, }; const BusAndTrainDataContext = createContext(initialState); @@ -23,6 +25,34 @@ export const BusAndTrainDataProvider = ({ children }) => { }); return trainPairList; }; + const getInfluencedTrainData = (trainNum) => { + const trainPairList = initializeTrainPairList(); + + const returnArray = []; + if (!trainNum) return; + if (trainPairList[trainNum]) { + returnArray.push(Object.keys(trainPairList[trainNum])[0]); + } + if ( + // 列番が4xxDまたは5xxDの場合はxxDの列番を検索 + new RegExp(/^4[1-9]\d\d[DM]$/).test(trainNum) || + new RegExp(/^5[1-7]\d\d[DM]$/).test(trainNum) + ) { + if (trainList[trainNum.substring(1)]) { + returnArray.push(trainNum.substring(1)); + } + } + if (new RegExp(/^[1-9]\d\d[DM]$/).test(trainNum)) { + // 列番がxxDの場合は4xxDと5xxDの列番を検索 + if (trainList["4" + trainNum]) returnArray.push("4" + trainNum); + if (trainList["5" + trainNum]) returnArray.push("5" + trainNum); + } + if (!returnArray[0]) return [[], []]; + const TD = trainList[returnArray[0]]; + if (!TD) return [[], []]; + const TDArray = TD.split("#").filter((d) => d != ""); + return [returnArray, TDArray]; + }; return ( { trainPairData, setTrainPairData, initializeTrainPairList, + getInfluencedTrainData, }} > {children}