import lineColorList from "@/assets/originData/lineColorList"; import { getStationID } from "@/lib/eachTrainInfoCoreLib/getStationData"; import { useAllTrainDiagram } from "@/stateBox/useAllTrainDiagram"; import { useCurrentTrain } from "@/stateBox/useCurrentTrain"; import { useStationList, StationProps } from "@/stateBox/useStationList"; import { useEffect, useState } from "react"; import { Text, TouchableOpacity, View, Image, Platform } from "react-native"; import { customTrainDataDetector } from "../custom-train-data"; import { getStringConfig, typeID } from "@/lib/getStringConfig"; import { getTrainType } from "@/lib/getTrainType"; import Constants from "expo-constants"; export const FixedPositionBox = () => { const { fixedPosition, setFixedPosition } = useCurrentTrain(); return ( {fixedPosition.type === "station" && ( )} {fixedPosition.type === "train" && ( )} ); }; export const FixedStation = ({ stationID }) => { const { fixedPosition, setFixedPosition } = useCurrentTrain(); const { getStationDataFromId } = useStationList(); const [station, setStation] = useState([]); useEffect(() => { const data = getStationDataFromId(stationID); setStation(data); }, [stationID]); console.log(station); const lineColor = station.length > 0 ? lineColorList[station[0]?.StationNumber.slice(0, 1)] : "white"; return ( { setFixedPosition({ type: null, value: null }); }} > {station.map((s) => { if (s.StationNumber === null) return null; return ( {s.StationNumber?.slice(0, 1)} {s.StationNumber?.slice(1)} ); })} {station[0]?.Station_JP} 駅情報固定中 次:15:00 快速マリン 岡山 ); }; export const FixedTrain = ({ trainID }) => { const { fixedPosition, setFixedPosition, currentTrain } = useCurrentTrain(); const { allCustomTrainData, allTrainDiagram } = useAllTrainDiagram(); const getTrainDataFromCurrentTrain = (trainNum: string) => { const customTrainData = customTrainDataDetector( trainNum, allCustomTrainData ); switch (customTrainData.type) { case "Normal": case "OneMan": const currentTrainData = currentTrain.filter((a) => a.num == trainNum); if (currentTrainData.length == 0) return customTrainData; else if (currentTrainData[0].Type.includes("rapid:")) { const typeText = currentTrainData[0].Type.split(":"); const returnData = { type: "Rapid", trainName: typeText[1].replace("\r", ""), trainIcon: null, trainNumDistance: null, info: "", }; return returnData; } return customTrainData; default: return customTrainData; } }; const [train, setTrain] = useState<{ Index: string; num: string; delay: string; Pos: string; PosNum: string; Direction: number; Type: string; Line: string; }>(null); const [customData, setCustomData] = useState<{ ToData: string; TrainNumber: string; id: string; img: string; isWanman: boolean; trainName: string; trainNumDistance: number; type: typeID; viaData: string; info?: string; uwasa?: string; }>(getTrainDataFromCurrentTrain(trainID)); useEffect(() => { setCustomData(getTrainDataFromCurrentTrain(trainID)); }, [currentTrain, trainID]); useEffect(() => { currentTrain.forEach((d) => { if (d.num == trainID) setTrain(d); }); }, [trainID, currentTrain]); const [ToData, setToData] = useState(""); useEffect(() => { if (customData.ToData && customData.ToData != "") { setToData(customData.ToData); } else { const base = allTrainDiagram[trainID]; if (!base) return; const data = base.split("#"); setToData(data[data.length - 2].split(",")[0]); } }, [customData, train]); const [stringConfig, setStringConfig] = useState([, ,]); useEffect(() => { const x = getStringConfig(customData.type, customData.TrainNumber); setStringConfig(x); }, [customData]); return ( { setFixedPosition({ type: null, value: null }); }} > {stringConfig[0]} {ToData}行 列車情報追跡中 次は どこですか ); };