現在地表示をリアルタイム更新するように変更

This commit is contained in:
harukin-OneMix4
2024-01-02 00:18:54 +09:00
parent a4e85ff2e6
commit 3ca91f402e
8 changed files with 72 additions and 63 deletions

View File

@@ -24,6 +24,8 @@ import {
widthPercentageToDP,
} from "react-native-responsive-screen";
import lineColorList from "../../assets/originData/lineColorList";
import { useCurrentTrain } from "../../stateBox/useCurrentTrain";
import { checkDuplicateTrainData } from "../../lib/checkDuplicateTrainData";
export const EachTrainInfo = (props) => {
if (!props.payload) return <></>;
@@ -40,6 +42,18 @@ export const EachTrainInfo = (props) => {
const [trainPositionSwitch, setTrainPositionSwitch] = useState("false");
const { currentTrain } = useCurrentTrain();
const [currentTrainData, setCurrentTrainData] = useState([]);
useEffect(() => {
setCurrentTrainData(
checkDuplicateTrainData(
currentTrain.filter((d) => d.num == data.trainNum)
)
);
}, [currentTrain]);
useEffect(() => {
//列車現在地アイコン表示スイッチ
AS.getItem("trainPositionSwitch")
@@ -65,17 +79,17 @@ export const EachTrainInfo = (props) => {
return Station.map((d) => d.StationNumber)[0];
};
useEffect(() => {
//data.trainData.Pos = "鴨川~端岡"; //test
if (!data.trainData?.Pos) return;
if (data.trainData?.Pos.match("")) {
const pos = data.trainData?.Pos.replace("(下り)", "")
//currentTrainData.Pos = "鴨川~端岡"; //test
if (!currentTrainData?.Pos) return;
if (currentTrainData?.Pos.match("")) {
const pos = currentTrainData?.Pos.replace("(下り)", "")
.replace("(上り)", "")
.split("");
setCurrentPosition([getStationData(pos[0]), getStationData(pos[1])]);
} else {
setCurrentPosition([getStationData(data.trainData?.Pos)]);
setCurrentPosition([getStationData(currentTrainData?.Pos)]);
}
}, [data.trainData]);
}, [currentTrainData]);
const stationList =
originalStationList &&
@@ -339,7 +353,7 @@ export const EachTrainInfo = (props) => {
現在地 {currentPosition.toString()}
</Text>
<View style={{ flex: 1 }} />
{data.trainData?.Pos && data.trainData?.Pos.match("") ? (
{currentTrainData?.Pos && currentTrainData?.Pos.match("") ? (
<>
<Text
style={{
@@ -349,7 +363,7 @@ export const EachTrainInfo = (props) => {
}}
>
{
data.trainData?.Pos.replace("(下り)", "")
currentTrainData?.Pos.replace("(下り)", "")
.replace("(上り)", "")
.split("")[0]
}
@@ -365,7 +379,7 @@ export const EachTrainInfo = (props) => {
}}
>
{
data.trainData?.Pos.replace("(下り)", "")
currentTrainData?.Pos.replace("(下り)", "")
.replace("(上り)", "")
.split("")[1]
}
@@ -379,7 +393,7 @@ export const EachTrainInfo = (props) => {
textAlign: "right",
}}
>
{data.trainData?.Pos}
{currentTrainData?.Pos}
</Text>
)}
</View>
@@ -394,7 +408,7 @@ export const EachTrainInfo = (props) => {
}}
>
<Text style={{ fontSize: 15, color: "#0099CC" }}>
{isNaN(data.trainData?.delay) ? "状態" : "遅延時分"}
{isNaN(currentTrainData?.delay) ? "状態" : "遅延時分"}
</Text>
<View style={{ flex: 1 }} />
<Text
@@ -404,8 +418,8 @@ export const EachTrainInfo = (props) => {
textAlign: "right",
}}
>
{data.trainData?.delay}
{isNaN(data.trainData?.delay) ? "" : "分"}
{currentTrainData?.delay}
{isNaN(currentTrainData?.delay) ? "" : "分"}
</Text>
</View>
<View
@@ -425,7 +439,7 @@ export const EachTrainInfo = (props) => {
textAlign: "right",
}}
>
{data.trainData?.num}
{currentTrainData?.num}
</Text>
</View>
</View>
@@ -546,8 +560,8 @@ export const EachTrainInfo = (props) => {
<Text style={{ fontSize: 20 }}>停車駅</Text>
<View style={{ flex: 1 }} />
<View style={{ flexDirection: "row" }}>
{!isNaN(data.trainData?.delay) &&
data.trainData?.delay != 0 && (
{!isNaN(currentTrainData?.delay) &&
currentTrainData?.delay != 0 && (
<Text
style={{
fontSize: 15,
@@ -564,9 +578,9 @@ export const EachTrainInfo = (props) => {
<Text
style={{
fontSize: 20,
color: isNaN(data.trainData?.delay)
color: isNaN(currentTrainData?.delay)
? "black"
: data.trainData?.delay == 0
: currentTrainData?.delay == 0
? "black"
: "red",
width: 60,
@@ -612,8 +626,8 @@ export const EachTrainInfo = (props) => {
if (time) {
date.setHours(time.split(":")[0], time.split(":")[1]);
}
if (!isNaN(data.trainData?.delay)) {
date.setMinutes(date.getMinutes() + data.trainData?.delay);
if (!isNaN(currentTrainData?.delay)) {
date.setMinutes(date.getMinutes() + currentTrainData?.delay);
}
const timeString = date.toTimeString().split(" ")[0].split(":");
return (
@@ -685,8 +699,8 @@ export const EachTrainInfo = (props) => {
🚊
</Text>
) : null}
{!isNaN(data.trainData?.delay) &&
data.trainData?.delay != 0 && (
{!isNaN(currentTrainData?.delay) &&
currentTrainData?.delay != 0 && (
<Text
style={{
fontSize: 15,
@@ -704,9 +718,9 @@ export const EachTrainInfo = (props) => {
<Text
style={{
fontSize: 20,
color: isNaN(data.trainData?.delay)
color: isNaN(currentTrainData?.delay)
? "black"
: data.trainData?.delay == 0
: currentTrainData?.delay == 0
? "black"
: "red",
width: 60,

View File

@@ -16,7 +16,6 @@ import { MaterialCommunityIcons } from "@expo/vector-icons";
import { useCurrentTrain } from "../stateBox/useCurrentTrain";
import { useAreaInfo } from "../stateBox/useAreaInfo";
import { useAllTrainDiagram } from "../stateBox/useAllTrainDiagram";
import { EachTrainInfo } from "./ActionSheetComponents/EachTrainInfo";
import { customTrainDataDetector } from "./custom-train-data";
import { getStationList, lineList } from "../lib/getStationList";
@@ -65,9 +64,6 @@ export default function AllTrainDiagramView({ navigation: { navigate } }) {
limited: `${getTrainType(train.type).data}:${
train.trainName
}${TrainNumber}`,
trainData: checkDuplicateTrainData(
currentTrain.filter((a) => a.num == d)
),
},
navigate,
originalStationList,

View File

@@ -321,9 +321,6 @@ const EachData = ({
limited: `${getTrainType(train.type).data}:${
train.trainName
}${TrainNumber}`,
trainData: checkDuplicateTrainData(
currentTrain.filter((a) => a.num == d.train)
),
},
navigate,
originalStationList,