Merge commit '5c1a23306c458a3cba36d9b05f59b85515c3e34d' into develop
This commit is contained in:
commit
d119c976eb
@ -5,6 +5,7 @@ import { useDeviceOrientationChange } from "../../../stateBox/useDeviceOrientati
|
||||
import { getStationList2 } from "../../../lib/getStationList2";
|
||||
import { useCurrentTrain } from "../../../stateBox/useCurrentTrain";
|
||||
import { SheetManager } from "react-native-actions-sheet";
|
||||
import { trainPosition } from "../../../lib/trainPositionTextArray";
|
||||
|
||||
export const TrainDataView = ({
|
||||
currentTrainData,
|
||||
@ -16,12 +17,17 @@ export const TrainDataView = ({
|
||||
}) => {
|
||||
const { width, height } = useWindowDimensions();
|
||||
const { isLandscape } = useDeviceOrientationChange();
|
||||
const { webview, getCurrentTrain, inject } = useCurrentTrain();
|
||||
const { inject } = useCurrentTrain();
|
||||
const [mapsStationData, setMapsStationData] = useState(undefined);
|
||||
useEffect(() => {
|
||||
getStationList2().then(setMapsStationData);
|
||||
}, []);
|
||||
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 (
|
||||
<View
|
||||
style={{
|
||||
@ -60,19 +66,7 @@ export const TrainDataView = ({
|
||||
<StateBox
|
||||
mode={mode}
|
||||
title={`現在地 ${currentPosition?.toString()}${onLine ? "▶️" : ""}`}
|
||||
text={
|
||||
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
|
||||
}
|
||||
text={trainPositionText(currentTrainData)}
|
||||
style={
|
||||
onLine
|
||||
? { 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 { StatusAndDelay } from "./LED_inside_Component/StatusAndDelay";
|
||||
import { TrainName } from "./LED_inside_Component/TrainName";
|
||||
import { customTrainDataDetector } from "../custom-train-data";
|
||||
import { trainDataType, trainPosition } from "../../lib/trainPositionTextArray";
|
||||
|
||||
type Props = {
|
||||
d: {
|
||||
@ -22,12 +24,6 @@ type Props = {
|
||||
station: {
|
||||
Station_JP: string;
|
||||
};
|
||||
customTrainDataDetector: (trainID: string) => {
|
||||
trainName: string;
|
||||
trainNumDistance?: number;
|
||||
type: string;
|
||||
info: string;
|
||||
};
|
||||
navigate: (screen: string, data?: any) => void;
|
||||
openStationACFromEachTrainInfo: (station: string) => void;
|
||||
};
|
||||
@ -37,7 +33,6 @@ export const EachData: FC<Props> = (props) => {
|
||||
trainIDSwitch,
|
||||
trainDescriptionSwitch,
|
||||
station,
|
||||
customTrainDataDetector,
|
||||
navigate,
|
||||
openStationACFromEachTrainInfo,
|
||||
} = props;
|
||||
@ -69,9 +64,28 @@ export const EachData: FC<Props> = (props) => {
|
||||
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(() => {
|
||||
setTrain(customTrainDataDetector(d.train));
|
||||
setTrain(getTrainDataFromCurrentTrain(d.train));
|
||||
}, [currentTrain, d.train, trainDescriptionSwitch]);
|
||||
// 土讃線複数存在対策
|
||||
const currentTrainData = checkDuplicateTrainData(
|
||||
@ -81,17 +95,11 @@ export const EachData: FC<Props> = (props) => {
|
||||
currentTrainData,
|
||||
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}`;
|
||||
const trainPositionText = (trainData: trainDataType) => {
|
||||
const { isBetween, Pos } = trainPosition(trainData);
|
||||
if (isBetween === true) return `現在地:${Pos.from}→${Pos.to}間を走行中`;
|
||||
else return Pos.Pos == "" ? "" : `現在地:${Pos.Pos}`;
|
||||
};
|
||||
return (
|
||||
<>
|
||||
<TouchableOpacity
|
||||
@ -120,7 +128,9 @@ export const EachData: FC<Props> = (props) => {
|
||||
{trainDescriptionSwitch && (
|
||||
<Description
|
||||
info={`${
|
||||
trainIDSwitch ? currentTrainData?.PosNum : trainPositionText
|
||||
trainIDSwitch
|
||||
? currentTrainData?.PosNum
|
||||
: trainPositionText(currentTrainData)
|
||||
}`}
|
||||
onLongClick={() => {
|
||||
Linking.openURL(
|
||||
|
@ -1,7 +1,6 @@
|
||||
import React, { useState, useEffect } from "react";
|
||||
import { View } from "react-native";
|
||||
import { widthPercentageToDP as wp } from "react-native-responsive-screen";
|
||||
import { customTrainDataDetector } from "../custom-train-data";
|
||||
import { useInterval } from "../../lib/useInterval";
|
||||
import { objectIsEmpty } from "../../lib/objectIsEmpty";
|
||||
import { useCurrentTrain } from "../../stateBox/useCurrentTrain";
|
||||
@ -203,7 +202,6 @@ export default function LED_vision(props) {
|
||||
d,
|
||||
trainIDSwitch,
|
||||
trainDescriptionSwitch,
|
||||
customTrainDataDetector,
|
||||
navigate,
|
||||
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 } };
|
||||
};
|
@ -516,6 +516,190 @@ export const injectJavascriptData: InjectJavascriptData = (
|
||||
case "114M":
|
||||
setStationIcon(element.querySelector("img"),'https://storage.haruk.in/s6000p.png');
|
||||
break;
|
||||
|
||||
|
||||
// 土讃線普通列車系統(include ごな線)
|
||||
// ごな線
|
||||
case "5851D": //219D併結 [ToDo: 219Dとの分割対策]
|
||||
case "5854D":
|
||||
setStationIcon(element.querySelector("img"),'https://storage.haruk.in/tosa9640jgr.png');
|
||||
break;
|
||||
|
||||
//JR車両乗り入れ運用
|
||||
case "5858D":
|
||||
case "5869D":
|
||||
setStationIcon(element.querySelector("img"),'https://storage.haruk.in/s1000.png');
|
||||
break;
|
||||
//併結運用の併結される側 [ToDo: 分割対策]
|
||||
case "5845D":
|
||||
case "5851D":
|
||||
case "5818D":
|
||||
case "5820D":
|
||||
setStationIcon(element.querySelector("img"),'https://storage.haruk.in/tosa9640.png');
|
||||
break;
|
||||
// 土讃線単体列車のキハ32運用
|
||||
case "715D":
|
||||
case "718D":
|
||||
setStationIcon(element.querySelector("img"),'https://storage.haruk.in/s32ns.png');
|
||||
break;
|
||||
|
||||
// サンライズに伴う気動車代走
|
||||
case "6219D":
|
||||
case "6222D":
|
||||
setStationIcon(element.querySelector("img"),'https://storage.haruk.in/s1000.png');
|
||||
break;
|
||||
// それ以外の土讃線ごな線直通列車
|
||||
case "5811D":
|
||||
case "5813D":
|
||||
case "5815D":
|
||||
case "5817D":
|
||||
case "5843D":
|
||||
case "5853D":
|
||||
case "5855D":
|
||||
case "5859D":
|
||||
case "5861D":
|
||||
case "5865D":
|
||||
case "5881D":
|
||||
case "5885D":
|
||||
case "5889D":
|
||||
|
||||
case "5812D":
|
||||
case "5814D":
|
||||
case "5816D":
|
||||
case "5852D":
|
||||
case "5856D":
|
||||
case "5860D":
|
||||
case "5862D":
|
||||
case "5872D":
|
||||
case "5874D":
|
||||
case "5876D":
|
||||
case "5880D":
|
||||
case "5882D":
|
||||
setStationIcon(element.querySelector("img"),'https://storage.haruk.in/tosa9640.png');
|
||||
break;
|
||||
// それ以外の土讃線普通列車(1000)
|
||||
case "4210D":
|
||||
case "4212D":
|
||||
case "4214D":
|
||||
case "4218D":
|
||||
case "4220D":
|
||||
case "4222D":
|
||||
case "4224D":
|
||||
case "4226D":
|
||||
case "4228D":
|
||||
case "4230D":
|
||||
case "4232D":
|
||||
case "4234D":
|
||||
case "4236D":
|
||||
case "4238D":
|
||||
case "4240D":
|
||||
case "4242D":
|
||||
case "4244D":
|
||||
case "4250D":
|
||||
case "4252D":
|
||||
case "4254D":
|
||||
case "4256D":
|
||||
|
||||
case "4211D":
|
||||
case "4221D":
|
||||
case "4223D":
|
||||
case "4225D":
|
||||
case "4227D":
|
||||
case "4229D":
|
||||
case "4231D":
|
||||
case "4235D":
|
||||
case "4237D":
|
||||
case "4239D":
|
||||
case "4241D":
|
||||
case "4245D":
|
||||
case "4247D":
|
||||
case "4249D":
|
||||
case "4251D":
|
||||
case "4253D":
|
||||
case "4255D":
|
||||
case "4257D":
|
||||
case "4259D":
|
||||
case "4261D":
|
||||
|
||||
case "4710D":
|
||||
case "4726D":
|
||||
case "4730D":
|
||||
case "4732D":
|
||||
case "4734D":
|
||||
case "4738D":
|
||||
case "4740D":
|
||||
case "4742D":
|
||||
case "4744D":
|
||||
case "4746D":
|
||||
case "4752D":
|
||||
case "4756D":
|
||||
case "4762D":
|
||||
case "4764D":
|
||||
case "4766D":
|
||||
|
||||
case "4711D":
|
||||
case "4713D":
|
||||
case "4723D":
|
||||
case "4725D":
|
||||
case "4727D":
|
||||
case "4729D":
|
||||
case "4731D":
|
||||
case "4737D":
|
||||
case "4739D":
|
||||
case "4745D":
|
||||
case "4753D":
|
||||
case "4755D":
|
||||
case "4759D":
|
||||
case "4761D":
|
||||
case "4763D":
|
||||
|
||||
case "216D":
|
||||
case "238D":
|
||||
case "246D":
|
||||
case "248D":
|
||||
|
||||
case "213D":
|
||||
case "215D":
|
||||
case "217D":
|
||||
case "219D":
|
||||
case "233D":
|
||||
case "243D":
|
||||
|
||||
case "710D":
|
||||
case "712D":
|
||||
case "714D":
|
||||
case "716D":
|
||||
case "720D":
|
||||
case "722D":
|
||||
case "724D":
|
||||
case "728D":
|
||||
case "736D":
|
||||
case "748D":
|
||||
case "750D":
|
||||
case "754D":
|
||||
case "758D":
|
||||
case "760D":
|
||||
case "768D":
|
||||
|
||||
case "717D":
|
||||
case "719D":
|
||||
case "721D":
|
||||
case "733D":
|
||||
case "735D":
|
||||
case "737D":
|
||||
case "741D":
|
||||
case "743D":
|
||||
case "747D":
|
||||
case "749D":
|
||||
case "751D":
|
||||
case "755D":
|
||||
case "757D":
|
||||
case "761D":
|
||||
|
||||
setStationIcon(element.querySelector("img"),'https://storage.haruk.in/s1000.png');
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -762,6 +946,7 @@ makeTrainView.observe(document.getElementById('modal_content'), {
|
||||
trainMenu == "true"
|
||||
? `
|
||||
// これの中身抽出ShowTrainTimeInfo("1228M","normal")
|
||||
// ShowTrainTimeInfo("142M","rapid:サンポート南風リレー")
|
||||
function setTrainMenuDialog(d){
|
||||
try{
|
||||
const offclick = d.getAttribute('offclick');
|
||||
|
Loading…
Reference in New Issue
Block a user