import React, { useState, useEffect } from "react"; import { View, Text, TouchableOpacity, FlatList, KeyboardAvoidingView, TextInput, Platform, Keyboard, } from "react-native"; import { useAllTrainDiagram } from "../stateBox/useAllTrainDiagram"; import { customTrainDataDetector } from "./custom-train-data"; import { getStationList } from "../lib/getStationList"; import { getTrainType } from "../lib/getTrainType"; import { SheetManager } from "react-native-actions-sheet"; import { useNavigation } from "@react-navigation/native"; export default function AllTrainDiagramView() { const { navigate } = useNavigation(); const { allTrainDiagram } = useAllTrainDiagram(); const [originalStationList, setOriginalStationList] = useState(); // 第一要素 const [keyList, setKeyList] = useState(); // 第二要素 useEffect(() => getStationList().then(setOriginalStationList), []); useEffect( () => allTrainDiagram && setKeyList(Object.keys(allTrainDiagram)), [] ); const [input, setInput] = useState(""); // 文字入力 const [keyBoardVisible, setKeyBoardVisible] = useState(false); useEffect(() => { const showSubscription = Keyboard.addListener("keyboardDidShow", () => { setKeyBoardVisible(true); }); const hideSubscription = Keyboard.addListener("keyboardDidHide", () => { setKeyBoardVisible(false); }); return () => { showSubscription.remove(); hideSubscription.remove(); }; }, []); const openTrainInfo = (d) => { const train = customTrainDataDetector(d); let TrainNumber = ""; if (train.trainNumDistance != undefined) { const timeInfo = parseInt(d.replace("M", "").replace("D", "")) - train.trainNumDistance; TrainNumber = timeInfo + "号"; } const payload = { data: { trainNum: d, limited: `${getTrainType(train.type).data}:${ train.trainName }${TrainNumber}`, }, navigate, originalStationList, from: "AllTrainDiagramView", }; SheetManager.show("EachTrainInfo", { payload, }); }; return ( d.includes(input))} renderItem={({ item }) => ( )} keyExtractor={(item) => item} initialNumToRender={100} /> { setKeyBoardVisible(true); }} onEndEditing={() => {}} onChange={(ret) => { setInput(ret.nativeEvent.text); }} value={input} style={{ flex: 1 }} /> navigate("menu")} > 閉じる ); } const Item = ({ id, openTrainInfo }) => { return ( openTrainInfo(id)} > {id} ); };