import React, { useState, useEffect } from "react"; import { View, TouchableOpacity, useWindowDimensions } from "react-native"; import { StateBox } from "./StateBox"; import { useDeviceOrientationChange } from "../../../stateBox/useDeviceOrientationChange"; import { getStationList2 } from "../../../lib/getStationList"; import { useCurrentTrain } from "../../../stateBox/useCurrentTrain"; import { SheetManager } from "react-native-actions-sheet"; import { trainPosition } from "../../../lib/trainPositionTextArray"; import { TrainPositionDataPush } from "../../発車時刻表/LED_inside_Component/TrainPositionDataPush"; import { getStationID } from "../../../lib/eachTrainInfoCoreLib/getStationData"; import { useStationList } from "../../../stateBox/useStationList"; export const TrainDataView = ({ currentTrainData, currentPosition, nearTrainIDList, openTrainInfo, mode = 0, navigate, }) => { const { stationList } = useStationList(); const { width, height } = useWindowDimensions(); const { isLandscape } = useDeviceOrientationChange(); const { inject } = useCurrentTrain(); const [mapsStationData, setMapsStationData] = useState(undefined); const [platformNumber, setPlatformNumber] = useState(); const [lineNumber, setLineNumber] = useState(); const [platformDescription, setPlatformDescription] = useState(); useEffect(() => { //currentTrainData.Pos = "鴨川~端岡"; //test if (!currentTrainData) return; fetch( `https://n8n.haruk.in/webhook/JR-shikoku-PosID-v3?PosId=${currentTrainData?.PosNum}&lineName=${currentTrainData?.Line}&StationName=${currentTrainData?.Pos}` ) .then((res) => res.json()) .then((data) => { if (!data) return; const {type, stationName, lineNumber, platformNumber, position, description} = data; if (type == "Station") { setLineNumber(lineNumber); setPlatformNumber(platformNumber); setPlatformDescription(description); } else { setLineNumber(undefined); setPlatformNumber(undefined); setPlatformDescription(undefined); } }); }, [currentTrainData]); useEffect(() => { getStationList2().then(setMapsStationData); }, []); const onLine = !!currentPosition?.toString().length; const trainPositionText = (trainData) => { const { isBetween, Pos: PosData } = trainPosition(trainData); const { from, to, Pos } = PosData; if (isBetween === true) return `${from}~${to}`; if (Pos == "") return ""; if (platformNumber) return `${Pos} ${platformNumber}番乗り場`; if (lineNumber) return `${Pos} ${lineNumber}番線`; }; const [dialog, setDialog] = useState(false); const [deleteDialog, setDeleteDialog] = useState(false); const [posInput, setPosInput] = useState(""); const [descInput, setDescInput] = useState(""); const [stationInput, setStationInput] = useState(""); const [stationNumberInput, setStationNumberInput] = useState(""); const [lineInput, setLineInput] = useState(""); return ( <> { const { isBetween, Pos } = trainPosition(currentTrainData); if (isBetween === true) { if ( platformNumber == undefined && platformDescription == undefined ) return; setStationInput(`${Pos.from}→${Pos.to}間`); setStationNumberInput( getStationID(currentTrainData?.Pos, stationList) ); setPosInput(platformNumber?.toString() || ""); setLineInput(lineNumber?.toString() || ""); setDeleteDialog(true); } else { setStationInput(Pos.Pos); setStationNumberInput( getStationID(currentTrainData?.Pos, stationList) ); setDescInput(platformDescription || ""); setPosInput(platformNumber?.toString() || ""); setLineInput(lineNumber?.toString() || ""); setDialog(true); } }} onPress={() => { if (!onLine) return; const test = []; Object.keys(mapsStationData).forEach((d) => { mapsStationData[d].forEach((x) => { if (x.StationNumber == currentPosition[0]) test.push({ line: d, station: x }); }); if (currentPosition[0] == "M12") { test.push({ line: "seto", station: { Station_JP: "児島", MyStation: "0" }, }); } }); if (!test.length) return; navigate("positions", { screen: "Apps" }); inject( `MoveDisplayStation('${test[0].line}_${test[0].station.MyStation}_${test[0].station.Station_JP}');document.getElementById("disp").insertAdjacentHTML("afterbegin", "
");` ); SheetManager.hide("EachTrainInfo"); }} > { if (nearTrainIDList.length == 0) return; openTrainInfo(nearTrainIDList[0]); }} > {nearTrainIDList.length == 0 ? ( ) : ( )} ); };