From 1131101eb680f68cbdfae30b005c8389847474a3 Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Sat, 18 May 2024 15:42:18 +0000 Subject: [PATCH] =?UTF-8?q?=E7=8F=BE=E5=9C=A8=E5=9C=B0=E3=81=AE=E8=B5=B0?= =?UTF-8?q?=E8=A1=8C=E6=96=B9=E5=90=91=E3=81=AE=E5=B8=B3=E5=B0=BB=E5=90=88?= =?UTF-8?q?=E3=82=8F=E3=81=9B=E3=81=A8LED=E3=81=AE=E7=8F=BE=E5=9C=A8?= =?UTF-8?q?=E5=9C=B0=E8=A1=A8=E8=A8=98=E3=80=81=E9=81=8B=E8=A1=8C=E6=83=85?= =?UTF-8?q?=E5=A0=B1=E3=81=AE=E3=83=86=E3=82=AD=E3=82=B9=E3=83=88=E3=81=AE?= =?UTF-8?q?=E6=B6=88=E6=BB=85=E5=87=A6=E7=90=86=E7=AD=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../EachTrainInfo/StateBox.js | 4 +- .../EachTrainInfo/TrainDataView.js | 4 +- .../EachTrainInfoCore.js | 42 ++++++++++++++++--- components/発車時刻表/LED_vidion.js | 27 ++++++++++-- lib/eachTrainInfoCoreLib/getStationData.js | 14 ++++++- stateBox/useCurrentTrain.js | 11 ++++- 6 files changed, 88 insertions(+), 14 deletions(-) diff --git a/components/ActionSheetComponents/EachTrainInfo/StateBox.js b/components/ActionSheetComponents/EachTrainInfo/StateBox.js index c26f41b..3258cc0 100644 --- a/components/ActionSheetComponents/EachTrainInfo/StateBox.js +++ b/components/ActionSheetComponents/EachTrainInfo/StateBox.js @@ -17,7 +17,9 @@ export const StateBox = ({ text, title, style, mode }) => ( {text.split("~")[0]} - + + {mode == 2 ? "→" : "↓"} + {text.split("~")[1]} diff --git a/components/ActionSheetComponents/EachTrainInfo/TrainDataView.js b/components/ActionSheetComponents/EachTrainInfo/TrainDataView.js index 2f0ff15..9781b1d 100644 --- a/components/ActionSheetComponents/EachTrainInfo/TrainDataView.js +++ b/components/ActionSheetComponents/EachTrainInfo/TrainDataView.js @@ -66,11 +66,11 @@ export const TrainDataView = ({ ? `${ currentTrainData?.Pos.replace("(下り)", "") .replace("(上り)", "") - .split("~")[0] + .split("~")[currentTrainData?.Direction == 1 ? 0 : 1] }~${ currentTrainData?.Pos.replace("(下り)", "") .replace("(上り)", "") - .split("~")[1] + .split("~")[currentTrainData?.Direction == 1 ? 1 : 0] }` : currentTrainData?.Pos } diff --git a/components/ActionSheetComponents/EachTrainInfoCore.js b/components/ActionSheetComponents/EachTrainInfoCore.js index 7b693a6..828e66e 100644 --- a/components/ActionSheetComponents/EachTrainInfoCore.js +++ b/components/ActionSheetComponents/EachTrainInfoCore.js @@ -7,6 +7,7 @@ import { StyleSheet, useWindowDimensions, BackHandler, + Linking, } from "react-native"; import { Ionicons } from "@expo/vector-icons"; import { SheetManager } from "react-native-actions-sheet"; @@ -25,7 +26,7 @@ import { DynamicHeaderScrollView } from "../DynamicHeaderScrollView"; import { LongHeader } from "./EachTrainInfo/LongHeader"; import { ShortHeader } from "./EachTrainInfo/ShortHeader"; import { ScrollStickyContent } from "./EachTrainInfo/ScrollStickyContent"; -import { getStationData } from "../../lib/eachTrainInfoCoreLib/getStationData"; +import { getStationID } from "../../lib/eachTrainInfoCoreLib/getStationData"; import { findReversalPoints } from "../../lib/eachTrainInfoCoreLib/findReversalPoints"; import { migrateTrainName } from "../../lib/eachTrainInfoCoreLib/migrateTrainName"; import { getType } from "../../lib/eachTrainInfoCoreLib/getType"; @@ -193,12 +194,20 @@ export const EachTrainInfoCore = ({ const pos = currentTrainData?.Pos.replace("(下り)", "") .replace("(上り)", "") .split("~"); - setCurrentPosition([ - getStationData(pos[0], stationList), - getStationData(pos[1], stationList), - ]); + const direction = parseInt(currentTrainData?.Direction) || 0; + if (direction == 0) { + setCurrentPosition([ + getStationID(pos[1], stationList), + getStationID(pos[0], stationList), + ]); + } else { + setCurrentPosition([ + getStationID(pos[0], stationList), + getStationID(pos[1], stationList), + ]); + } } else { - setCurrentPosition([getStationData(currentTrainData?.Pos, stationList)]); + setCurrentPosition([getStationID(currentTrainData?.Pos, stationList)]); } }, [currentTrainData]); @@ -239,6 +248,7 @@ export const EachTrainInfoCore = ({ }); } }; + const headerItem = { currentTrainData, currentPosition, @@ -350,6 +360,26 @@ export const EachTrainInfoCore = ({ trainList={trainList} trueTrainID={trueTrainID} /> + {!trainData.length && ( + + Linking.openURL(`https://twitter.com/search?q=${data.trainNum}`) + } + style={{ + padding: 10, + flexDirection: "row", + borderColor: "blue", + borderWidth: 1, + margin: 10, + borderRadius: 5, + alignItems: "center", + }} + > + + Twitterで検索 + + + )} {trainData.map((i, index) => i.split(",")[1] == "提" ? ( diff --git a/components/発車時刻表/LED_vidion.js b/components/発車時刻表/LED_vidion.js index e34d69f..c7b5596 100644 --- a/components/発車時刻表/LED_vidion.js +++ b/components/発車時刻表/LED_vidion.js @@ -164,14 +164,20 @@ export default function LED_vision(props) { true ); useEffect(() => { - if (!areaInfo) return () => {}; + if (!areaInfo) { + setAreaString(""); + return () => {}; + } setAreaString( areaInfo.substring(move, areaInfo.length) + areaInfo.substring(0, move) ); }, [move]); useEffect(() => { - if (!areaInfo) return () => {}; + if (!areaInfo) { + setAreaStringLength(0); + return () => {}; + } setAreaStringLength(areaInfo.length); }, [areaInfo]); @@ -336,10 +342,24 @@ const EachData = ({ setTrain(customTrainDataDetector(d.train)); }, [currentTrain, d.train, trainDescriptionSwitch]); // 土讃線複数存在対策 + const currentTrainData = checkDuplicateTrainData( + currentTrain.filter((a) => a.num == d.train) + ); const trainDelayStatus = getTrainDelayStatus( - checkDuplicateTrainData(currentTrain.filter((a) => a.num == d.train)), + 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}`; return ( <> + {trainDescriptionSwitch && } {trainDescriptionSwitch && !!train.info && ( )} diff --git a/lib/eachTrainInfoCoreLib/getStationData.js b/lib/eachTrainInfoCoreLib/getStationData.js index 20b386a..35e4631 100644 --- a/lib/eachTrainInfoCoreLib/getStationData.js +++ b/lib/eachTrainInfoCoreLib/getStationData.js @@ -1,7 +1,7 @@ // 駅名から駅情報を取得する //stationName: 駅名 //stationList: 駅情報リスト -export const getStationData = (stationName, stationList) => { +export const getStationID = (stationName, stationList) => { const Stations = stationList.map((a) => a.filter((d) => d.StationName == stationName) ); @@ -13,3 +13,15 @@ export const getStationData = (stationName, stationList) => { if (!Station[0]) return []; 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]; +}; diff --git a/stateBox/useCurrentTrain.js b/stateBox/useCurrentTrain.js index 73e91ac..e49290a 100644 --- a/stateBox/useCurrentTrain.js +++ b/stateBox/useCurrentTrain.js @@ -31,7 +31,16 @@ export const CurrentTrainProvider = ({ children }) => { .then((response) => response.json()) .then((d) => d.data) .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) => { setCurrentTrain(d);