現在地の走行方向の帳尻合わせとLEDの現在地表記、運行情報のテキストの消滅処理等

This commit is contained in:
harukin-expo-dev-env 2024-05-18 15:42:18 +00:00
parent 644c08f4c6
commit 1131101eb6
6 changed files with 88 additions and 14 deletions

View File

@ -17,7 +17,9 @@ export const StateBox = ({ text, title, style, mode }) => (
<Text style={mode == 2 ? boxTextStyle2 : boxTextStyle}> <Text style={mode == 2 ? boxTextStyle2 : boxTextStyle}>
{text.split("")[0]} {text.split("")[0]}
</Text> </Text>
<Text style={{ color: "#0099CC", textAlign: "right" }}></Text> <Text style={{ color: "#0099CC", textAlign: "right" }}>
{mode == 2 ? "→" : "↓"}
</Text>
<Text style={mode == 2 ? boxTextStyle2 : boxTextStyle}> <Text style={mode == 2 ? boxTextStyle2 : boxTextStyle}>
{text.split("")[1]} {text.split("")[1]}
</Text> </Text>

View File

@ -66,11 +66,11 @@ export const TrainDataView = ({
? `${ ? `${
currentTrainData?.Pos.replace("(下り)", "") currentTrainData?.Pos.replace("(下り)", "")
.replace("(上り)", "") .replace("(上り)", "")
.split("")[0] .split("")[currentTrainData?.Direction == 1 ? 0 : 1]
}${ }${
currentTrainData?.Pos.replace("(下り)", "") currentTrainData?.Pos.replace("(下り)", "")
.replace("(上り)", "") .replace("(上り)", "")
.split("")[1] .split("")[currentTrainData?.Direction == 1 ? 1 : 0]
}` }`
: currentTrainData?.Pos : currentTrainData?.Pos
} }

View File

@ -7,6 +7,7 @@ import {
StyleSheet, StyleSheet,
useWindowDimensions, useWindowDimensions,
BackHandler, BackHandler,
Linking,
} from "react-native"; } from "react-native";
import { Ionicons } from "@expo/vector-icons"; import { Ionicons } from "@expo/vector-icons";
import { SheetManager } from "react-native-actions-sheet"; import { SheetManager } from "react-native-actions-sheet";
@ -25,7 +26,7 @@ import { DynamicHeaderScrollView } from "../DynamicHeaderScrollView";
import { LongHeader } from "./EachTrainInfo/LongHeader"; import { LongHeader } from "./EachTrainInfo/LongHeader";
import { ShortHeader } from "./EachTrainInfo/ShortHeader"; import { ShortHeader } from "./EachTrainInfo/ShortHeader";
import { ScrollStickyContent } from "./EachTrainInfo/ScrollStickyContent"; import { ScrollStickyContent } from "./EachTrainInfo/ScrollStickyContent";
import { getStationData } from "../../lib/eachTrainInfoCoreLib/getStationData"; import { getStationID } from "../../lib/eachTrainInfoCoreLib/getStationData";
import { findReversalPoints } from "../../lib/eachTrainInfoCoreLib/findReversalPoints"; import { findReversalPoints } from "../../lib/eachTrainInfoCoreLib/findReversalPoints";
import { migrateTrainName } from "../../lib/eachTrainInfoCoreLib/migrateTrainName"; import { migrateTrainName } from "../../lib/eachTrainInfoCoreLib/migrateTrainName";
import { getType } from "../../lib/eachTrainInfoCoreLib/getType"; import { getType } from "../../lib/eachTrainInfoCoreLib/getType";
@ -193,12 +194,20 @@ export const EachTrainInfoCore = ({
const pos = currentTrainData?.Pos.replace("(下り)", "") const pos = currentTrainData?.Pos.replace("(下り)", "")
.replace("(上り)", "") .replace("(上り)", "")
.split(""); .split("");
setCurrentPosition([ const direction = parseInt(currentTrainData?.Direction) || 0;
getStationData(pos[0], stationList), if (direction == 0) {
getStationData(pos[1], stationList), setCurrentPosition([
]); getStationID(pos[1], stationList),
getStationID(pos[0], stationList),
]);
} else {
setCurrentPosition([
getStationID(pos[0], stationList),
getStationID(pos[1], stationList),
]);
}
} else { } else {
setCurrentPosition([getStationData(currentTrainData?.Pos, stationList)]); setCurrentPosition([getStationID(currentTrainData?.Pos, stationList)]);
} }
}, [currentTrainData]); }, [currentTrainData]);
@ -239,6 +248,7 @@ export const EachTrainInfoCore = ({
}); });
} }
}; };
const headerItem = { const headerItem = {
currentTrainData, currentTrainData,
currentPosition, currentPosition,
@ -350,6 +360,26 @@ export const EachTrainInfoCore = ({
trainList={trainList} trainList={trainList}
trueTrainID={trueTrainID} trueTrainID={trueTrainID}
/> />
{!trainData.length && (
<TouchableOpacity
onPress={() =>
Linking.openURL(`https://twitter.com/search?q=${data.trainNum}`)
}
style={{
padding: 10,
flexDirection: "row",
borderColor: "blue",
borderWidth: 1,
margin: 10,
borderRadius: 5,
alignItems: "center",
}}
>
<Text style={{ fontSize: 18, fontWeight: "bold", color: "black" }}>
Twitterで検索
</Text>
</TouchableOpacity>
)}
{trainData.map((i, index) => {trainData.map((i, index) =>
i.split(",")[1] == "提" ? ( i.split(",")[1] == "提" ? (
<DataFromButton i={i} /> <DataFromButton i={i} />

View File

@ -164,14 +164,20 @@ export default function LED_vision(props) {
true true
); );
useEffect(() => { useEffect(() => {
if (!areaInfo) return () => {}; if (!areaInfo) {
setAreaString("");
return () => {};
}
setAreaString( setAreaString(
areaInfo.substring(move, areaInfo.length) + areaInfo.substring(0, move) areaInfo.substring(move, areaInfo.length) + areaInfo.substring(0, move)
); );
}, [move]); }, [move]);
useEffect(() => { useEffect(() => {
if (!areaInfo) return () => {}; if (!areaInfo) {
setAreaStringLength(0);
return () => {};
}
setAreaStringLength(areaInfo.length); setAreaStringLength(areaInfo.length);
}, [areaInfo]); }, [areaInfo]);
@ -336,10 +342,24 @@ const EachData = ({
setTrain(customTrainDataDetector(d.train)); setTrain(customTrainDataDetector(d.train));
}, [currentTrain, d.train, trainDescriptionSwitch]); }, [currentTrain, d.train, trainDescriptionSwitch]);
// 土讃線複数存在対策 // 土讃線複数存在対策
const currentTrainData = checkDuplicateTrainData(
currentTrain.filter((a) => a.num == d.train)
);
const trainDelayStatus = getTrainDelayStatus( const trainDelayStatus = getTrainDelayStatus(
checkDuplicateTrainData(currentTrain.filter((a) => a.num == d.train)), currentTrainData,
station.Station_JP station.Station_JP
); );
const trainPositionText = currentTrainData?.Pos.match("")
? `現在地:${
currentTrainData?.Pos.replace("(下り)", "")
.replace("(上り)", "")
.split("")[currentTrainData?.Direction == 1 ? 0 : 1]
}${
currentTrainData?.Pos.replace("(下り)", "")
.replace("(上り)", "")
.split("")[currentTrainData?.Direction == 1 ? 1 : 0]
}間を走行中`
: `現在地:${currentTrainData?.Pos}`;
return ( return (
<> <>
<TouchableOpacity <TouchableOpacity
@ -365,6 +385,7 @@ const EachData = ({
<DependTime time={d.time} /> <DependTime time={d.time} />
<StatusAndDelay trainDelayStatus={trainDelayStatus} /> <StatusAndDelay trainDelayStatus={trainDelayStatus} />
</TouchableOpacity> </TouchableOpacity>
{trainDescriptionSwitch && <Description info={`${trainPositionText}`} />}
{trainDescriptionSwitch && !!train.info && ( {trainDescriptionSwitch && !!train.info && (
<Description info={train.info} /> <Description info={train.info} />
)} )}

View File

@ -1,7 +1,7 @@
// 駅名から駅情報を取得する // 駅名から駅情報を取得する
//stationName: 駅名 //stationName: 駅名
//stationList: 駅情報リスト //stationList: 駅情報リスト
export const getStationData = (stationName, stationList) => { export const getStationID = (stationName, stationList) => {
const Stations = stationList.map((a) => const Stations = stationList.map((a) =>
a.filter((d) => d.StationName == stationName) a.filter((d) => d.StationName == stationName)
); );
@ -13,3 +13,15 @@ export const getStationData = (stationName, stationList) => {
if (!Station[0]) return []; if (!Station[0]) return [];
return Station.map((d) => d.StationNumber)[0]; return Station.map((d) => d.StationNumber)[0];
}; };
export const getStationName = (stationId, stationList) => {
const Stations = stationList.map((a) =>
a.filter((d) => d.StationNumber == stationId)
);
const Station =
Stations &&
Stations.reduce((newArray, e) => {
return newArray.concat(e);
}, []);
if (!Station[0]) return [];
return Station.map((d) => d.StaitonName)[0];
};

View File

@ -31,7 +31,16 @@ export const CurrentTrainProvider = ({ children }) => {
.then((response) => response.json()) .then((response) => response.json())
.then((d) => d.data) .then((d) => d.data)
.then((d) => .then((d) =>
d.map((x) => ({ num: x.TrainNum, delay: x.delay, Pos: x.Pos })) d.map((x) => ({
Index: x.Index,
num: x.TrainNum,
delay: x.delay,
Pos: x.Pos,
PosNum: x.PosNum,
Direction: x.Direction,
Type: x.Type,
Line: x.Line,
}))
) )
.then((d) => { .then((d) => {
setCurrentTrain(d); setCurrentTrain(d);