From 1575b643f74208da16833427742239fe0534efa0 Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Tue, 26 Nov 2024 15:18:58 +0000 Subject: [PATCH 1/9] =?UTF-8?q?=E6=96=B0=E5=9E=8B=E6=8A=95=E7=A8=BF?= =?UTF-8?q?=E6=A9=9F=E8=83=BD=E3=82=92=E4=BB=AE=E4=BD=9C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/発車時刻表/EachData.tsx | 80 +++++++++++++++++++++++-- 1 file changed, 75 insertions(+), 5 deletions(-) diff --git a/components/発車時刻表/EachData.tsx b/components/発車時刻表/EachData.tsx index 275358e..250404f 100644 --- a/components/発車時刻表/EachData.tsx +++ b/components/発車時刻表/EachData.tsx @@ -1,5 +1,6 @@ import React, { FC, useEffect, useState } from "react"; -import { Linking, TouchableOpacity } from "react-native"; +import { Linking, TouchableOpacity, Text } from "react-native"; +import { Dialog, Button, Input } from "react-native-elements"; import { checkDuplicateTrainData } from "../../lib/checkDuplicateTrainData"; import { getTrainDelayStatus } from "../../lib/getTrainDelayStatus"; import { getTrainType } from "../../lib/getTrainType"; @@ -12,6 +13,9 @@ 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"; +import { getStationID } from "../../lib/eachTrainInfoCoreLib/getStationData"; +import { useStationList } from "../../stateBox/useStationList"; +import { lineList } from "../../lib/getStationList"; type Props = { d: { @@ -23,6 +27,7 @@ type Props = { trainDescriptionSwitch: boolean; station: { Station_JP: string; + StationNumber: string; }; navigate: (screen: string, data?: any) => void; openStationACFromEachTrainInfo: (station: string) => void; @@ -37,6 +42,15 @@ export const EachData: FC = (props) => { openStationACFromEachTrainInfo, } = props; const { currentTrain } = useCurrentTrain(); + const { originalStationList } = useStationList(); + const stationList = + originalStationList && + lineList.map((d) => + originalStationList[d].map((a) => ({ + StationNumber: a.StationNumber, + StationName: a.Station_JP, + })) + ); const openTrainInfo = (d: { train: string; lastStation: string; @@ -116,8 +130,60 @@ export const EachData: FC = (props) => { }); }, [currentTrainData, currentTrain]); + const [dialog, setDialog] = useState(false); + const [posInput, setPosInput] = useState(""); + const [descInput, setDescInput] = useState(""); + const [stationInput, setStationInput] = useState(""); + const [stationNumberInput, setStationNumberInput] = useState(""); return ( <> + { + setDialog(false); + }} + > + 路線: {currentTrainData?.Line} + 地点ID: {currentTrainData?.PosNum} + 駅名: {stationInput} + 駅ナンバー: {stationNumberInput} + + + = (props) => { ? currentTrainData?.PosNum + currentTrainData?.Line : trainPositionText(currentTrainData) } ${platformNumber ? platformNumber + "番線" : ""} ${ - platformDescription ? "("+platformDescription+")" : "" + platformDescription ? "(" + platformDescription + ")" : "" }`} onLongClick={() => { - Linking.openURL( - "https://nexcloud.haruk.in/apps/forms/s/TEkBQW5WLcYjLyAzGxncQLtw" - ); + const { isBetween, Pos } = trainPosition(currentTrainData); + if (isBetween === true) return; + setStationInput(Pos.Pos); + setStationNumberInput(getStationID(currentTrainData?.Pos, stationList)); + setDescInput(platformDescription || ""); + setPosInput(platformNumber?.toString() || ""); + setDialog(true); }} /> )} From 2e95a35fce3726e9c263bed140925d10a5477b11 Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Fri, 29 Nov 2024 01:57:45 +0000 Subject: [PATCH 2/9] =?UTF-8?q?=E3=82=B3=E3=83=BC=E3=83=89=E3=81=AE?= =?UTF-8?q?=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/発車時刻表/EachData.tsx | 65 ++++++++++++------------- 1 file changed, 32 insertions(+), 33 deletions(-) diff --git a/components/発車時刻表/EachData.tsx b/components/発車時刻表/EachData.tsx index 250404f..742ebe4 100644 --- a/components/発車時刻表/EachData.tsx +++ b/components/発車時刻表/EachData.tsx @@ -44,13 +44,13 @@ export const EachData: FC = (props) => { const { currentTrain } = useCurrentTrain(); const { originalStationList } = useStationList(); const stationList = - originalStationList && - lineList.map((d) => - originalStationList[d].map((a) => ({ - StationNumber: a.StationNumber, - StationName: a.Station_JP, - })) - ); + originalStationList && + lineList.map((d) => + originalStationList[d].map((a) => ({ + StationNumber: a.StationNumber, + StationName: a.Station_JP, + })) + ); const openTrainInfo = (d: { train: string; lastStation: string; @@ -137,12 +137,7 @@ export const EachData: FC = (props) => { const [stationNumberInput, setStationNumberInput] = useState(""); return ( <> - { - setDialog(false); - }} - > + setDialog(false)}> 路線: {currentTrainData?.Line} 地点ID: {currentTrainData?.PosNum} 駅名: {stationInput} @@ -162,25 +157,27 @@ export const EachData: FC = (props) => { @@ -220,7 +217,9 @@ export const EachData: FC = (props) => { const { isBetween, Pos } = trainPosition(currentTrainData); if (isBetween === true) return; setStationInput(Pos.Pos); - setStationNumberInput(getStationID(currentTrainData?.Pos, stationList)); + setStationNumberInput( + getStationID(currentTrainData?.Pos, stationList) + ); setDescInput(platformDescription || ""); setPosInput(platformNumber?.toString() || ""); setDialog(true); From 330efc8b99121d39b569eee7dfa8e142f3c26f4b Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Tue, 3 Dec 2024 06:33:54 +0000 Subject: [PATCH 3/9] =?UTF-8?q?=E9=80=81=E4=BF=A1=E6=A9=9F=E8=83=BD?= =?UTF-8?q?=E3=82=92=E6=96=B0=E5=9E=8B=E3=81=AB=E7=BD=AE=E3=81=8D=E6=8F=9B?= =?UTF-8?q?=E3=81=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/発車時刻表/EachData.tsx | 121 ++++-------------- .../LED_inside_Component/TrainPosition.tsx | 113 ++++++++++++++++ .../TrainPositionDataPush.tsx | 77 +++++++++++ components/発車時刻表/LED_vidion.js | 1 + 4 files changed, 219 insertions(+), 93 deletions(-) create mode 100644 components/発車時刻表/LED_inside_Component/TrainPosition.tsx create mode 100644 components/発車時刻表/LED_inside_Component/TrainPositionDataPush.tsx diff --git a/components/発車時刻表/EachData.tsx b/components/発車時刻表/EachData.tsx index 742ebe4..241edde 100644 --- a/components/発車時刻表/EachData.tsx +++ b/components/発車時刻表/EachData.tsx @@ -12,10 +12,8 @@ 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"; -import { getStationID } from "../../lib/eachTrainInfoCoreLib/getStationData"; -import { useStationList } from "../../stateBox/useStationList"; -import { lineList } from "../../lib/getStationList"; +import { TrainPosition } from "./LED_inside_Component/TrainPosition"; +import { TrainPositionDataPush } from "./LED_inside_Component/TrainPositionDataPush"; type Props = { d: { @@ -42,15 +40,6 @@ export const EachData: FC = (props) => { openStationACFromEachTrainInfo, } = props; const { currentTrain } = useCurrentTrain(); - const { originalStationList } = useStationList(); - const stationList = - originalStationList && - lineList.map((d) => - originalStationList[d].map((a) => ({ - StationNumber: a.StationNumber, - StationName: a.Station_JP, - })) - ); const openTrainInfo = (d: { train: string; lastStation: string; @@ -97,6 +86,7 @@ export const EachData: FC = (props) => { } return customTrainData; }; + const [train, setTrain] = useState(getTrainDataFromCurrentTrain(d.train)); useEffect(() => { setTrain(getTrainDataFromCurrentTrain(d.train)); @@ -109,26 +99,9 @@ export const EachData: FC = (props) => { currentTrainData, station.Station_JP )}`; - const trainPositionText = (trainData: trainDataType) => { - const { isBetween, Pos } = trainPosition(trainData); - if (isBetween === true) return `現在地:${Pos.from}→${Pos.to}間を走行中`; - else return Pos.Pos == "" ? "" : `現在地:${Pos.Pos}`; - }; const [platformNumber, setPlatformNumber] = useState(); const [platformDescription, setPlatformDescription] = useState(); - useEffect(() => { - fetch( - `https://n8n.haruk.in/webhook/JR-shikoku-PosID?PosNum=${currentTrainData?.PosNum}&Line=${currentTrainData?.Line}` - ) - .then((res) => res.json()) - .then((data) => { - setPlatformNumber(data?.type == "Station" ? data?.platform : undefined); - setPlatformDescription( - data?.type == "Station" ? data?.description : undefined - ); - }); - }, [currentTrainData, currentTrain]); const [dialog, setDialog] = useState(false); const [posInput, setPosInput] = useState(""); @@ -137,50 +110,18 @@ export const EachData: FC = (props) => { const [stationNumberInput, setStationNumberInput] = useState(""); return ( <> - setDialog(false)}> - 路線: {currentTrainData?.Line} - 地点ID: {currentTrainData?.PosNum} - 駅名: {stationInput} - 駅ナンバー: {stationNumberInput} - - - + = (props) => { {trainDescriptionSwitch && ( - { - const { isBetween, Pos } = trainPosition(currentTrainData); - if (isBetween === true) return; - setStationInput(Pos.Pos); - setStationNumberInput( - getStationID(currentTrainData?.Pos, stationList) - ); - setDescInput(platformDescription || ""); - setPosInput(platformNumber?.toString() || ""); - setDialog(true); - }} + )} {trainDescriptionSwitch && !!train.info && ( diff --git a/components/発車時刻表/LED_inside_Component/TrainPosition.tsx b/components/発車時刻表/LED_inside_Component/TrainPosition.tsx new file mode 100644 index 0000000..f1dc0bf --- /dev/null +++ b/components/発車時刻表/LED_inside_Component/TrainPosition.tsx @@ -0,0 +1,113 @@ +import React, { FC, useEffect } from "react"; +import { Text, TextStyle, View, TouchableOpacity } from "react-native"; +import { useStationList } from "../../../stateBox/useStationList"; +import { + trainDataType, + trainPosition, +} from "../../../lib/trainPositionTextArray"; +import { lineList } from "../../../lib/getStationList"; +import { getStationID } from "../../../lib/eachTrainInfoCoreLib/getStationData"; +import { useCurrentTrain } from "../../../stateBox/useCurrentTrain"; + +const descriptionStyle: TextStyle = { + fontSize: parseInt("16%"), + fontWeight: "bold", +}; + +type Props = { + numberOfLines?: number; + trainIDSwitch: boolean; + currentTrainData: trainDataType; + setStationInput: (station: string) => void; + setStationNumberInput: (station: string) => void; + setDescInput: (desc: string) => void; + setPosInput: (pos: string) => void; + setDialog: (dialog: boolean) => void; + platformDescription: string; + platformNumber: number; + setPlatformDescription: (desc: string) => void; + setPlatformNumber: (num: number) => void; +}; + +export const TrainPosition: FC = ({ + numberOfLines = 0, + trainIDSwitch, + currentTrainData, + setStationInput, + setStationNumberInput, + setDescInput, + setPosInput, + setDialog, + setPlatformDescription, + setPlatformNumber, + platformDescription, + platformNumber, +}) => { + const { currentTrain } = useCurrentTrain(); + const { originalStationList } = useStationList(); + const stationList = + originalStationList && + lineList.map((d) => + originalStationList[d].map((a) => ({ + StationNumber: a.StationNumber, + StationName: a.Station_JP, + })) + ); + useEffect(() => { + fetch( + `https://n8n.haruk.in/webhook/JR-shikoku-PosID?PosNum=${currentTrainData?.PosNum}&Line=${currentTrainData?.Line}` + ) + .then((res) => res.json()) + .then((data: { type: string; platform: number; description: string }) => { + setPlatformNumber(data?.type == "Station" ? data?.platform : undefined); + setPlatformDescription( + data?.type == "Station" ? data?.description : undefined + ); + }); + }, [currentTrainData, currentTrain]); + + const trainPositionText = (trainData: trainDataType) => { + const { isBetween, Pos } = trainPosition(trainData); + if (isBetween === true) return `現在地:${Pos.from}→${Pos.to}間を走行中`; + else return Pos.Pos == "" ? "" : `現在地:${Pos.Pos}`; + }; + + return ( + { + const { isBetween, Pos } = trainPosition(currentTrainData); + if (isBetween === true) return; + setStationInput(Pos.Pos); + setStationNumberInput(getStationID(currentTrainData?.Pos, stationList)); + setDescInput(platformDescription || ""); + setPosInput(platformNumber?.toString() || ""); + setDialog(true); + }} + > + + + {`${ + trainIDSwitch + ? currentTrainData?.PosNum + currentTrainData?.Line + : trainPositionText(currentTrainData) + } ${platformNumber ? platformNumber + "番線" : ""} ${ + platformDescription ? "(" + platformDescription + ")" : "" + }`} + + + + ); +}; diff --git a/components/発車時刻表/LED_inside_Component/TrainPositionDataPush.tsx b/components/発車時刻表/LED_inside_Component/TrainPositionDataPush.tsx new file mode 100644 index 0000000..7bf8be2 --- /dev/null +++ b/components/発車時刻表/LED_inside_Component/TrainPositionDataPush.tsx @@ -0,0 +1,77 @@ +import React, { FC, useState } from "react"; +import { Text } from "react-native"; +import { Dialog, Input, Button } from "react-native-elements"; +import { trainDataType } from "../../../lib/trainPositionTextArray"; +import { useCurrentTrain } from "../../../stateBox/useCurrentTrain"; +type Props = { + dialog: boolean; + setDialog: (dialog: boolean) => void; + currentTrainData: trainDataType; + stationInput: string; + stationNumberInput: string; + posInput: string; + descInput: string; + setPosInput: (pos: string) => void; + setDescInput: (desc: string) => void; + station: { + Station_JP: string; + StationNumber: string; + }; +}; +export const TrainPositionDataPush: FC = ({ + dialog, + setDialog, + currentTrainData, + stationInput, + stationNumberInput, + posInput, + descInput, + setPosInput, + setDescInput, + station, +}) => { + const sendPlatformData = () => { + fetch(`https://n8n.haruk.in/webhook/JR-shikoku-PosID`, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + PosId: currentTrainData?.PosNum, + lineName: currentTrainData?.Line, + PlatformNum: parseInt(posInput), + Description: descInput, + StationName: station.Station_JP, + StationId: station.StationNumber, + }), + }) + .then(() => { + alert("位置情報データを送信しました。"); + setDialog(false); + setPosInput(""); + setDescInput(""); + }) + .catch(() => { + alert("位置情報データの送信に失敗しました。"); + }); + }; + return ( + setDialog(false)}> + 路線: {currentTrainData?.Line} + 地点ID: {currentTrainData?.PosNum} + 駅名: {stationInput} + 駅ナンバー: {stationNumberInput} + + + + ); +}; diff --git a/components/発車時刻表/LED_vidion.js b/components/発車時刻表/LED_vidion.js index 51fa6e3..eca24ec 100644 --- a/components/発車時刻表/LED_vidion.js +++ b/components/発車時刻表/LED_vidion.js @@ -206,6 +206,7 @@ export default function LED_vision(props) { openStationACFromEachTrainInfo, }} station={station[0]} + key={d.train} /> ))} {areaString != "" && isInfoArea && ( From d64eaf4671e55cdf99007d2d04a193ff760c31d7 Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Fri, 6 Dec 2024 00:43:14 +0000 Subject: [PATCH 4/9] =?UTF-8?q?=E5=89=8A=E9=99=A4=E3=82=B3=E3=83=9E?= =?UTF-8?q?=E3=83=B3=E3=83=89=E3=82=92=E5=AE=9F=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/発車時刻表/EachData.tsx | 10 ++++ .../LED_inside_Component/TrainPosition.tsx | 26 ++++++++--- .../TrainPositionDataDelete.tsx | 46 +++++++++++++++++++ 3 files changed, 76 insertions(+), 6 deletions(-) create mode 100644 components/発車時刻表/LED_inside_Component/TrainPositionDataDelete.tsx diff --git a/components/発車時刻表/EachData.tsx b/components/発車時刻表/EachData.tsx index 241edde..0604b9b 100644 --- a/components/発車時刻表/EachData.tsx +++ b/components/発車時刻表/EachData.tsx @@ -14,6 +14,7 @@ import { TrainName } from "./LED_inside_Component/TrainName"; import { customTrainDataDetector } from "../custom-train-data"; import { TrainPosition } from "./LED_inside_Component/TrainPosition"; import { TrainPositionDataPush } from "./LED_inside_Component/TrainPositionDataPush"; +import { TrainPositionDataDelete } from "./LED_inside_Component/TrainPositionDataDelete"; type Props = { d: { @@ -104,12 +105,20 @@ export const EachData: FC = (props) => { const [platformDescription, setPlatformDescription] = useState(); const [dialog, setDialog] = useState(false); + const [deleteDialog, setDeleteDialog] = useState(false); const [posInput, setPosInput] = useState(""); const [descInput, setDescInput] = useState(""); const [stationInput, setStationInput] = useState(""); const [stationNumberInput, setStationNumberInput] = useState(""); return ( <> + = (props) => { setDescInput={setDescInput} setPosInput={setPosInput} setDialog={setDialog} + setDeleteDialog={setDeleteDialog} setPlatformDescription={setPlatformDescription} setPlatformNumber={setPlatformNumber} platformDescription={platformDescription} diff --git a/components/発車時刻表/LED_inside_Component/TrainPosition.tsx b/components/発車時刻表/LED_inside_Component/TrainPosition.tsx index f1dc0bf..a3ecdbc 100644 --- a/components/発車時刻表/LED_inside_Component/TrainPosition.tsx +++ b/components/発車時刻表/LED_inside_Component/TrainPosition.tsx @@ -23,6 +23,7 @@ type Props = { setDescInput: (desc: string) => void; setPosInput: (pos: string) => void; setDialog: (dialog: boolean) => void; + setDeleteDialog: (dialog: boolean) => void; platformDescription: string; platformNumber: number; setPlatformDescription: (desc: string) => void; @@ -38,6 +39,7 @@ export const TrainPosition: FC = ({ setDescInput, setPosInput, setDialog, + setDeleteDialog, setPlatformDescription, setPlatformNumber, platformDescription, @@ -86,12 +88,24 @@ export const TrainPosition: FC = ({ }} onLongPress={() => { const { isBetween, Pos } = trainPosition(currentTrainData); - if (isBetween === true) return; - setStationInput(Pos.Pos); - setStationNumberInput(getStationID(currentTrainData?.Pos, stationList)); - setDescInput(platformDescription || ""); - setPosInput(platformNumber?.toString() || ""); - setDialog(true); + if (isBetween === true) { + if (platformNumber == undefined && platformDescription == undefined) + return; + setStationInput(`${Pos.from}→${Pos.to}間`); + setStationNumberInput( + getStationID(currentTrainData?.Pos, stationList) + ); + setPosInput(platformNumber?.toString() || ""); + setDeleteDialog(true); + } else { + setStationInput(Pos.Pos); + setStationNumberInput( + getStationID(currentTrainData?.Pos, stationList) + ); + setDescInput(platformDescription || ""); + setPosInput(platformNumber?.toString() || ""); + setDialog(true); + } }} > diff --git a/components/発車時刻表/LED_inside_Component/TrainPositionDataDelete.tsx b/components/発車時刻表/LED_inside_Component/TrainPositionDataDelete.tsx new file mode 100644 index 0000000..b266d6c --- /dev/null +++ b/components/発車時刻表/LED_inside_Component/TrainPositionDataDelete.tsx @@ -0,0 +1,46 @@ +import React, { FC } from "react"; +import { Text } from "react-native"; +import { Dialog, Button } from "react-native-elements"; +import { trainDataType } from "../../../lib/trainPositionTextArray"; +type Props = { + dialog: boolean; + setDialog: (dialog: boolean) => void; + currentTrainData: trainDataType; + stationInput: string; + stationNumberInput: string; +}; +export const TrainPositionDataDelete: FC = ({ + dialog, + setDialog, + currentTrainData, + stationInput, + stationNumberInput, +}) => { + const sendPlatformData = () => { + fetch(`https://n8n.haruk.in/webhook/JR-shikoku-PosID`, { + method: "DELETE", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + PosId: currentTrainData?.PosNum, + lineName: currentTrainData?.Line, + }), + }) + .then(() => { + alert("位置情報データ削除要求を送信しました。"); + setDialog(false); + }) + .catch(() => { + alert("位置情報データ削除要求の送信に失敗しました。"); + }); + }; + return ( + setDialog(false)}> + 以下のデータを誤情報として削除要求を出しますか? + 路線: {currentTrainData?.Line} + 地点ID: {currentTrainData?.PosNum} + 駅名: {stationInput} + 駅ナンバー: {stationNumberInput} + + ); +}; From f6b2cc54ed67569b2dfb32bda478cbd1ccd64bf8 Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Fri, 6 Dec 2024 06:18:29 +0000 Subject: [PATCH 5/9] =?UTF-8?q?=E5=88=97=E8=BB=8A=E3=83=93=E3=83=A5?= =?UTF-8?q?=E3=83=BC=E3=81=AB=E3=82=82=E4=BD=8D=E7=BD=AE=E8=A1=A8=E7=A4=BA?= =?UTF-8?q?=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../EachTrainInfo/TrainDataView.js | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/components/ActionSheetComponents/EachTrainInfo/TrainDataView.js b/components/ActionSheetComponents/EachTrainInfo/TrainDataView.js index 26d7334..c649ab6 100644 --- a/components/ActionSheetComponents/EachTrainInfo/TrainDataView.js +++ b/components/ActionSheetComponents/EachTrainInfo/TrainDataView.js @@ -19,6 +19,23 @@ export const TrainDataView = ({ const { isLandscape } = useDeviceOrientationChange(); const { inject } = useCurrentTrain(); const [mapsStationData, setMapsStationData] = useState(undefined); + + const [platformNumber, setPlatformNumber] = useState(); + const [platformDescription, setPlatformDescription] = useState(); + useEffect(() => { + //currentTrainData.Pos = "鴨川~端岡"; //test + if (!currentTrainData) return; + fetch( + `https://n8n.haruk.in/webhook/JR-shikoku-PosID?PosNum=${currentTrainData?.PosNum}&Line=${currentTrainData?.Line}` + ) + .then((res) => res.json()) + .then((data) => { + setPlatformNumber(data?.type == "Station" ? data?.platform : undefined); + setPlatformDescription( + data?.type == "Station" ? data?.description : undefined + ); + }); + }, [currentTrainData]); useEffect(() => { getStationList2().then(setMapsStationData); }, []); @@ -26,7 +43,7 @@ export const TrainDataView = ({ const trainPositionText = (trainData) => { const { isBetween, Pos } = trainPosition(trainData); if (isBetween === true) return `${Pos.from}~${Pos.to}`; - else return Pos.Pos == "" ? "" : `${Pos.Pos}`; + else return Pos.Pos == "" ? "" : `${Pos.Pos}${platformNumber ? ` ${platformNumber}番線`:""}${platformDescription ? `\n${platformNumber}番線`:""}`; }; return ( Date: Fri, 6 Dec 2024 06:39:26 +0000 Subject: [PATCH 6/9] =?UTF-8?q?key=E3=81=AE=E3=83=90=E3=82=B0=E3=82=92?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- menu.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/menu.js b/menu.js index 260d4a8..12b9d36 100644 --- a/menu.js +++ b/menu.js @@ -362,10 +362,10 @@ const JRSTraInfoBox = () => { /> ) : delayData ? ( - delayData.map((d) => { + delayData.map((d,index,array) => { let data = d.split(" "); return ( - + {data[0].replace("\n", "")} From f60161b664f1bb063f2e65686f53a310a0f24188 Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Fri, 6 Dec 2024 06:54:07 +0000 Subject: [PATCH 7/9] =?UTF-8?q?=E5=9C=B0=E5=9B=B3=E3=81=A7=E3=81=AEkey?= =?UTF-8?q?=E9=87=8D=E8=A4=87=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/trainMenu.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/trainMenu.js b/components/trainMenu.js index ea00fac..ef5f5d2 100644 --- a/components/trainMenu.js +++ b/components/trainMenu.js @@ -82,7 +82,7 @@ export default function TrainMenu({ style }) { d={d} navigate={navigate} webview={webview} - key={index + indexBase} + key={D.StationNumber+d} /> ))} From 139ce0ed7b08b2a56a65d8b76b1963c37e0637bd Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Fri, 6 Dec 2024 09:48:26 +0000 Subject: [PATCH 8/9] =?UTF-8?q?=E3=82=B3=E3=83=BC=E3=83=89=E3=81=AE?= =?UTF-8?q?=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../EachTrainInfo/StateBox.tsx | 56 ++++++++++++------- .../EachTrainInfo/TrainDataView.js | 11 ++-- 2 files changed, 43 insertions(+), 24 deletions(-) diff --git a/components/ActionSheetComponents/EachTrainInfo/StateBox.tsx b/components/ActionSheetComponents/EachTrainInfo/StateBox.tsx index 41cf9cb..fa5f65c 100644 --- a/components/ActionSheetComponents/EachTrainInfo/StateBox.tsx +++ b/components/ActionSheetComponents/EachTrainInfo/StateBox.tsx @@ -6,30 +6,46 @@ type stateBox = { title: string; style?: ViewStyle; mode?: number; + endText?: string; }; -export const StateBox: FC = ({ text, title, style, mode }) => ( - - {title} - - - {text?.match("~") ? ( - <> - - {text.split("~")[0]} +export const StateBox: FC = (props) => { + const { text, title, style, mode, endText } = props; + return ( + + {title} + + + {text?.match("~") ? ( + <> + + {text.split("~")[0]} + + + {mode == 2 ? "→" : "↓"} + + + {text.split("~")[1]} + + + ) : ( + {text} + )} + + {endText && ( + + + {endText} - - {mode == 2 ? "→" : "↓"} - - - {text.split("~")[1]} - - - ) : ( - {text} + )} - -); + ); +}; const boxStyle: ViewStyle = { flex: 1, backgroundColor: "white", diff --git a/components/ActionSheetComponents/EachTrainInfo/TrainDataView.js b/components/ActionSheetComponents/EachTrainInfo/TrainDataView.js index c649ab6..0996076 100644 --- a/components/ActionSheetComponents/EachTrainInfo/TrainDataView.js +++ b/components/ActionSheetComponents/EachTrainInfo/TrainDataView.js @@ -19,7 +19,7 @@ export const TrainDataView = ({ const { isLandscape } = useDeviceOrientationChange(); const { inject } = useCurrentTrain(); const [mapsStationData, setMapsStationData] = useState(undefined); - + const [platformNumber, setPlatformNumber] = useState(); const [platformDescription, setPlatformDescription] = useState(); useEffect(() => { @@ -41,9 +41,11 @@ export const TrainDataView = ({ }, []); 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}${platformNumber ? ` ${platformNumber}番線`:""}${platformDescription ? `\n${platformNumber}番線`:""}`; + const { isBetween, Pos: PosData } = trainPosition(trainData); + const { from, to, Pos } = PosData; + if (isBetween === true) return `${from}~${to}`; + if (Pos == "") return ""; + return `${Pos}${platformNumber ? ` ${platformNumber}番線` : ""}`; }; return ( Date: Mon, 16 Dec 2024 14:33:29 +0000 Subject: [PATCH 9/9] =?UTF-8?q?TrainDataView=E3=81=AB=E3=82=82=E8=BF=BD?= =?UTF-8?q?=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../EachTrainInfo/TrainDataView.js | 61 ++++++++++++++++++- 1 file changed, 59 insertions(+), 2 deletions(-) diff --git a/components/ActionSheetComponents/EachTrainInfo/TrainDataView.js b/components/ActionSheetComponents/EachTrainInfo/TrainDataView.js index 0996076..0aa5dcd 100644 --- a/components/ActionSheetComponents/EachTrainInfo/TrainDataView.js +++ b/components/ActionSheetComponents/EachTrainInfo/TrainDataView.js @@ -6,6 +6,12 @@ import { getStationList2 } from "../../../lib/getStationList2"; import { useCurrentTrain } from "../../../stateBox/useCurrentTrain"; import { SheetManager } from "react-native-actions-sheet"; import { trainPosition } from "../../../lib/trainPositionTextArray"; +import { TrainPositionDataPush } from "../../発車時刻表/LED_inside_Component/TrainPositionDataPush"; +import { getStationID } from "../../../lib/eachTrainInfoCoreLib/getStationData"; +import { useStationList } from "../../../stateBox/useStationList"; +import { lineList } from "../../../lib/getStationList"; + + export const TrainDataView = ({ currentTrainData, @@ -15,6 +21,17 @@ export const TrainDataView = ({ mode = 0, navigate, }) => { + + const { originalStationList } = useStationList(); + + const stationList = + originalStationList && + lineList.map((d) => + originalStationList[d].map((a) => ({ + StationNumber: a.StationNumber, + StationName: a.Station_JP, + })) + ); const { width, height } = useWindowDimensions(); const { isLandscape } = useDeviceOrientationChange(); const { inject } = useCurrentTrain(); @@ -47,7 +64,24 @@ export const TrainDataView = ({ if (Pos == "") return ""; return `${Pos}${platformNumber ? ` ${platformNumber}番線` : ""}`; }; - return ( + const [dialog, setDialog] = useState(false); + const [deleteDialog, setDeleteDialog] = useState(false); + const [posInput, setPosInput] = useState(""); + const [descInput, setDescInput] = useState(""); + const [stationInput, setStationInput] = useState(""); + const [stationNumberInput, setStationNumberInput] = useState(""); + return (<> + { + const { isBetween, Pos } = trainPosition(currentTrainData); + if (isBetween === true) { + if (platformNumber == undefined && platformDescription == undefined) + return; + setStationInput(`${Pos.from}→${Pos.to}間`); + setStationNumberInput( + getStationID(currentTrainData?.Pos, stationList) + ); + setPosInput(platformNumber?.toString() || ""); + setDeleteDialog(true); + } else { + setStationInput(Pos.Pos); + setStationNumberInput( + getStationID(currentTrainData?.Pos, stationList) + ); + setDescInput(platformDescription || ""); + setPosInput(platformNumber?.toString() || ""); + setDialog(true); + } + }} onPress={() => { + if(!onLine) return; const test = []; Object.keys(mapsStationData).forEach((d) => { mapsStationData[d].forEach((x) => { @@ -130,5 +186,6 @@ export const TrainDataView = ({ + ); };