From 83bfe00ba016b02690544184a428db54a7a3408e Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Thu, 3 Oct 2024 10:21:55 +0000 Subject: [PATCH 1/4] =?UTF-8?q?=E5=9C=9F=E8=AE=83=E7=B7=9A=E3=81=AE?= =?UTF-8?q?=E6=99=AE=E9=80=9A=E5=88=97=E8=BB=8A=E6=83=85=E5=A0=B1=E3=82=92?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/webViewInjectjavascript.ts | 184 +++++++++++++++++++++++++++++++++ 1 file changed, 184 insertions(+) diff --git a/lib/webViewInjectjavascript.ts b/lib/webViewInjectjavascript.ts index 298020e..8f54f83 100644 --- a/lib/webViewInjectjavascript.ts +++ b/lib/webViewInjectjavascript.ts @@ -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 "223D": + 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; } From 0a14cfc9f7ccf9eaf232a5c7dd1699511b272c28 Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Fri, 4 Oct 2024 04:48:51 +0000 Subject: [PATCH 2/4] typo --- lib/webViewInjectjavascript.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/webViewInjectjavascript.ts b/lib/webViewInjectjavascript.ts index 8f54f83..391969a 100644 --- a/lib/webViewInjectjavascript.ts +++ b/lib/webViewInjectjavascript.ts @@ -662,9 +662,9 @@ export const injectJavascriptData: InjectJavascriptData = ( case "215D": case "217D": case "219D": - case "223D": + case "233D": case "243D": - + case "710D": case "712D": case "714D": From bf7e1138627e6d6e241a35ee9226a6aae728c596 Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Wed, 16 Oct 2024 07:32:13 +0000 Subject: [PATCH 3/4] =?UTF-8?q?=E6=95=A3=E6=AD=A9=E3=82=92LED=E3=81=AB?= =?UTF-8?q?=E8=A1=A8=E7=A4=BA=E3=81=A7=E3=81=8D=E3=82=8B=E3=82=88=E3=81=86?= =?UTF-8?q?=E3=81=AB=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/発車時刻表/EachData.tsx | 33 +++++++++++++++++------- components/発車時刻表/LED_vidion.js | 2 -- lib/webViewInjectjavascript.ts | 1 + 3 files changed, 25 insertions(+), 11 deletions(-) diff --git a/components/発車時刻表/EachData.tsx b/components/発車時刻表/EachData.tsx index af37d73..715c2b5 100644 --- a/components/発車時刻表/EachData.tsx +++ b/components/発車時刻表/EachData.tsx @@ -10,6 +10,7 @@ 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"; type Props = { d: { @@ -22,12 +23,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 +32,6 @@ export const EachData: FC = (props) => { trainIDSwitch, trainDescriptionSwitch, station, - customTrainDataDetector, navigate, openStationACFromEachTrainInfo, } = props; @@ -69,9 +63,30 @@ export const EachData: FC = (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( diff --git a/components/発車時刻表/LED_vidion.js b/components/発車時刻表/LED_vidion.js index f787522..51fa6e3 100644 --- a/components/発車時刻表/LED_vidion.js +++ b/components/発車時刻表/LED_vidion.js @@ -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, }} diff --git a/lib/webViewInjectjavascript.ts b/lib/webViewInjectjavascript.ts index 391969a..d13f21f 100644 --- a/lib/webViewInjectjavascript.ts +++ b/lib/webViewInjectjavascript.ts @@ -946,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'); From b41c02ca76e1ca694a02e23fa2e364c8fb5201d9 Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Thu, 17 Oct 2024 11:52:17 +0000 Subject: [PATCH 4/4] =?UTF-8?q?=E7=8F=BE=E5=9C=A8=E5=9C=B0=E3=83=86?= =?UTF-8?q?=E3=82=AD=E3=82=B9=E3=83=88=E8=A1=A8=E7=A4=BA=E9=96=A2=E9=80=A3?= =?UTF-8?q?=E3=81=AE=E6=A9=9F=E8=83=BD=E3=82=92=E7=B5=B1=E5=90=88=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../EachTrainInfo/TrainDataView.js | 22 +++++-------- components/発車時刻表/EachData.tsx | 31 ++++++++--------- lib/trainPositionTextArray.ts | 33 +++++++++++++++++++ 3 files changed, 54 insertions(+), 32 deletions(-) create mode 100644 lib/trainPositionTextArray.ts diff --git a/components/ActionSheetComponents/EachTrainInfo/TrainDataView.js b/components/ActionSheetComponents/EachTrainInfo/TrainDataView.js index 98e0541..26d7334 100644 --- a/components/ActionSheetComponents/EachTrainInfo/TrainDataView.js +++ b/components/ActionSheetComponents/EachTrainInfo/TrainDataView.js @@ -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 ( = (props) => { 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; - + 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 = { @@ -83,7 +82,7 @@ export const EachData: FC = (props) => { return returnData; } return customTrainData; - } + }; const [train, setTrain] = useState(getTrainDataFromCurrentTrain(d.train)); useEffect(() => { setTrain(getTrainDataFromCurrentTrain(d.train)); @@ -96,17 +95,11 @@ export const EachData: FC = (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 ( <> = (props) => { {trainDescriptionSwitch && ( { Linking.openURL( diff --git a/lib/trainPositionTextArray.ts b/lib/trainPositionTextArray.ts new file mode 100644 index 0000000..22366d9 --- /dev/null +++ b/lib/trainPositionTextArray.ts @@ -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 } }; +};