裏列車探索を外部に出力
This commit is contained in:
parent
a6d8f9ac33
commit
b8176d2f29
@ -7,7 +7,6 @@ import {
|
|||||||
Text,
|
Text,
|
||||||
TouchableOpacity,
|
TouchableOpacity,
|
||||||
TouchableWithoutFeedback,
|
TouchableWithoutFeedback,
|
||||||
TouchableHighlight,
|
|
||||||
Platform,
|
Platform,
|
||||||
} from "react-native";
|
} from "react-native";
|
||||||
import { Ionicons, MaterialCommunityIcons } from "@expo/vector-icons";
|
import { Ionicons, MaterialCommunityIcons } from "@expo/vector-icons";
|
||||||
@ -15,9 +14,7 @@ import ActionSheet, {
|
|||||||
SheetManager,
|
SheetManager,
|
||||||
useScrollHandlers,
|
useScrollHandlers,
|
||||||
} from "react-native-actions-sheet";
|
} from "react-native-actions-sheet";
|
||||||
import { useSafeAreaInsets } from "react-native-safe-area-context";
|
|
||||||
import { AS } from "../../storageControl";
|
import { AS } from "../../storageControl";
|
||||||
import LottieView from "lottie-react-native";
|
|
||||||
import trainList from "../../assets/originData/trainList";
|
import trainList from "../../assets/originData/trainList";
|
||||||
import { lineList } from "../../lib/getStationList";
|
import { lineList } from "../../lib/getStationList";
|
||||||
import {
|
import {
|
||||||
@ -31,7 +28,6 @@ import dayjs from "dayjs";
|
|||||||
import { getTrainType } from "../../lib/getTrainType";
|
import { getTrainType } from "../../lib/getTrainType";
|
||||||
import { customTrainDataDetector } from "../custom-train-data";
|
import { customTrainDataDetector } from "../custom-train-data";
|
||||||
import { useBusAndTrainData } from "../../stateBox/useBusAndTrainData";
|
import { useBusAndTrainData } from "../../stateBox/useBusAndTrainData";
|
||||||
import { Swipeable } from "react-native-gesture-handler";
|
|
||||||
|
|
||||||
export const EachTrainInfo = (props) => {
|
export const EachTrainInfo = (props) => {
|
||||||
if (!props.payload) return <></>;
|
if (!props.payload) return <></>;
|
||||||
@ -48,7 +44,7 @@ export const EachTrainInfo = (props) => {
|
|||||||
const [trainPositionSwitch, setTrainPositionSwitch] = useState("false");
|
const [trainPositionSwitch, setTrainPositionSwitch] = useState("false");
|
||||||
|
|
||||||
const { currentTrain } = useCurrentTrain();
|
const { currentTrain } = useCurrentTrain();
|
||||||
const { initializeTrainPairList } = useBusAndTrainData();
|
const { getInfluencedTrainData } = useBusAndTrainData();
|
||||||
|
|
||||||
const [currentTrainData, setCurrentTrainData] = useState([]);
|
const [currentTrainData, setCurrentTrainData] = useState([]);
|
||||||
const [nearTrainIDList, setNearTrainIDList] = useState([]);
|
const [nearTrainIDList, setNearTrainIDList] = useState([]);
|
||||||
@ -59,36 +55,15 @@ export const EachTrainInfo = (props) => {
|
|||||||
|
|
||||||
//裏列車探索
|
//裏列車探索
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const trainPairList = initializeTrainPairList();
|
|
||||||
|
|
||||||
const returnArray = [];
|
|
||||||
if (!data.trainNum) return;
|
if (!data.trainNum) return;
|
||||||
if (trainPairList[data.trainNum]) {
|
const [returnArray, TDArray] = getInfluencedTrainData(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);
|
|
||||||
}
|
|
||||||
setNearTrainIDList(returnArray);
|
setNearTrainIDList(returnArray);
|
||||||
if (!returnArray[0]) return;
|
|
||||||
const TD = trainList[returnArray[0]];
|
|
||||||
if (!TD) return;
|
|
||||||
const TDArray = TD.split("#").filter((d) => d != "");
|
|
||||||
setShowNearTrain(TDArray);
|
setShowNearTrain(TDArray);
|
||||||
}, [data]);
|
}, [data]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (trainData.length == 0) return;
|
if (trainData.length == 0) return;
|
||||||
|
if (showNearTrain.length == 0) return;
|
||||||
showNearTrain.forEach((d) => {
|
showNearTrain.forEach((d) => {
|
||||||
const [station, se, time] = d.split(",");
|
const [station, se, time] = d.split(",");
|
||||||
|
|
||||||
@ -673,9 +648,6 @@ export const EachTrainInfo = (props) => {
|
|||||||
points={points}
|
points={points}
|
||||||
currentTrainData={currentTrainData}
|
currentTrainData={currentTrainData}
|
||||||
openStationACFromEachTrainInfo={openStationACFromEachTrainInfo}
|
openStationACFromEachTrainInfo={openStationACFromEachTrainInfo}
|
||||||
headAndTail={showNearTrain.map((d) => d.split(",")[0])}
|
|
||||||
openBackTrainInfo={openBackTrainInfo}
|
|
||||||
isConcatNear={isConcatNear}
|
|
||||||
/>
|
/>
|
||||||
)
|
)
|
||||||
)}
|
)}
|
||||||
@ -760,9 +732,6 @@ const StationButton = ({
|
|||||||
points,
|
points,
|
||||||
currentTrainData,
|
currentTrainData,
|
||||||
openStationACFromEachTrainInfo,
|
openStationACFromEachTrainInfo,
|
||||||
headAndTail,
|
|
||||||
openBackTrainInfo,
|
|
||||||
isConcatNear,
|
|
||||||
}) => {
|
}) => {
|
||||||
const [station, se, time] = i.split(","); // 阿波池田,発,6:21
|
const [station, se, time] = i.split(","); // 阿波池田,発,6:21
|
||||||
const Stations = stationList
|
const Stations = stationList
|
||||||
@ -798,11 +767,6 @@ const StationButton = ({
|
|||||||
.add(isNaN(currentTrainData?.delay) ? 0 : currentTrainData.delay, "minute");
|
.add(isNaN(currentTrainData?.delay) ? 0 : currentTrainData.delay, "minute");
|
||||||
const timeString = dates.format("HH:mm").split(":");
|
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 (
|
return (
|
||||||
<TouchableWithoutFeedback
|
<TouchableWithoutFeedback
|
||||||
onPress={() => openStationACFromEachTrainInfo(station)}
|
onPress={() => openStationACFromEachTrainInfo(station)}
|
||||||
|
@ -1,10 +1,12 @@
|
|||||||
import React, { createContext, useContext, useState } from "react";
|
import React, { createContext, useContext, useState } from "react";
|
||||||
|
import trainList from "../assets/originData/trainList";
|
||||||
const initialState = {
|
const initialState = {
|
||||||
busAndTrainData: [],
|
busAndTrainData: [],
|
||||||
setBusAndTrainData: () => {},
|
setBusAndTrainData: () => {},
|
||||||
trainPairData: [],
|
trainPairData: [],
|
||||||
setTrainPairData: () => {},
|
setTrainPairData: () => {},
|
||||||
initializeTrainPairList: () => {},
|
initializeTrainPairList: () => {},
|
||||||
|
getInfluencedTrainData: () => {},
|
||||||
};
|
};
|
||||||
|
|
||||||
const BusAndTrainDataContext = createContext(initialState);
|
const BusAndTrainDataContext = createContext(initialState);
|
||||||
@ -23,6 +25,34 @@ export const BusAndTrainDataProvider = ({ children }) => {
|
|||||||
});
|
});
|
||||||
return trainPairList;
|
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 (
|
return (
|
||||||
<BusAndTrainDataContext.Provider
|
<BusAndTrainDataContext.Provider
|
||||||
value={{
|
value={{
|
||||||
@ -31,6 +61,7 @@ export const BusAndTrainDataProvider = ({ children }) => {
|
|||||||
trainPairData,
|
trainPairData,
|
||||||
setTrainPairData,
|
setTrainPairData,
|
||||||
initializeTrainPairList,
|
initializeTrainPairList,
|
||||||
|
getInfluencedTrainData,
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{children}
|
{children}
|
||||||
|
Loading…
Reference in New Issue
Block a user