Merge commit 'b41c02ca76e1ca694a02e23fa2e364c8fb5201d9' into patch/5.0.x
This commit is contained in:
commit
5c1a23306c
@ -5,6 +5,7 @@ import { useDeviceOrientationChange } from "../../../stateBox/useDeviceOrientati
|
|||||||
import { getStationList2 } from "../../../lib/getStationList2";
|
import { getStationList2 } from "../../../lib/getStationList2";
|
||||||
import { useCurrentTrain } from "../../../stateBox/useCurrentTrain";
|
import { useCurrentTrain } from "../../../stateBox/useCurrentTrain";
|
||||||
import { SheetManager } from "react-native-actions-sheet";
|
import { SheetManager } from "react-native-actions-sheet";
|
||||||
|
import { trainPosition } from "../../../lib/trainPositionTextArray";
|
||||||
|
|
||||||
export const TrainDataView = ({
|
export const TrainDataView = ({
|
||||||
currentTrainData,
|
currentTrainData,
|
||||||
@ -16,12 +17,17 @@ export const TrainDataView = ({
|
|||||||
}) => {
|
}) => {
|
||||||
const { width, height } = useWindowDimensions();
|
const { width, height } = useWindowDimensions();
|
||||||
const { isLandscape } = useDeviceOrientationChange();
|
const { isLandscape } = useDeviceOrientationChange();
|
||||||
const { webview, getCurrentTrain, inject } = useCurrentTrain();
|
const { inject } = useCurrentTrain();
|
||||||
const [mapsStationData, setMapsStationData] = useState(undefined);
|
const [mapsStationData, setMapsStationData] = useState(undefined);
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
getStationList2().then(setMapsStationData);
|
getStationList2().then(setMapsStationData);
|
||||||
}, []);
|
}, []);
|
||||||
const onLine = !!currentPosition?.toString().length;
|
const onLine = !!currentPosition?.toString().length;
|
||||||
|
const trainPositionText = (trainData) => {
|
||||||
|
const { isBetween, Pos } = trainPosition(trainData);
|
||||||
|
if (isBetween === true) return `${Pos.from}~${Pos.to}`;
|
||||||
|
else return Pos.Pos == "" ? "" : `${Pos.Pos}`;
|
||||||
|
};
|
||||||
return (
|
return (
|
||||||
<View
|
<View
|
||||||
style={{
|
style={{
|
||||||
@ -60,19 +66,7 @@ export const TrainDataView = ({
|
|||||||
<StateBox
|
<StateBox
|
||||||
mode={mode}
|
mode={mode}
|
||||||
title={`現在地 ${currentPosition?.toString()}${onLine ? "▶️" : ""}`}
|
title={`現在地 ${currentPosition?.toString()}${onLine ? "▶️" : ""}`}
|
||||||
text={
|
text={trainPositionText(currentTrainData)}
|
||||||
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
|
|
||||||
}
|
|
||||||
style={
|
style={
|
||||||
onLine
|
onLine
|
||||||
? { borderWidth: 1, borderColor: "red", borderStyle: "solid" }
|
? { borderWidth: 1, borderColor: "red", borderStyle: "solid" }
|
||||||
|
@ -10,6 +10,8 @@ import { DependTime } from "./LED_inside_Component/DependTime";
|
|||||||
import { LastStation } from "./LED_inside_Component/LastStation";
|
import { LastStation } from "./LED_inside_Component/LastStation";
|
||||||
import { StatusAndDelay } from "./LED_inside_Component/StatusAndDelay";
|
import { StatusAndDelay } from "./LED_inside_Component/StatusAndDelay";
|
||||||
import { TrainName } from "./LED_inside_Component/TrainName";
|
import { TrainName } from "./LED_inside_Component/TrainName";
|
||||||
|
import { customTrainDataDetector } from "../custom-train-data";
|
||||||
|
import { trainDataType, trainPosition } from "../../lib/trainPositionTextArray";
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
d: {
|
d: {
|
||||||
@ -22,12 +24,6 @@ type Props = {
|
|||||||
station: {
|
station: {
|
||||||
Station_JP: string;
|
Station_JP: string;
|
||||||
};
|
};
|
||||||
customTrainDataDetector: (trainID: string) => {
|
|
||||||
trainName: string;
|
|
||||||
trainNumDistance?: number;
|
|
||||||
type: string;
|
|
||||||
info: string;
|
|
||||||
};
|
|
||||||
navigate: (screen: string, data?: any) => void;
|
navigate: (screen: string, data?: any) => void;
|
||||||
openStationACFromEachTrainInfo: (station: string) => void;
|
openStationACFromEachTrainInfo: (station: string) => void;
|
||||||
};
|
};
|
||||||
@ -37,7 +33,6 @@ export const EachData: FC<Props> = (props) => {
|
|||||||
trainIDSwitch,
|
trainIDSwitch,
|
||||||
trainDescriptionSwitch,
|
trainDescriptionSwitch,
|
||||||
station,
|
station,
|
||||||
customTrainDataDetector,
|
|
||||||
navigate,
|
navigate,
|
||||||
openStationACFromEachTrainInfo,
|
openStationACFromEachTrainInfo,
|
||||||
} = props;
|
} = props;
|
||||||
@ -69,9 +64,28 @@ export const EachData: FC<Props> = (props) => {
|
|||||||
payload,
|
payload,
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
const [train, setTrain] = useState(customTrainDataDetector(d.train));
|
|
||||||
|
const getTrainDataFromCurrentTrain = (trainNum: string) => {
|
||||||
|
const customTrainData = customTrainDataDetector(d.train);
|
||||||
|
if (customTrainData.type != "Normal") return customTrainData;
|
||||||
|
const currentTrainData = currentTrain.filter((a) => a.num == trainNum);
|
||||||
|
if (currentTrainData.length == 0) return customTrainData;
|
||||||
|
else if (currentTrainData[0].Type.includes("rapid:")) {
|
||||||
|
const typeText = currentTrainData[0].Type.split(":");
|
||||||
|
const returnData = {
|
||||||
|
type: "Rapid",
|
||||||
|
trainName: typeText[1].replace("\r", ""),
|
||||||
|
trainIcon: null,
|
||||||
|
trainNumDistance: null,
|
||||||
|
info: "",
|
||||||
|
};
|
||||||
|
return returnData;
|
||||||
|
}
|
||||||
|
return customTrainData;
|
||||||
|
};
|
||||||
|
const [train, setTrain] = useState(getTrainDataFromCurrentTrain(d.train));
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
setTrain(customTrainDataDetector(d.train));
|
setTrain(getTrainDataFromCurrentTrain(d.train));
|
||||||
}, [currentTrain, d.train, trainDescriptionSwitch]);
|
}, [currentTrain, d.train, trainDescriptionSwitch]);
|
||||||
// 土讃線複数存在対策
|
// 土讃線複数存在対策
|
||||||
const currentTrainData = checkDuplicateTrainData(
|
const currentTrainData = checkDuplicateTrainData(
|
||||||
@ -81,17 +95,11 @@ export const EachData: FC<Props> = (props) => {
|
|||||||
currentTrainData,
|
currentTrainData,
|
||||||
station.Station_JP
|
station.Station_JP
|
||||||
)}`;
|
)}`;
|
||||||
const trainPositionText = currentTrainData?.Pos.match("~")
|
const trainPositionText = (trainData: trainDataType) => {
|
||||||
? `現在地:${
|
const { isBetween, Pos } = trainPosition(trainData);
|
||||||
currentTrainData?.Pos.replace("(下り)", "")
|
if (isBetween === true) return `現在地:${Pos.from}→${Pos.to}間を走行中`;
|
||||||
.replace("(上り)", "")
|
else return Pos.Pos == "" ? "" : `現在地:${Pos.Pos}`;
|
||||||
.split("~")[currentTrainData?.Direction == 1 ? 0 : 1]
|
};
|
||||||
}→${
|
|
||||||
currentTrainData?.Pos.replace("(下り)", "")
|
|
||||||
.replace("(上り)", "")
|
|
||||||
.split("~")[currentTrainData?.Direction == 1 ? 1 : 0]
|
|
||||||
}間を走行中`
|
|
||||||
: `現在地:${currentTrainData?.Pos}`;
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<TouchableOpacity
|
<TouchableOpacity
|
||||||
@ -120,7 +128,9 @@ export const EachData: FC<Props> = (props) => {
|
|||||||
{trainDescriptionSwitch && (
|
{trainDescriptionSwitch && (
|
||||||
<Description
|
<Description
|
||||||
info={`${
|
info={`${
|
||||||
trainIDSwitch ? currentTrainData?.PosNum : trainPositionText
|
trainIDSwitch
|
||||||
|
? currentTrainData?.PosNum
|
||||||
|
: trainPositionText(currentTrainData)
|
||||||
}`}
|
}`}
|
||||||
onLongClick={() => {
|
onLongClick={() => {
|
||||||
Linking.openURL(
|
Linking.openURL(
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
import React, { useState, useEffect } from "react";
|
import React, { useState, useEffect } from "react";
|
||||||
import { View } from "react-native";
|
import { View } from "react-native";
|
||||||
import { widthPercentageToDP as wp } from "react-native-responsive-screen";
|
import { widthPercentageToDP as wp } from "react-native-responsive-screen";
|
||||||
import { customTrainDataDetector } from "../custom-train-data";
|
|
||||||
import { useInterval } from "../../lib/useInterval";
|
import { useInterval } from "../../lib/useInterval";
|
||||||
import { objectIsEmpty } from "../../lib/objectIsEmpty";
|
import { objectIsEmpty } from "../../lib/objectIsEmpty";
|
||||||
import { useCurrentTrain } from "../../stateBox/useCurrentTrain";
|
import { useCurrentTrain } from "../../stateBox/useCurrentTrain";
|
||||||
@ -203,7 +202,6 @@ export default function LED_vision(props) {
|
|||||||
d,
|
d,
|
||||||
trainIDSwitch,
|
trainIDSwitch,
|
||||||
trainDescriptionSwitch,
|
trainDescriptionSwitch,
|
||||||
customTrainDataDetector,
|
|
||||||
navigate,
|
navigate,
|
||||||
openStationACFromEachTrainInfo,
|
openStationACFromEachTrainInfo,
|
||||||
}}
|
}}
|
||||||
|
33
lib/trainPositionTextArray.ts
Normal file
33
lib/trainPositionTextArray.ts
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
type returnBetweenType = {
|
||||||
|
isBetween: true;
|
||||||
|
Pos: {
|
||||||
|
from: string;
|
||||||
|
to: string;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
type returnCurrentType = {
|
||||||
|
isBetween: false;
|
||||||
|
Pos: {
|
||||||
|
Pos: string;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
export type trainDataType = {
|
||||||
|
Pos?: string;
|
||||||
|
Direction?: number;
|
||||||
|
};
|
||||||
|
type trainData = (
|
||||||
|
trainData: trainDataType
|
||||||
|
) => returnBetweenType | returnCurrentType;
|
||||||
|
|
||||||
|
export const trainPosition: trainData = (trainData) => {
|
||||||
|
if (!trainData?.Pos) return { isBetween: false, Pos: { Pos: "" } };
|
||||||
|
const { Pos, Direction } = trainData;
|
||||||
|
if (Pos.match("~")) {
|
||||||
|
const [topST, downST] = Pos.replace("(下り)", "")
|
||||||
|
.replace("(上り)", "")
|
||||||
|
.split("~");
|
||||||
|
const from = Direction == 1 ? topST : downST;
|
||||||
|
const to = Direction == 1 ? downST : topST;
|
||||||
|
return { isBetween: true, Pos: { from, to } };
|
||||||
|
} else return { isBetween: false, Pos: { Pos } };
|
||||||
|
};
|
@ -946,6 +946,7 @@ makeTrainView.observe(document.getElementById('modal_content'), {
|
|||||||
trainMenu == "true"
|
trainMenu == "true"
|
||||||
? `
|
? `
|
||||||
// これの中身抽出ShowTrainTimeInfo("1228M","normal")
|
// これの中身抽出ShowTrainTimeInfo("1228M","normal")
|
||||||
|
// ShowTrainTimeInfo("142M","rapid:サンポート南風リレー")
|
||||||
function setTrainMenuDialog(d){
|
function setTrainMenuDialog(d){
|
||||||
try{
|
try{
|
||||||
const offclick = d.getAttribute('offclick');
|
const offclick = d.getAttribute('offclick');
|
||||||
|
Loading…
Reference in New Issue
Block a user