import React, { useEffect, useState } from "react"; import { View, LayoutAnimation, ScrollView, Linking, Text, TouchableOpacity, TouchableWithoutFeedback, TouchableHighlight, } from "react-native"; import { Ionicons, MaterialCommunityIcons } from "@expo/vector-icons"; import ActionSheet from "react-native-actions-sheet"; import LottieView from "lottie-react-native"; import trainList from "../../assets/originData/trainList"; import { lineList } from "../../lib/getStationList"; import { heightPercentageToDP } from "react-native-responsive-screen"; import lineColorList from "../../assets/originData/lineColorList"; export const EachTrainInfo = ({ setRef, data, navigate, originalStationList, openStationACFromEachTrainInfo, }) => { const [trainData, setTrainData] = useState([]); const stationList = originalStationList && lineList.map((d) => originalStationList[d].map((a) => ({ StationNumber: a.StationNumber, StationName: a.Station_JP, })) ); useEffect(() => { if (!data.trainNum) return; const TD = trainList[data.trainNum]; if (!TD) { setTrainData([]); return; } setTrainData(TD.split("#")); }, [data]); const getType = (string) => { switch (string) { case "express": return "特急"; case "rapid": return "快速"; default: return ""; } }; const migrateTrainName = (string) => { return string.replace("マリン", "マリンライナー"); }; return ( }> {data.limited ? getType(data.limited.split(":")[0]) + migrateTrainName(data.limited.split(":")[1] || "普通") : ""} {data.trainNum} {data.limited != undefined && getType(data.limited.split(":")[0]) && !data.limited.split(":")[1].match("サンポート") && ( { LayoutAnimation.easeInEaseOut(); //setLoadingDelayData(true); navigate("trainbase", { info: "train.html?tn=" + data.trainNum, }); setRef.current?.hide(); }} /> )} {/* ほげほげふがふが */} {trainData.map((i, index) => { const [station, se, time] = i.split(","); const Stations = stationList.map((a) => a.filter((d) => d.StationName == station) ); const StationNumbers = Stations && Stations.reduce((newArray, e) => { return newArray.concat(e); }, []) .filter((d) => d.StationNumber) .map((d) => d.StationNumber); const colorIDs = StationNumbers != null ? StationNumbers.map((d) => { return d.split("").filter((s) => "A" < s && s < "Z"); }).reduce((newArray, e) => { return newArray.concat(e); }, []) : []; const EachIDs = StationNumbers != null ? StationNumbers.map((d) => { return d .split("") .filter((s) => "0" <= s && s <= "9") .join(""); }) : []; return ( openStationACFromEachTrainInfo(station)} key={station} > {colorIDs.map((color, index) => ( {colorIDs[index]} {EachIDs[index]} ))} {station} {time} {se} ); })} ); };