現在地の走行方向の帳尻合わせとLEDの現在地表記、運行情報のテキストの消滅処理等
This commit is contained in:
parent
644c08f4c6
commit
1131101eb6
@ -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>
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
|
@ -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} />
|
||||||
|
@ -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} />
|
||||||
)}
|
)}
|
||||||
|
@ -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];
|
||||||
|
};
|
||||||
|
@ -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);
|
||||||
|
Loading…
Reference in New Issue
Block a user