diff --git a/components/ActionSheetComponents/EachTrainInfoCore/HeaderText.tsx b/components/ActionSheetComponents/EachTrainInfoCore/HeaderText.tsx index 5ac484b..9479047 100644 --- a/components/ActionSheetComponents/EachTrainInfoCore/HeaderText.tsx +++ b/components/ActionSheetComponents/EachTrainInfoCore/HeaderText.tsx @@ -4,6 +4,7 @@ import { Ionicons } from "@expo/vector-icons"; import { SheetManager } from "react-native-actions-sheet"; import { getType } from "../../../lib/eachTrainInfoCoreLib/getType"; import { migrateTrainName } from "../../../lib/eachTrainInfoCoreLib/migrateTrainName"; +import { TrainIconStatus } from "./trainIconStatus"; import { TrainViewIcon } from "./trainViewIcon"; type Props = { @@ -57,6 +58,7 @@ export const HeaderText: FC = ({ }, [data.limited, trainData]); return ( + {trainName} diff --git a/components/ActionSheetComponents/EachTrainInfoCore/trainIconStatus.tsx b/components/ActionSheetComponents/EachTrainInfoCore/trainIconStatus.tsx new file mode 100644 index 0000000..1fcd4cf --- /dev/null +++ b/components/ActionSheetComponents/EachTrainInfoCore/trainIconStatus.tsx @@ -0,0 +1,93 @@ +import React, { ComponentProps, FC, useEffect, useState } from "react"; +import { View, Image, TouchableOpacity } from "react-native"; +import { Ionicons } from "@expo/vector-icons"; +import dayjs from "dayjs"; +import { useInterval } from "../../../lib/useInterval"; +import { Icon } from "@expo/vector-icons/build/createIconSet"; +import { SheetManager } from "react-native-actions-sheet"; + +type GlyphNames = ComponentProps["name"]; + +type Props = { + data: { trainNum: string; limited: string }; + navigate: any; + from: string; +}; +type apt = { + name: GlyphNames; + color: string; +}; +export const TrainIconStatus: FC = ({ data, navigate, from }) => { + const [trainIcon, setTrainIcon] = useState(null); + const [anpanmanStatus, setAnpanmanStatus] = useState(); + useEffect(() => { + if (!data.trainNum) return; + switch (data.trainNum) { + case "32D": + case "36D": + case "44D": + case "48D": + case "56D": + case "33D": + case "37D": + case "45D": + case "49D": + case "57D": + setTrainIcon( + `https://n8n.haruk.in/webhook/dosan-anpanman-pictures.png?trainNum=${ + data.trainNum + }&day=${dayjs().format("D")}` + ); + fetch( + `https://n8n.haruk.in/webhook/dosan-anpanman?trainNum=${ + data.trainNum + }&month=${dayjs().format("M")}&day=${dayjs().format("D")}` + ) + .then((d) => d.json()) + .then((d) => { + if (d.trainStatus == "〇") { + //setAnpanmanStatus({name:"checkmark-circle-outline",color:"blue"}); + } else if (d.trainStatus == "△") { + setAnpanmanStatus({ name: "warning-outline", color: "yellow" }); + } else if (d.trainStatus == "×") { + setAnpanmanStatus({ name: "close-circle-outline", color: "red" }); + } + }); + break; + } + }, [data.trainNum]); + const [move, setMove] = useState(true); + useInterval( + () => { + // anpanmanStatusがデータを持っているなら実行 + if (anpanmanStatus) setMove(!move); + }, + 1000, + true + ); + return ( + <> + {trainIcon && ( + { + navigate("howto", { + info: "https://www.jr-eki.com/aptrain/index.html", + goTo: from, + }); + SheetManager.hide("EachTrainInfo"); + }} + > + {move ? ( + + ) : ( + + )} + + )} + + ); +}; diff --git a/components/AllTrainDiagramView.js b/components/AllTrainDiagramView.js index b948001..15585f4 100644 --- a/components/AllTrainDiagramView.js +++ b/components/AllTrainDiagramView.js @@ -58,7 +58,7 @@ export default function AllTrainDiagramView() { }${TrainNumber}`, }, navigate, - from: "AllTrainDiagramView", + from: "AllTrainIDList", }; SheetManager.show("EachTrainInfo", { payload, diff --git a/components/DynamicHeaderScrollView.js b/components/DynamicHeaderScrollView.js index 9fc6bd1..5602473 100644 --- a/components/DynamicHeaderScrollView.js +++ b/components/DynamicHeaderScrollView.js @@ -40,7 +40,7 @@ export const DynamicHeaderScrollView = (props) => { }, [headerSize]); const viewHeader = useMemo(() => { switch (from) { - case "AllTrainDiagramView": + case "AllTrainIDList": case "NearTrainDiagramView": case "LED2": return true; diff --git a/components/trainbaseview.js b/components/trainbaseview.js index 8b85031..dd68263 100644 --- a/components/trainbaseview.js +++ b/components/trainbaseview.js @@ -37,7 +37,7 @@ export default function TrainBase({ route }) { setSupportMultipleWindows={false} onMessage={(event) => {}} /> - {(from == "LED" || from == "LED2" || from == "AllTrainDiagramView") && ( + {(from == "LED" || from == "LED2" || from == "AllTrainIDList") && ( - navigate(from == "AllTrainDiagramView" ? "AllTrainIDList" : "menu") + navigate(from == "AllTrainIDList" ? "AllTrainIDList" : "menu") } > diff --git a/stateBox/useTrainMenu.js b/stateBox/useTrainMenu.js index bd3008d..5e1c10b 100644 --- a/stateBox/useTrainMenu.js +++ b/stateBox/useTrainMenu.js @@ -44,7 +44,7 @@ export const TrainMenuProvider = ({ children }) => { const [selectedLine, setSelectedLine] = useState(undefined); const [mapsStationData, setMapsStationData] = useState(undefined); const [injectJavaScript, setInjectJavaScript] = useState(); - + useEffect(() => getStationList2().then(setMapsStationData), []); //画面表示関連 @@ -73,10 +73,6 @@ export const TrainMenuProvider = ({ children }) => { trainMenu ); - useEffect(() => { - getStationList2().then(setMapsStationData); - }, []); - useEffect(() => { //ニュース表示 AS.getItem("status")