列車の現在地情報から列車位置情報にジャンプできるように変更

This commit is contained in:
harukin-expo-dev-env
2024-03-17 18:41:51 +00:00
parent 4a44ab5628
commit c0e0039bfb
6 changed files with 72 additions and 22 deletions

View File

@@ -1,7 +1,10 @@
import React from "react";
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/getStationList2";
import { useCurrentTrain } from "../../../stateBox/useCurrentTrain";
import { SheetManager } from "react-native-actions-sheet";
export const TrainDataView = ({
currentTrainData,
@@ -9,10 +12,16 @@ export const TrainDataView = ({
nearTrainIDList,
openTrainInfo,
mode = 0,
navigate,
}) => {
const { width, height } = useWindowDimensions();
const { isLandscape } = useDeviceOrientationChange();
const { webview, getCurrentTrain } = useCurrentTrain();
const [mapsStationData, setMapsStationData] = useState(undefined);
useEffect(() => {
getStationList2().then(setMapsStationData);
}, []);
const onLine = !!currentPosition?.toString().length;
return (
<View
style={{
@@ -23,23 +32,49 @@ export const TrainDataView = ({
flex: 1,
}}
>
<StateBox
mode={mode}
title={`現在地 ${currentPosition.toString()}`}
text={
currentTrainData?.Pos.match("")
? `${
currentTrainData?.Pos.replace("(下り)", "")
.replace("(上り)", "")
.split("")[0]
}${
currentTrainData?.Pos.replace("(下り)", "")
.replace("(上り)", "")
.split("")[1]
}`
: currentTrainData?.Pos
}
/>
<TouchableOpacity
style={{ flex: 1, flexDirection: "row" }}
disabled={!onLine}
onPress={() => {
const test = [];
Object.keys(mapsStationData).forEach((d) => {
mapsStationData[d].forEach((x) => {
if (x.StationNumber == currentPosition[0])
test.push({ line: d, station: x });
});
});
if (!test.length) return;
webview.current?.injectJavaScript(
`MoveDisplayStation('${test[0].line}_${test[0].station.MyStation}_${test[0].station.Station_JP}')`
);
navigate("Apps");
SheetManager.hide("EachTrainInfo");
}}
>
<StateBox
mode={mode}
title={`現在地 ${currentPosition?.toString()}${onLine ? "▶️" : ""}`}
text={
currentTrainData?.Pos.match("")
? `${
currentTrainData?.Pos.replace("(下り)", "")
.replace("(上り)", "")
.split("")[0]
}${
currentTrainData?.Pos.replace("(下り)", "")
.replace("(上り)", "")
.split("")[1]
}`
: currentTrainData?.Pos
}
style={
onLine
? { borderWidth: 1, borderColor: "red", borderStyle: "solid" }
: {}
}
/>
</TouchableOpacity>
<View style={{ flex: 1, flexDirection: mode == 2 ? "row" : "column" }}>
<View style={{ flex: 1, flexDirection: "row" }}>
<StateBox