From d251b584b6b7830677dc88c975053bc9a283d68d Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Thu, 29 Aug 2024 14:25:51 +0000 Subject: [PATCH 01/14] =?UTF-8?q?=E3=82=A2=E3=83=B3=E3=83=91=E3=83=B3?= =?UTF-8?q?=E3=83=9E=E3=83=B3=E5=88=97=E8=BB=8A=E3=81=AE=E3=82=A2=E3=82=A4?= =?UTF-8?q?=E3=82=B3=E3=83=B3=E3=82=92=E5=88=97=E8=BB=8A=E6=83=85=E5=A0=B1?= =?UTF-8?q?=E3=81=AB=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../EachTrainInfoCore.js | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/components/ActionSheetComponents/EachTrainInfoCore.js b/components/ActionSheetComponents/EachTrainInfoCore.js index 828e66e..5d76848 100644 --- a/components/ActionSheetComponents/EachTrainInfoCore.js +++ b/components/ActionSheetComponents/EachTrainInfoCore.js @@ -8,6 +8,7 @@ import { useWindowDimensions, BackHandler, Linking, + Image, } from "react-native"; import { Ionicons } from "@expo/vector-icons"; import { SheetManager } from "react-native-actions-sheet"; @@ -34,6 +35,8 @@ import { searchSpecialTrain } from "../../lib/eachTrainInfoCoreLib/searchSpecial import { openBackTrainInfo } from "../../lib/eachTrainInfoCoreLib/openBackTrainInfo"; import { ShowSpecialTrain } from "./EachTrainInfo/ShowSpecialTrain"; import { useNavigation } from "@react-navigation/native"; +import { useInterval } from "../../lib/useInterval"; +import dayjs from "dayjs"; export const EachTrainInfoCore = ({ actionSheetRef, @@ -81,6 +84,51 @@ export const EachTrainInfoCore = ({ const [currentPosition, setCurrentPosition] = useState([]); const [trainData, setTrainData] = useState([]); + const [trainIcon, setTrainIcon] = useState(null); + const [anpanmanStatus, setAnpanmanStatus] = useState({name:"warning-outline",color:"yellow"}); + 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 + ); + fetch(`https://n8n.haruk.in/webhook/dosan-anpanman?month=${dayjs().format("M")}&day=${dayjs().format("D")}&trainNum=${data.trainNum}`) + .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 (Object.keys(anpanmanStatus).length > 0 ) setMove(!move); + }, + 1000, + true + ); + const stationList = originalStationList && lineList.map((d) => @@ -280,6 +328,19 @@ export const EachTrainInfoCore = ({ )} + {trainIcon && ( + + {move ? ( + + ) : ( + + )} + + )} {trainName} From 2e2b2b2ddd1837cb368edb941472e706893c8042 Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Thu, 29 Aug 2024 14:46:42 +0000 Subject: [PATCH 02/14] =?UTF-8?q?=E3=83=95=E3=82=A1=E3=82=A4=E3=83=AB?= =?UTF-8?q?=E3=81=AE=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../EachTrainInfo/trainIconStatus.tsx | 83 +++++++++++++++++++ .../EachTrainInfoCore.js | 59 +------------ 2 files changed, 85 insertions(+), 57 deletions(-) create mode 100644 components/ActionSheetComponents/EachTrainInfo/trainIconStatus.tsx diff --git a/components/ActionSheetComponents/EachTrainInfo/trainIconStatus.tsx b/components/ActionSheetComponents/EachTrainInfo/trainIconStatus.tsx new file mode 100644 index 0000000..93ab139 --- /dev/null +++ b/components/ActionSheetComponents/EachTrainInfo/trainIconStatus.tsx @@ -0,0 +1,83 @@ +import React, { ComponentProps, FC, useEffect, useState } from "react"; +import { View, Image } 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"; + +type GlyphNames = ComponentProps["name"]; +type Props = { + trainData: { + trainNum: string; + limited: string; + }; +}; +type apt = { + name: GlyphNames; + color: string; +}; +export const TrainIconStatus: FC = ({ trainData }) => { + const [trainIcon, setTrainIcon] = useState(null); + const [anpanmanStatus, setAnpanmanStatus] = useState(); + useEffect(() => { + if (!trainData.trainNum) return; + switch (trainData.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=" + + trainData.trainNum + ); + fetch( + `https://n8n.haruk.in/webhook/dosan-anpanman?month=${dayjs().format( + "M" + )}&day=${dayjs().format("D")}&trainNum=${trainData.trainNum}` + ) + .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; + } + }, [trainData.trainNum]); + const [move, setMove] = useState(true); + useInterval( + () => { + // anpanmanStatusがデータを持っているなら実行 + if (anpanmanStatus) setMove(!move); + }, + 1000, + true + ); + return ( + <> + {trainIcon && ( + + {move ? ( + + ) : ( + + )} + + )} + + ); +}; diff --git a/components/ActionSheetComponents/EachTrainInfoCore.js b/components/ActionSheetComponents/EachTrainInfoCore.js index 5d76848..9e13d58 100644 --- a/components/ActionSheetComponents/EachTrainInfoCore.js +++ b/components/ActionSheetComponents/EachTrainInfoCore.js @@ -37,6 +37,7 @@ import { ShowSpecialTrain } from "./EachTrainInfo/ShowSpecialTrain"; import { useNavigation } from "@react-navigation/native"; import { useInterval } from "../../lib/useInterval"; import dayjs from "dayjs"; +import { TrainIconStatus } from "./EachTrainInfo/trainIconStatus"; export const EachTrainInfoCore = ({ actionSheetRef, @@ -84,50 +85,6 @@ export const EachTrainInfoCore = ({ const [currentPosition, setCurrentPosition] = useState([]); const [trainData, setTrainData] = useState([]); - const [trainIcon, setTrainIcon] = useState(null); - const [anpanmanStatus, setAnpanmanStatus] = useState({name:"warning-outline",color:"yellow"}); - 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 - ); - fetch(`https://n8n.haruk.in/webhook/dosan-anpanman?month=${dayjs().format("M")}&day=${dayjs().format("D")}&trainNum=${data.trainNum}`) - .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 (Object.keys(anpanmanStatus).length > 0 ) setMove(!move); - }, - 1000, - true - ); const stationList = originalStationList && @@ -328,19 +285,7 @@ export const EachTrainInfoCore = ({ )} - {trainIcon && ( - - {move ? ( - - ) : ( - - )} - - )} + {trainName} From 5373d4f69161b589d814f4f6ef9ecf463669f743 Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Thu, 29 Aug 2024 17:29:59 +0000 Subject: [PATCH 03/14] =?UTF-8?q?=E3=83=87=E3=83=BC=E3=82=BF=E5=88=86?= =?UTF-8?q?=E9=9B=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Top.js | 12 +-- components/Apps.js | 149 ++++-------------------------------- components/Apps/NewMenu.tsx | 92 ++++++++++++++++++++++ stateBox/useTrainMenu.js | 92 +++++++++++++++++++++- 4 files changed, 199 insertions(+), 146 deletions(-) create mode 100644 components/Apps/NewMenu.tsx diff --git a/Top.js b/Top.js index 65d389a..18f9538 100644 --- a/Top.js +++ b/Top.js @@ -21,19 +21,14 @@ export const Top = ({ navigationRef }) => { const { navigate, addListener } = useNavigation(); //地図用 - const { setMapsStationData, injectJavaScript, setInjectJavaScript } = - useTrainMenu(); + const { injectJavaScript, setInjectJavaScript } = useTrainMenu(); - useEffect(() => { - getStationList2().then(setMapsStationData); - }, []); - const [mapSwitch, setMapSwitch] = React.useState("false"); + const [mapSwitch, setMapSwitch] = useState("false"); useEffect(() => { //地図スイッチ ASCore({ k: "mapSwitch", s: setMapSwitch, d: "false" }); }, []); - const goToFavoriteList = () => navigate("favoriteList"); useEffect(() => { @@ -41,7 +36,6 @@ export const Top = ({ navigationRef }) => { return unsubscribe; }, [{ navigate, addListener }]); - const goToTrainMenu = () => { if (navigationRef.current?.getCurrentRoute().name == "Apps") { if (mapSwitch == "true") { @@ -60,7 +54,7 @@ export const Top = ({ navigationRef }) => { navigate("Apps"); } }; - + useEffect(() => { const unsubscribe = addListener("tabPress", goToTrainMenu); return unsubscribe; diff --git a/components/Apps.js b/components/Apps.js index 1b33f12..2df3147 100644 --- a/components/Apps.js +++ b/components/Apps.js @@ -1,4 +1,4 @@ -import React, { useEffect, useState } from "react"; +import React from "react"; import { View, Platform, @@ -11,10 +11,7 @@ import Constants from "expo-constants"; import { Ionicons } from "@expo/vector-icons"; import * as Updates from "expo-updates"; -import { AS, ASCore } from "../storageControl"; -import { news } from "../config/newsUpdate"; -import { getStationList, lineList } from "../lib/getStationList"; -import { injectJavascriptData } from "../lib/webViewInjectjavascript"; +import { lineList } from "../lib/getStationList"; import { useCurrentTrain } from "../stateBox/useCurrentTrain"; import { useDeviceOrientationChange } from "../stateBox/useDeviceOrientationChange"; import { SheetManager } from "react-native-actions-sheet"; @@ -24,6 +21,7 @@ import { EachTrainInfoCore } from "../components/ActionSheetComponents/EachTrain import { useNavigation } from "@react-navigation/native"; import { useTrainMenu } from "../stateBox/useTrainMenu"; import { AppsWebView } from "./Apps/WebView"; +import { NewMenu } from "./Apps/NewMenu"; /* import StatusbarDetect from '../StatusbarDetect'; var Status = StatusbarDetect(); */ @@ -36,53 +34,15 @@ export default function Apps() { const { navigate } = useNavigation(); const { isLandscape } = useDeviceOrientationChange(); const handleLayout = () => {}; - const { setInjectJavaScript, mapsStationData } = useTrainMenu(); - - //画面表示関連 - const [iconSetting, setIconSetting] = useState(undefined); - const [mapSwitch, setMapSwitch] = useState(undefined); - const [stationMenu, setStationMenu] = useState(undefined); - const [LoadError, setLoadError] = useState(false); - - //列車情報表示関連 - const [trainInfo, setTrainInfo] = useState({ - trainNum: undefined, - limited: undefined, - trainData: undefined, - }); - - //駅情報画面用 - const [originalStationList, setOriginalStationList] = useState(); - const [trainMenu, setTrainMenu] = useState("true"); - useEffect(() => getStationList().then(setOriginalStationList), []); - - //地図表示テキスト - const injectJavascript = injectJavascriptData( + const { setInjectJavaScript, mapsStationData, mapSwitch, - iconSetting, - stationMenu, - trainMenu - ); + LoadError, + setLoadError, + trainInfo, + setTrainInfo, + originalStationList, + injectJavascript, } = useTrainMenu(); - useEffect(() => { - //ニュース表示 - AS.getItem("status") - .then((d) => { - if (d != news) navigate("news"); - }) - .catch(() => navigate("news")); - }, []); - - useEffect(() => { - //列車アイコンスイッチ - ASCore({ k: "iconSwitch", s: setIconSetting, d: "true", u: true }); - //地図スイッチ - ASCore({ k: "mapSwitch", s: setMapSwitch, d: "false", u: true }); - //駅メニュースイッチ - ASCore({ k: "stationSwitch", s: setStationMenu, d: "true", u: true }); - //列車メニュースイッチ - ASCore({ k: "trainSwitch", s: setTrainMenu, d: "true", u: true }); - }, []); const openStationACFromEachTrainInfo = async (stationName) => { await SheetManager.hide("EachTrainInfo"); @@ -100,8 +60,8 @@ export default function Apps() { if (returnDataBase.length) { const payload = { currentStation: returnDataBase, - originalStationList: originalStationList, - navigate: navigate, + originalStationList, + navigate, goTo: "Apps", useShow: () => SheetManager.show("StationDetailView", { payload }), onExit: () => SheetManager.hide("StationDetailView"), @@ -134,8 +94,8 @@ export default function Apps() { ) : null} {/* {Status} */} ); } -const NewMenu = ({ LoadError }) => { - const { webview } = useCurrentTrain(); - const { width } = useWindowDimensions(); - return ( - - { - webview.current?.injectJavaScript(`AccordionClassEvent()`); - }} - > - <> - - - - - - - メニュー - - - - Updates.reloadAsync()} - style={{ - width: 54, - height: 54, - backgroundColor: LoadError ? "red" : "#0099CC", - borderColor: "white", - borderStyle: "solid", - borderWidth: 1, - alignContent: "center", - alignSelf: "center", - alignItems: "center", - }} - > - - - - - - ); -}; const MapsButton = ({ onPress, mapSwitch }) => { const styles = { touch: { diff --git a/components/Apps/NewMenu.tsx b/components/Apps/NewMenu.tsx new file mode 100644 index 0000000..d2e4a8f --- /dev/null +++ b/components/Apps/NewMenu.tsx @@ -0,0 +1,92 @@ +import React from "react"; +import { View, Text, TouchableOpacity, useWindowDimensions, Platform } from "react-native"; +import { Ionicons } from "@expo/vector-icons"; +import * as Updates from "expo-updates"; +import Constants from "expo-constants"; +import { useCurrentTrain } from "../../stateBox/useCurrentTrain"; + +const top = Platform.OS == "ios" ? Constants.statusBarHeight : 0; +export const NewMenu = ({ LoadError }) => { + const { webview } = useCurrentTrain(); + const { width } = useWindowDimensions(); + return ( + + { + webview.current?.injectJavaScript(`AccordionClassEvent()`); + }} + > + <> + + + + + + + メニュー + + + + + Updates.reloadAsync()} + style={{ + width: 54, + height: 54, + backgroundColor: LoadError ? "red" : "#0099CC", + borderColor: "white", + borderStyle: "solid", + borderWidth: 1, + alignContent: "center", + alignSelf: "center", + alignItems: "center", + }} + > + + + + + + ); + }; \ No newline at end of file diff --git a/stateBox/useTrainMenu.js b/stateBox/useTrainMenu.js index efbc979..fe5bf33 100644 --- a/stateBox/useTrainMenu.js +++ b/stateBox/useTrainMenu.js @@ -1,4 +1,11 @@ -import React, { createContext, useContext, useState } from "react"; +import React, { createContext, useContext, useState, useEffect } from "react"; + +import { AS, ASCore } from "../storageControl"; + +import { getStationList } from "../lib/getStationList"; +import { getStationList2 } from "../lib/getStationList2"; +import { injectJavascriptData } from "../lib/webViewInjectjavascript"; + const initialState = { selectedLine: undefined, setSelectedLine: () => {}, @@ -6,6 +13,25 @@ const initialState = { setMapsStationData: () => {}, injectJavaScript: "", setInjectJavaScript: () => {}, + iconSetting: undefined, + setIconSetting: () => {}, + mapSwitch: undefined, + setMapSwitch: () => {}, + stationMenu: undefined, + setStationMenu: () => {}, + LoadError: false, + setLoadError: () => {}, + trainInfo: { + trainNum: undefined, + limited: undefined, + trainData: undefined, + }, + setTrainInfo: () => {}, + originalStationList: undefined, + setOriginalStationList: () => {}, + trainMenu: "true", + setTrainMenu: () => {}, + injectJavascript: "", }; const TrainMenuContext = createContext(initialState); @@ -19,6 +45,54 @@ export const TrainMenuProvider = ({ children }) => { const [mapsStationData, setMapsStationData] = useState(undefined); const [injectJavaScript, setInjectJavaScript] = useState(); + useEffect(() => getStationList2().then(setMapsStationData), []); + + //画面表示関連 + const [iconSetting, setIconSetting] = useState(undefined); + const [mapSwitch, setMapSwitch] = useState(undefined); + const [stationMenu, setStationMenu] = useState(undefined); + const [LoadError, setLoadError] = useState(false); + + //列車情報表示関連 + const [trainInfo, setTrainInfo] = useState({ + trainNum: undefined, + limited: undefined, + trainData: undefined, + }); + + //駅情報画面用 + const [originalStationList, setOriginalStationList] = useState(); + const [trainMenu, setTrainMenu] = useState("true"); + useEffect(() => getStationList().then(setOriginalStationList), []); + + //地図表示テキスト + const injectJavascript = injectJavascriptData( + mapSwitch, + iconSetting, + stationMenu, + trainMenu + ); + + useEffect(() => { + //ニュース表示 + AS.getItem("status") + .then((d) => { + if (d != news) navigate("news"); + }) + .catch(() => navigate("news")); + }, []); + + useEffect(() => { + //列車アイコンスイッチ + ASCore({ k: "iconSwitch", s: setIconSetting, d: "true", u: true }); + //地図スイッチ + ASCore({ k: "mapSwitch", s: setMapSwitch, d: "false", u: true }); + //駅メニュースイッチ + ASCore({ k: "stationSwitch", s: setStationMenu, d: "true", u: true }); + //列車メニュースイッチ + ASCore({ k: "trainSwitch", s: setTrainMenu, d: "true", u: true }); + }, []); + return ( { setMapsStationData, injectJavaScript, setInjectJavaScript, + + iconSetting, + setIconSetting, + mapSwitch, + setMapSwitch, + stationMenu, + setStationMenu, + LoadError, + setLoadError, + trainInfo, + setTrainInfo, + originalStationList, + setOriginalStationList, + trainMenu, + setTrainMenu, + injectJavascript, }} > {children} From 76c8bb8486d779efbe26a2422b2a4345952ec16d Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Thu, 29 Aug 2024 18:08:14 +0000 Subject: [PATCH 04/14] =?UTF-8?q?Apps=E3=81=AE=E5=86=85=E5=AE=B9=E5=88=86?= =?UTF-8?q?=E9=9B=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ActionSheetComponents/EachTrainInfo.js | 6 +- .../EachTrainInfoCore.js | 17 ++- components/Apps.js | 129 +----------------- components/Apps/LandscapeBackButton.tsx | 50 +++++++ components/Apps/MapsButton.tsx | 58 ++++++++ components/Apps/NewMenu.tsx | 4 +- components/Apps/ReloadButton.tsx | 58 ++++++++ components/Apps/WebView.jsx | 17 +-- 8 files changed, 196 insertions(+), 143 deletions(-) create mode 100644 components/Apps/LandscapeBackButton.tsx create mode 100644 components/Apps/MapsButton.tsx create mode 100644 components/Apps/ReloadButton.tsx diff --git a/components/ActionSheetComponents/EachTrainInfo.js b/components/ActionSheetComponents/EachTrainInfo.js index 6331cca..d2830ac 100644 --- a/components/ActionSheetComponents/EachTrainInfo.js +++ b/components/ActionSheetComponents/EachTrainInfo.js @@ -2,8 +2,8 @@ import React, { useRef } from "react"; import { Platform } from "react-native"; import ActionSheet from "react-native-actions-sheet"; import { EachTrainInfoCore } from "./EachTrainInfoCore"; -export const EachTrainInfo = (props) => { - if (!props.payload) return <>; +export const EachTrainInfo = ({payload}) => { + if (!payload) return <>; const actionSheetRef = useRef(null); return ( @@ -17,7 +17,7 @@ export const EachTrainInfo = (props) => { //useBottomSafeAreaPadding={Platform.OS == "android"} > - + ); }; diff --git a/components/ActionSheetComponents/EachTrainInfoCore.js b/components/ActionSheetComponents/EachTrainInfoCore.js index 9e13d58..a163c6e 100644 --- a/components/ActionSheetComponents/EachTrainInfoCore.js +++ b/components/ActionSheetComponents/EachTrainInfoCore.js @@ -8,7 +8,6 @@ import { useWindowDimensions, BackHandler, Linking, - Image, } from "react-native"; import { Ionicons } from "@expo/vector-icons"; import { SheetManager } from "react-native-actions-sheet"; @@ -34,22 +33,22 @@ import { getType } from "../../lib/eachTrainInfoCoreLib/getType"; import { searchSpecialTrain } from "../../lib/eachTrainInfoCoreLib/searchSpecialTrain"; import { openBackTrainInfo } from "../../lib/eachTrainInfoCoreLib/openBackTrainInfo"; import { ShowSpecialTrain } from "./EachTrainInfo/ShowSpecialTrain"; -import { useNavigation } from "@react-navigation/native"; -import { useInterval } from "../../lib/useInterval"; -import dayjs from "dayjs"; import { TrainIconStatus } from "./EachTrainInfo/trainIconStatus"; +import { useTrainMenu } from "../../stateBox/useTrainMenu"; export const EachTrainInfoCore = ({ actionSheetRef, data, - originalStationList, openStationACFromEachTrainInfo, from, - setTrainInfo, navigate, }) => { // const [actionSheetHorizonalScroll, setActionSheetHorizonalScroll] = useState(false); const { currentTrain } = useCurrentTrain(); + const { + setTrainInfo, + originalStationList, + } = useTrainMenu(); const [currentTrainData, setCurrentTrainData] = useState(); // const [actionSheetHorizonalScroll, setActionSheetHorizonalScroll] = useState(false); @@ -96,7 +95,7 @@ export const EachTrainInfoCore = ({ ); // 使用例 - const stopStationIDList = trainData.map((i, index) => { + const stopStationIDList = trainData.map((i) => { const [station, se, time] = i.split(","); const Stations = stationList.map((a) => a.filter((d) => d.StationName == station) @@ -137,7 +136,7 @@ export const EachTrainInfoCore = ({ } }, [data.limited, trainData]); - const { height, width } = useWindowDimensions(); + const { height } = useWindowDimensions(); const { isLandscape } = useDeviceOrientationChange(); const [trueTrainID, setTrueTrainID] = useState(); @@ -222,7 +221,7 @@ export const EachTrainInfoCore = ({ .then((d) => { if (d) setTrainPositionSwitch(d); }) - .catch((d) => AS.setItem("trainPositionSwitch", "false")); + .catch(() => AS.setItem("trainPositionSwitch", "false")); }, []); const openTrainInfo = (d) => { diff --git a/components/Apps.js b/components/Apps.js index 2df3147..5d487be 100644 --- a/components/Apps.js +++ b/components/Apps.js @@ -22,6 +22,9 @@ import { useNavigation } from "@react-navigation/native"; import { useTrainMenu } from "../stateBox/useTrainMenu"; import { AppsWebView } from "./Apps/WebView"; import { NewMenu } from "./Apps/NewMenu"; +import { MapsButton } from "./Apps/MapsButton"; +import { ReloadButton } from "./Apps/ReloadButton"; +import { LandscapeBackButton } from "./Apps/LandscapeBackButton"; /* import StatusbarDetect from '../StatusbarDetect'; var Status = StatusbarDetect(); */ @@ -34,15 +37,13 @@ export default function Apps() { const { navigate } = useNavigation(); const { isLandscape } = useDeviceOrientationChange(); const handleLayout = () => {}; - const { setInjectJavaScript, mapsStationData, + const { + setInjectJavaScript, mapSwitch, - LoadError, - setLoadError, trainInfo, setTrainInfo, originalStationList, - injectJavascript, } = useTrainMenu(); - + } = useTrainMenu(); const openStationACFromEachTrainInfo = async (stationName) => { await SheetManager.hide("EachTrainInfo"); @@ -82,9 +83,6 @@ export default function Apps() { > {!trainInfo.trainNum && isLandscape ? ( {isLandscape && trainInfo.trainNum && ( @@ -113,10 +107,8 @@ export default function Apps() { @@ -128,7 +120,6 @@ export default function Apps() { setInjectJavaScript(""); navigate("trainMenu", { webview }); }} - mapSwitch={mapSwitch == "true" ? "flex" : "none"} /> )} {isLandscape && trainInfo.trainNum && ( @@ -147,119 +138,13 @@ export default function Apps() { Updates.reloadAsync()} right={isLandscape && trainInfo.trainNum ? (width / 100) * 40 : 0} - LoadError={LoadError} /> ) : ( - + )} ); } -const MapsButton = ({ onPress, mapSwitch }) => { - const styles = { - touch: { - position: "absolute", - top, - left: 10, - width: 50, - height: 50, - backgroundColor: "#0099CC", - borderColor: "white", - borderStyle: "solid", - borderWidth: 1, - borderRadius: 50, - alignContent: "center", - alignSelf: "center", - alignItems: "center", - display: mapSwitch, - }, - text: { - textAlign: "center", - width: "auto", - height: "auto", - textAlignVertical: "center", - fontWeight: "bold", - color: "white", - fontSize: 20, - }, - }; - return ( - - - - - - ); -}; -const LandscapeBackButton = ({ onPress }) => { - const styles = { - touch: { - position: "absolute", - left: 10, - width: 50, - height: 50, - backgroundColor: "#0099CC", - borderColor: "white", - borderStyle: "solid", - borderWidth: 1, - borderRadius: 50, - alignContent: "center", - alignSelf: "center", - alignItems: "center", - display: "flex", - }, - text: { - textAlign: "center", - width: "auto", - height: "auto", - textAlignVertical: "center", - fontWeight: "bold", - color: "white", - }, - }; - return ( - - - - - - ); -}; -const ReloadButton = ({ onPress, mapSwitch, LoadError = false, right }) => { - const styles = { - touch: { - position: "absolute", - top, - right: 10 + right, - width: 50, - height: 50, - backgroundColor: LoadError ? "red" : "#0099CC", - borderColor: "white", - borderStyle: "solid", - borderWidth: 1, - borderRadius: 50, - alignContent: "center", - alignSelf: "center", - alignItems: "center", - display: mapSwitch, - }, - text: { - textAlign: "center", - width: "auto", - height: "auto", - textAlignVertical: "center", - fontWeight: "bold", - color: "white", - }, - }; - return ( - - - - - - ); -}; diff --git a/components/Apps/LandscapeBackButton.tsx b/components/Apps/LandscapeBackButton.tsx new file mode 100644 index 0000000..c7fc3e0 --- /dev/null +++ b/components/Apps/LandscapeBackButton.tsx @@ -0,0 +1,50 @@ +import React, { FC } from "react"; +import { + View, + TouchableOpacity, + TouchableOpacityProps, + TextStyle, +} from "react-native"; +import { Ionicons } from "@expo/vector-icons"; +import Constants from "expo-constants"; +import { useTrainMenu } from "../../stateBox/useTrainMenu"; +export const LandscapeBackButton: FC<{ + onPress: () => void; +}> = ({ onPress }) => { + type stylesType = { + touch: TouchableOpacityProps["style"]; + text: TextStyle; + }; + const styles: stylesType = { + touch: { + position: "absolute", + left: 10, + width: 50, + height: 50, + backgroundColor: "#0099CC", + borderColor: "white", + borderStyle: "solid", + borderWidth: 1, + borderRadius: 50, + alignContent: "center", + alignSelf: "center", + alignItems: "center", + display: "flex", + }, + text: { + textAlign: "center", + width: "auto", + height: "auto", + textAlignVertical: "center", + fontWeight: "bold", + color: "white", + }, + }; + return ( + + + + + + ); +}; diff --git a/components/Apps/MapsButton.tsx b/components/Apps/MapsButton.tsx new file mode 100644 index 0000000..66e7501 --- /dev/null +++ b/components/Apps/MapsButton.tsx @@ -0,0 +1,58 @@ +import React, { FC } from "react"; +import { + View, + Text, + TouchableOpacity, + Platform, + TouchableOpacityProps, + TextStyle, +} from "react-native"; +import Constants from "expo-constants"; +import { useTrainMenu } from "../../stateBox/useTrainMenu"; + +const top = Platform.OS == "ios" ? Constants.statusBarHeight : 0; +type MapsButtonProps = { + onPress: () => void; +}; +type stylesType = { + touch: TouchableOpacityProps["style"]; + text: TextStyle; +}; + +export const MapsButton: FC = ({ onPress }) => { + const { mapSwitch } = useTrainMenu(); + const styles: stylesType = { + touch: { + position: "absolute", + top, + left: 10, + width: 50, + height: 50, + backgroundColor: "#0099CC", + borderColor: "white", + borderStyle: "solid", + borderWidth: 1, + borderRadius: 50, + alignContent: "center", + alignSelf: "center", + alignItems: "center", + display: mapSwitch == "true" ? "flex" : "none", + }, + text: { + textAlign: "center", + width: "auto", + height: "auto", + textAlignVertical: "center", + fontWeight: "bold", + color: "white", + fontSize: 20, + }, + }; + return ( + + + + + + ); +}; diff --git a/components/Apps/NewMenu.tsx b/components/Apps/NewMenu.tsx index d2e4a8f..ae8693e 100644 --- a/components/Apps/NewMenu.tsx +++ b/components/Apps/NewMenu.tsx @@ -4,11 +4,13 @@ import { Ionicons } from "@expo/vector-icons"; import * as Updates from "expo-updates"; import Constants from "expo-constants"; import { useCurrentTrain } from "../../stateBox/useCurrentTrain"; +import { useTrainMenu } from "../../stateBox/useTrainMenu"; const top = Platform.OS == "ios" ? Constants.statusBarHeight : 0; -export const NewMenu = ({ LoadError }) => { +export const NewMenu = () => { const { webview } = useCurrentTrain(); const { width } = useWindowDimensions(); + const { LoadError } = useTrainMenu(); return ( void; + right: number; + +} +export const ReloadButton:FC = ({ onPress, right }) => { + const { mapSwitch, LoadError = false } = useTrainMenu(); + const styles: stylesType = { + touch: { + position: "absolute", + top, + right: 10 + right, + width: 50, + height: 50, + backgroundColor: LoadError ? "red" : "#0099CC", + borderColor: "white", + borderStyle: "solid", + borderWidth: 1, + borderRadius: 50, + alignContent: "center", + alignSelf: "center", + alignItems: "center", + display: mapSwitch, + }, + text: { + textAlign: "center", + width: "auto", + height: "auto", + textAlignVertical: "center", + fontWeight: "bold", + color: "white", + }, + }; + return ( + + + + + + ); +}; diff --git a/components/Apps/WebView.jsx b/components/Apps/WebView.jsx index 1a5469f..8f90d96 100644 --- a/components/Apps/WebView.jsx +++ b/components/Apps/WebView.jsx @@ -12,18 +12,19 @@ import { SheetManager } from "react-native-actions-sheet"; import { useNavigation } from "@react-navigation/native"; import { useTrainMenu } from "../../stateBox/useTrainMenu"; import { stationNamePair } from "../../lib/getStationList2"; -export const AppsWebView = ({ - originalStationList, - setLoadError, - setTrainInfo, - openStationACFromEachTrainInfo, - injectJavascript, -}) => { +export const AppsWebView = ({ openStationACFromEachTrainInfo }) => { const { webview, currentTrain } = useCurrentTrain(); const { navigate } = useNavigation(); const { favoriteStation } = useFavoriteStation(); const { isLandscape } = useDeviceOrientationChange(); - const { setSelectedLine, mapsStationData: stationData } = useTrainMenu(); + const { + setSelectedLine, + mapsStationData: stationData, + setLoadError, + setTrainInfo, + originalStationList, + injectJavascript, + } = useTrainMenu(); var urlcache = ""; let once = false; From 820623f2cec86ae92ee1547008783907c658314d Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Fri, 30 Aug 2024 06:13:26 +0000 Subject: [PATCH 05/14] =?UTF-8?q?=E3=83=95=E3=82=A1=E3=82=A4=E3=83=AB?= =?UTF-8?q?=E3=81=AE=E5=88=86=E9=9B=A2=E3=80=81=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- MenuPage.js | 2 +- .../EachTrainInfoCore.js | 50 +++---------- .../EachTrainInfoCore/HeaderText.tsx | 73 +++++++++++++++++++ .../trainIconStatus.tsx | 24 +++--- .../EachTrainInfoCore/trainViewIcon.tsx | 41 +++++++++++ 5 files changed, 139 insertions(+), 51 deletions(-) create mode 100644 components/ActionSheetComponents/EachTrainInfoCore/HeaderText.tsx rename components/ActionSheetComponents/{EachTrainInfo => EachTrainInfoCore}/trainIconStatus.tsx (82%) create mode 100644 components/ActionSheetComponents/EachTrainInfoCore/trainViewIcon.tsx diff --git a/MenuPage.js b/MenuPage.js index 886860a..b67463a 100644 --- a/MenuPage.js +++ b/MenuPage.js @@ -73,7 +73,7 @@ export function MenuPage() { } + component={HowTo} /> ); diff --git a/components/ActionSheetComponents/EachTrainInfoCore.js b/components/ActionSheetComponents/EachTrainInfoCore.js index a163c6e..f20d778 100644 --- a/components/ActionSheetComponents/EachTrainInfoCore.js +++ b/components/ActionSheetComponents/EachTrainInfoCore.js @@ -1,7 +1,6 @@ import React, { useEffect, useMemo, useState } from "react"; import { View, - LayoutAnimation, Text, TouchableOpacity, StyleSheet, @@ -9,7 +8,6 @@ import { BackHandler, Linking, } from "react-native"; -import { Ionicons } from "@expo/vector-icons"; import { SheetManager } from "react-native-actions-sheet"; import { AS } from "../../storageControl"; import trainList from "../../assets/originData/trainList"; @@ -33,8 +31,8 @@ import { getType } from "../../lib/eachTrainInfoCoreLib/getType"; import { searchSpecialTrain } from "../../lib/eachTrainInfoCoreLib/searchSpecialTrain"; import { openBackTrainInfo } from "../../lib/eachTrainInfoCoreLib/openBackTrainInfo"; import { ShowSpecialTrain } from "./EachTrainInfo/ShowSpecialTrain"; -import { TrainIconStatus } from "./EachTrainInfo/trainIconStatus"; import { useTrainMenu } from "../../stateBox/useTrainMenu"; +import { HeaderText } from "./EachTrainInfoCore/HeaderText"; export const EachTrainInfoCore = ({ actionSheetRef, @@ -45,10 +43,7 @@ export const EachTrainInfoCore = ({ }) => { // const [actionSheetHorizonalScroll, setActionSheetHorizonalScroll] = useState(false); const { currentTrain } = useCurrentTrain(); - const { - setTrainInfo, - originalStationList, - } = useTrainMenu(); + const { setTrainInfo, originalStationList } = useTrainMenu(); const [currentTrainData, setCurrentTrainData] = useState(); // const [actionSheetHorizonalScroll, setActionSheetHorizonalScroll] = useState(false); @@ -84,7 +79,6 @@ export const EachTrainInfoCore = ({ const [currentPosition, setCurrentPosition] = useState([]); const [trainData, setTrainData] = useState([]); - const stationList = originalStationList && lineList.map((d) => @@ -283,37 +277,17 @@ export const EachTrainInfoCore = ({ /> )} - - - - {trainName} - - - - {showHeadStation.map((d) => `${headStation[d].id} + `)} - {data.trainNum} - {showTailStation.map((d) => ` + ${tailStation[d].id}`)} - + - {data.limited != undefined && - getType(data.limited.split(":")[0]) && - !data.limited.split(":")[1].match("サンポート") && ( - { - LayoutAnimation.easeInEaseOut(); //setLoadingDelayData(true); - navigate("trainbase", { - info: "train.html?tn=" + data.trainNum, - from, - }); - SheetManager.hide("EachTrainInfo"); - }} - /> - )} - = ({ + data, + trainData, + showHeadStation, + showTailStation, + headStation, + tailStation, + navigate, + from, +}) => { + const trainName = useMemo(() => { + if (!data.limited) return ""; + const limitedArray = data.limited.split(":"); + const type = getType(limitedArray[0]); + + switch (true) { + case !!limitedArray[1]: + // 特急の場合は、列車名を取得 + return type + migrateTrainName(limitedArray[1]); + case trainData.length == 0: + // 特急以外の場合は、列車番号を取得 + return type; + default: + // 行先がある場合は、行先を取得 + return ( + type + + migrateTrainName( + trainData[trainData.length - 1].split(",")[0] + "行き" + ) + ); + } + }, [data.limited, trainData]); + return ( + + + {trainName} + + + {showHeadStation.map((d) => `${headStation[d].id} + `)} + {data.trainNum} + {showTailStation.map((d) => ` + ${tailStation[d].id}`)} + + + + + ); +}; diff --git a/components/ActionSheetComponents/EachTrainInfo/trainIconStatus.tsx b/components/ActionSheetComponents/EachTrainInfoCore/trainIconStatus.tsx similarity index 82% rename from components/ActionSheetComponents/EachTrainInfo/trainIconStatus.tsx rename to components/ActionSheetComponents/EachTrainInfoCore/trainIconStatus.tsx index 93ab139..7e5a7e8 100644 --- a/components/ActionSheetComponents/EachTrainInfo/trainIconStatus.tsx +++ b/components/ActionSheetComponents/EachTrainInfoCore/trainIconStatus.tsx @@ -1,27 +1,27 @@ import React, { ComponentProps, FC, useEffect, useState } from "react"; -import { View, Image } from "react-native"; +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"; type GlyphNames = ComponentProps["name"]; + type Props = { - trainData: { - trainNum: string; - limited: string; - }; + data: { trainNum: string; limited: string }; + navigate: any; + from: string; }; type apt = { name: GlyphNames; color: string; }; -export const TrainIconStatus: FC = ({ trainData }) => { +export const TrainIconStatus: FC = ({ data,navigate,from }) => { const [trainIcon, setTrainIcon] = useState(null); const [anpanmanStatus, setAnpanmanStatus] = useState(); useEffect(() => { - if (!trainData.trainNum) return; - switch (trainData.trainNum) { + if (!data.trainNum) return; + switch (data.trainNum) { case "32D": case "36D": case "44D": @@ -34,12 +34,12 @@ export const TrainIconStatus: FC = ({ trainData }) => { case "57D": setTrainIcon( "https://n8n.haruk.in/webhook/dosan-anpanman-pictures.png?trainNum=" + - trainData.trainNum + data.trainNum ); fetch( `https://n8n.haruk.in/webhook/dosan-anpanman?month=${dayjs().format( "M" - )}&day=${dayjs().format("D")}&trainNum=${trainData.trainNum}` + )}&day=${dayjs().format("D")}&trainNum=${data.trainNum}` ) .then((d) => d.json()) .then((d) => { @@ -53,7 +53,7 @@ export const TrainIconStatus: FC = ({ trainData }) => { }); break; } - }, [trainData.trainNum]); + }, [data.trainNum]); const [move, setMove] = useState(true); useInterval( () => { @@ -66,7 +66,7 @@ export const TrainIconStatus: FC = ({ trainData }) => { return ( <> {trainIcon && ( - + {move ? ( = ({ data, navigate, from }) => { + const [isTrainView, setIsTrainView] = useState(false); + //トレインビュー表示対象(特急、マリン)かを判定 + useEffect(() => { + if (!data.limited) return; + setIsTrainView( + getType(data.limited.split(":")[0]) && + !data.limited.split(":")[1].match("サンポート") + ); + }, [data.limited]); + const onPressTrainView = () => { + LayoutAnimation.easeInEaseOut(); //setLoadingDelayData(true); + navigate("trainbase", { + info: "train.html?tn=" + data.trainNum, + from, + }); + SheetManager.hide("EachTrainInfo"); + }; + return isTrainView ? ( + + ) : ( + <> + ); +}; From 9465fd62cff1afee526a780b567b44b05ee362e0 Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Fri, 30 Aug 2024 10:24:18 +0000 Subject: [PATCH 06/14] =?UTF-8?q?=E5=88=97=E8=BB=8A=E3=82=A2=E3=82=A4?= =?UTF-8?q?=E3=82=B3=E3=83=B3=E3=82=92=E6=8A=BC=E3=81=97=E3=81=9F=E3=82=89?= =?UTF-8?q?=E3=82=A2=E3=83=B3=E3=83=91=E3=83=B3=E3=83=9E=E3=83=B3=E5=88=97?= =?UTF-8?q?=E8=BB=8A=E9=81=8B=E8=A1=8C=E6=83=85=E5=A0=B1=E3=83=9A=E3=83=BC?= =?UTF-8?q?=E3=82=B8=E3=81=8C=E9=96=8B=E3=81=8F=E3=82=88=E3=81=86=E3=81=AB?= =?UTF-8?q?=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ActionSheetComponents/EachTrainInfo.js | 3 +-- .../EachTrainInfoCore/trainIconStatus.tsx | 17 +++++++++++++---- components/AllTrainDiagramView.js | 2 +- components/DynamicHeaderScrollView.js | 2 +- components/trainbaseview.js | 4 ++-- 5 files changed, 18 insertions(+), 10 deletions(-) diff --git a/components/ActionSheetComponents/EachTrainInfo.js b/components/ActionSheetComponents/EachTrainInfo.js index d2830ac..450dff4 100644 --- a/components/ActionSheetComponents/EachTrainInfo.js +++ b/components/ActionSheetComponents/EachTrainInfo.js @@ -2,9 +2,8 @@ import React, { useRef } from "react"; import { Platform } from "react-native"; import ActionSheet from "react-native-actions-sheet"; import { EachTrainInfoCore } from "./EachTrainInfoCore"; -export const EachTrainInfo = ({payload}) => { +export const EachTrainInfo = ({ payload }) => { if (!payload) return <>; - const actionSheetRef = useRef(null); return ( ["name"]; @@ -16,7 +17,7 @@ type apt = { name: GlyphNames; color: string; }; -export const TrainIconStatus: FC = ({ data,navigate,from }) => { +export const TrainIconStatus: FC = ({ data, navigate, from }) => { const [trainIcon, setTrainIcon] = useState(null); const [anpanmanStatus, setAnpanmanStatus] = useState(); useEffect(() => { @@ -34,7 +35,7 @@ export const TrainIconStatus: FC = ({ data,navigate,from }) => { case "57D": setTrainIcon( "https://n8n.haruk.in/webhook/dosan-anpanman-pictures.png?trainNum=" + - data.trainNum + data.trainNum ); fetch( `https://n8n.haruk.in/webhook/dosan-anpanman?month=${dayjs().format( @@ -66,7 +67,15 @@ export const TrainIconStatus: FC = ({ data,navigate,from }) => { return ( <> {trainIcon && ( - + { + navigate("howto", { + info: "https://www.jr-eki.com/aptrain/index.html", + goTo: from, + }); + SheetManager.hide("EachTrainInfo"); + }} + > {move ? ( = ({ data,navigate,from }) => { ) : ( )} - + )} ); diff --git a/components/AllTrainDiagramView.js b/components/AllTrainDiagramView.js index 8c2583d..26856cd 100644 --- a/components/AllTrainDiagramView.js +++ b/components/AllTrainDiagramView.js @@ -60,7 +60,7 @@ export default function AllTrainDiagramView() { }, navigate, originalStationList, - 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") } > From d897d0782fa7cba5c65f23ccc1f2e3e8099dd881 Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Sat, 31 Aug 2024 15:45:08 +0000 Subject: [PATCH 07/14] =?UTF-8?q?=E3=82=A2=E3=82=A4=E3=82=B3=E3=83=B3?= =?UTF-8?q?=E5=8F=96=E5=BE=97=E3=81=AB=E3=83=AA=E3=83=95=E3=82=A1=E3=83=A9?= =?UTF-8?q?=E3=82=92=E4=BB=98=E4=B8=8E=E3=81=97=E3=81=A6=E6=9C=80=E6=96=B0?= =?UTF-8?q?=E3=81=AE=E7=94=BB=E5=83=8F=E3=82=92=E6=9B=B4=E6=96=B0=E3=81=97?= =?UTF-8?q?=E3=81=A6=E3=81=8F=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../EachTrainInfoCore/trainIconStatus.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/components/ActionSheetComponents/EachTrainInfoCore/trainIconStatus.tsx b/components/ActionSheetComponents/EachTrainInfoCore/trainIconStatus.tsx index 785466d..0cf3daf 100644 --- a/components/ActionSheetComponents/EachTrainInfoCore/trainIconStatus.tsx +++ b/components/ActionSheetComponents/EachTrainInfoCore/trainIconStatus.tsx @@ -34,8 +34,9 @@ export const TrainIconStatus: FC = ({ data, navigate, from }) => { case "49D": case "57D": setTrainIcon( - "https://n8n.haruk.in/webhook/dosan-anpanman-pictures.png?trainNum=" + + `https://n8n.haruk.in/webhook/dosan-anpanman-pictures.png?trainNum=${ data.trainNum + }&day=${dayjs().format("D")}` ); fetch( `https://n8n.haruk.in/webhook/dosan-anpanman?month=${dayjs().format( From e74ebc5ed99aa834b3c4349922e7b946f188422c Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Sat, 31 Aug 2024 15:51:09 +0000 Subject: [PATCH 08/14] =?UTF-8?q?=E3=82=B3=E3=83=BC=E3=83=89=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../EachTrainInfoCore/trainIconStatus.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/components/ActionSheetComponents/EachTrainInfoCore/trainIconStatus.tsx b/components/ActionSheetComponents/EachTrainInfoCore/trainIconStatus.tsx index 0cf3daf..1fcd4cf 100644 --- a/components/ActionSheetComponents/EachTrainInfoCore/trainIconStatus.tsx +++ b/components/ActionSheetComponents/EachTrainInfoCore/trainIconStatus.tsx @@ -39,9 +39,9 @@ export const TrainIconStatus: FC = ({ data, navigate, from }) => { }&day=${dayjs().format("D")}` ); fetch( - `https://n8n.haruk.in/webhook/dosan-anpanman?month=${dayjs().format( - "M" - )}&day=${dayjs().format("D")}&trainNum=${data.trainNum}` + `https://n8n.haruk.in/webhook/dosan-anpanman?trainNum=${ + data.trainNum + }&month=${dayjs().format("M")}&day=${dayjs().format("D")}` ) .then((d) => d.json()) .then((d) => { From df1357d7452c13c889730693d305ba4149c40e4a Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Sun, 1 Sep 2024 02:00:09 +0000 Subject: [PATCH 09/14] =?UTF-8?q?=E7=94=BB=E9=9D=A2=E5=9B=9E=E8=BB=A2?= =?UTF-8?q?=E9=96=A2=E4=BF=82=E3=81=AB=E7=94=B1=E6=9D=A5=E3=81=99=E3=82=8B?= =?UTF-8?q?=E3=83=90=E3=82=B0=E3=81=AE=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/ActionSheetComponents/EachTrainInfoCore.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/ActionSheetComponents/EachTrainInfoCore.js b/components/ActionSheetComponents/EachTrainInfoCore.js index f20d778..657df3c 100644 --- a/components/ActionSheetComponents/EachTrainInfoCore.js +++ b/components/ActionSheetComponents/EachTrainInfoCore.js @@ -237,7 +237,7 @@ export const EachTrainInfoCore = ({ originalStationList, from: from == "LED" ? "LED2" : "NearTrainDiagramView", }; - if (setTrainInfo) { + if (isLandscape) { setTrainInfo(payload.data); } else { SheetManager.hide("EachTrainInfo").then(() => { From 4ac4c7d1c37bca9b9b8a71310bbd85b2f44ac23c Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Mon, 2 Sep 2024 08:52:19 +0000 Subject: [PATCH 10/14] =?UTF-8?q?originalStationList=E3=81=AE=E6=95=B4?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/ActionSheetComponents/EachTrainInfoCore.js | 1 - components/ActionSheetComponents/StationDeteilView.js | 9 --------- components/AllTrainDiagramView.js | 4 +--- components/Apps.js | 1 - components/Apps/WebView.jsx | 2 -- components/発車時刻表/LED_vidion.js | 8 +------- components/駅名表/Sign.js | 3 ++- menu.js | 8 ++------ stateBox/useTrainMenu.js | 4 ++-- 9 files changed, 8 insertions(+), 32 deletions(-) diff --git a/components/ActionSheetComponents/EachTrainInfoCore.js b/components/ActionSheetComponents/EachTrainInfoCore.js index 657df3c..d6f9678 100644 --- a/components/ActionSheetComponents/EachTrainInfoCore.js +++ b/components/ActionSheetComponents/EachTrainInfoCore.js @@ -234,7 +234,6 @@ export const EachTrainInfoCore = ({ }${TrainNumber}`, }, navigate, - originalStationList, from: from == "LED" ? "LED2" : "NearTrainDiagramView", }; if (isLandscape) { diff --git a/components/ActionSheetComponents/StationDeteilView.js b/components/ActionSheetComponents/StationDeteilView.js index b28b4c1..baa6610 100644 --- a/components/ActionSheetComponents/StationDeteilView.js +++ b/components/ActionSheetComponents/StationDeteilView.js @@ -23,7 +23,6 @@ export const StationDeteilView = (props) => { if (!props.payload) return <>; const { currentStation, - originalStationList, navigate, onExit, goTo, @@ -99,7 +98,6 @@ export const StationDeteilView = (props) => { > { usePDFView == "true" ? Linking.openURL(currentStation[0].StationTimeTable) @@ -114,13 +112,6 @@ export const StationDeteilView = (props) => { /> )} - {/* {currentStation && - currentStation.map((d) => ( - - ))} */} {currentStation && currentStation[0].JrHpUrl && currentStation[0].StationNumber != "M12" && ( diff --git a/components/AllTrainDiagramView.js b/components/AllTrainDiagramView.js index 26856cd..15585f4 100644 --- a/components/AllTrainDiagramView.js +++ b/components/AllTrainDiagramView.js @@ -16,12 +16,11 @@ import { getStationList } from "../lib/getStationList"; import { getTrainType } from "../lib/getTrainType"; import { SheetManager } from "react-native-actions-sheet"; import { useNavigation } from "@react-navigation/native"; +import { useTrainMenu } from "../stateBox/useTrainMenu"; export default function AllTrainDiagramView() { const { navigate } = useNavigation(); const { allTrainDiagram } = useAllTrainDiagram(); - const [originalStationList, setOriginalStationList] = useState(); // 第一要素 const [keyList, setKeyList] = useState(); // 第二要素 - useEffect(() => getStationList().then(setOriginalStationList), []); useEffect( () => allTrainDiagram && setKeyList(Object.keys(allTrainDiagram)), [] @@ -59,7 +58,6 @@ export default function AllTrainDiagramView() { }${TrainNumber}`, }, navigate, - originalStationList, from: "AllTrainIDList", }; SheetManager.show("EachTrainInfo", { diff --git a/components/Apps.js b/components/Apps.js index 5d487be..a5e6e5e 100644 --- a/components/Apps.js +++ b/components/Apps.js @@ -61,7 +61,6 @@ export default function Apps() { if (returnDataBase.length) { const payload = { currentStation: returnDataBase, - originalStationList, navigate, goTo: "Apps", useShow: () => SheetManager.show("StationDetailView", { payload }), diff --git a/components/Apps/WebView.jsx b/components/Apps/WebView.jsx index 8f90d96..7e64959 100644 --- a/components/Apps/WebView.jsx +++ b/components/Apps/WebView.jsx @@ -77,7 +77,6 @@ export const AppsWebView = ({ openStationACFromEachTrainInfo }) => { if (returnDataBase.length) { const payload = { currentStation: returnDataBase, - originalStationList: originalStationList, navigate: navigate, goTo: "Apps", useShow: () => @@ -103,7 +102,6 @@ export const AppsWebView = ({ openStationACFromEachTrainInfo }) => { const payload = { data: { trainNum, limited }, navigate, - originalStationList, openStationACFromEachTrainInfo, }; SheetManager.show("EachTrainInfo", { payload }); diff --git a/components/発車時刻表/LED_vidion.js b/components/発車時刻表/LED_vidion.js index e18caab..f746b34 100644 --- a/components/発車時刻表/LED_vidion.js +++ b/components/発車時刻表/LED_vidion.js @@ -13,7 +13,7 @@ import { SheetManager } from "react-native-actions-sheet"; import { AS } from "../../storageControl"; import { Footer } from "./LED_Vision_Component/Footer"; import { Header } from "./LED_Vision_Component/Header"; - +import { useTrainMenu } from "../../stateBox/useTrainMenu"; /** * @@ -50,7 +50,6 @@ export default function LED_vision(props) { trainDiagram, getCurrentTrain, navigate, - originalStationList, openStationACFromEachTrainInfo, } = props; const { currentTrain } = useCurrentTrain(); @@ -207,7 +206,6 @@ export default function LED_vision(props) { trainDescriptionSwitch, customTrainDataDetector, navigate, - originalStationList, openStationACFromEachTrainInfo, }} station={station[0]} @@ -235,8 +233,6 @@ export default function LED_vision(props) { ); } - - const EachData = (props) => { const { d, @@ -245,7 +241,6 @@ const EachData = (props) => { station, customTrainDataDetector, navigate, - originalStationList, openStationACFromEachTrainInfo, } = props; const { currentTrain } = useCurrentTrain(); @@ -265,7 +260,6 @@ const EachData = (props) => { }${TrainNumber}`, }, navigate, - originalStationList, openStationACFromEachTrainInfo, from: "LED", }; diff --git a/components/駅名表/Sign.js b/components/駅名表/Sign.js index ad98993..36a84db 100644 --- a/components/駅名表/Sign.js +++ b/components/駅名表/Sign.js @@ -11,17 +11,18 @@ import { StationNameArea } from "./StationNameArea"; import { StationNumberMaker } from "./StationNumberMaker"; import { NextPreStationLine } from "./NextPreStationLine"; import { LottieDelayView } from "./LottieDelayView"; +import { useTrainMenu } from "../../stateBox/useTrainMenu"; export default function Sign(props) { const { currentStation, - originalStationList, oP, oLP, isCurrentStation = false, } = props; const { favoriteStation, setFavoriteStation } = useFavoriteStation(); const [nexPrePosition, setNexPrePosition] = useState(0); + const { originalStationList} = useTrainMenu(); const [preStation, setPreStation] = useState(); const [nexStation, setNexStation] = useState(); diff --git a/menu.js b/menu.js index 24d3033..f9d1eab 100644 --- a/menu.js +++ b/menu.js @@ -30,10 +30,12 @@ import { useFavoriteStation } from "./stateBox/useFavoriteStation"; import { SheetManager } from "react-native-actions-sheet"; import { useTrainDelayData } from "./stateBox/useTrainDelayData"; import { useNavigation } from "@react-navigation/native"; +import { useTrainMenu } from "./stateBox/useTrainMenu"; export default function Menu({ getCurrentTrain }) { const { navigate } = useNavigation(); const { favoriteStation } = useFavoriteStation(); + const { originalStationList } = useTrainMenu(); //位置情報 const [locationStatus, setLocationStatus] = useState(null); @@ -90,9 +92,6 @@ export default function Menu({ getCurrentTrain }) { const [currentStation, setCurrentStation] = useState(undefined); //第三要素 - const [originalStationList, setOriginalStationList] = useState([]); // 第一要素 - useEffect(() => getStationList().then(setOriginalStationList), []); - const carouselRef = useRef(); const [selectedCurrentStation, setSelectedCurrentStation] = useState(0); @@ -171,7 +170,6 @@ export default function Menu({ getCurrentTrain }) { > { const payload = { @@ -179,7 +177,6 @@ export default function Menu({ getCurrentTrain }) { originalStationList && allStationData.length != 0 && allStationData[selectedCurrentStation], - originalStationList: originalStationList, navigate: navigate, goTo: "menu", useShow: () => @@ -210,7 +207,6 @@ export default function Menu({ getCurrentTrain }) { trainDiagram={trainDiagram} getCurrentTrain={getCurrentTrain} navigate={navigate} - originalStationList={originalStationList} openStationACFromEachTrainInfo={() => {}} /> )} diff --git a/stateBox/useTrainMenu.js b/stateBox/useTrainMenu.js index fe5bf33..2f2991c 100644 --- a/stateBox/useTrainMenu.js +++ b/stateBox/useTrainMenu.js @@ -27,7 +27,7 @@ const initialState = { trainData: undefined, }, setTrainInfo: () => {}, - originalStationList: undefined, + originalStationList: [], setOriginalStationList: () => {}, trainMenu: "true", setTrainMenu: () => {}, @@ -61,7 +61,7 @@ export const TrainMenuProvider = ({ children }) => { }); //駅情報画面用 - const [originalStationList, setOriginalStationList] = useState(); + const [originalStationList, setOriginalStationList] = useState([]); const [trainMenu, setTrainMenu] = useState("true"); useEffect(() => getStationList().then(setOriginalStationList), []); From c68a455e47f95a98cd03e98a6801501162141af5 Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Mon, 2 Sep 2024 09:14:36 +0000 Subject: [PATCH 11/14] =?UTF-8?q?=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Top.js | 9 +-------- .../TrainMenuLineSelector.js | 18 +----------------- menu.js | 2 -- stateBox/useTrainMenu.js | 1 - 4 files changed, 2 insertions(+), 28 deletions(-) diff --git a/Top.js b/Top.js index 18f9538..403ed87 100644 --- a/Top.js +++ b/Top.js @@ -13,7 +13,6 @@ import FavoriteList from "./components/FavoriteList"; import { optionData } from "./lib/stackOption"; import { useNavigation } from "@react-navigation/native"; import { useCurrentTrain } from "./stateBox/useCurrentTrain"; -import { ASCore } from "./storageControl"; import { useTrainMenu } from "./stateBox/useTrainMenu"; const Stack = createStackNavigator(); export const Top = ({ navigationRef }) => { @@ -21,13 +20,7 @@ export const Top = ({ navigationRef }) => { const { navigate, addListener } = useNavigation(); //地図用 - const { injectJavaScript, setInjectJavaScript } = useTrainMenu(); - - const [mapSwitch, setMapSwitch] = useState("false"); - useEffect(() => { - //地図スイッチ - ASCore({ k: "mapSwitch", s: setMapSwitch, d: "false" }); - }, []); + const { injectJavaScript, setInjectJavaScript, mapSwitch } = useTrainMenu(); const goToFavoriteList = () => navigate("favoriteList"); diff --git a/components/ActionSheetComponents/TrainMenuLineSelector.js b/components/ActionSheetComponents/TrainMenuLineSelector.js index c983da4..758c4df 100644 --- a/components/ActionSheetComponents/TrainMenuLineSelector.js +++ b/components/ActionSheetComponents/TrainMenuLineSelector.js @@ -1,42 +1,26 @@ import React, { useEffect, useRef } from "react"; import { View, - LayoutAnimation, - ScrollView, - Linking, Text, TouchableOpacity, Platform, BackHandler, } from "react-native"; -import { Ionicons, MaterialCommunityIcons } from "@expo/vector-icons"; -import ActionSheet, { - SheetManager, - useScrollHandlers, -} from "react-native-actions-sheet"; -import LottieView from "lottie-react-native"; +import ActionSheet, { SheetManager } from "react-native-actions-sheet"; import { useSafeAreaInsets } from "react-native-safe-area-context"; -import ViewShot from "react-native-view-shot"; -import * as Sharing from "expo-sharing"; -import { useTrainDelayData } from "../../stateBox/useTrainDelayData"; import { useTrainMenu } from "../../stateBox/useTrainMenu"; import lineColorList from "../../assets/originData/lineColorList"; import { stationIDPair } from "../../lib/getStationList2"; import { lineListPair } from "../../lib/getStationList"; export const TrainMenuLineSelector = () => { - const { getTime, delayData, loadingDelayData, setLoadingDelayData } = - useTrainDelayData(); const { selectedLine, setSelectedLine, mapsStationData: stationData, - setMapsStationData, } = useTrainMenu(); const actionSheetRef = useRef(null); - const scrollHandlers = useScrollHandlers("scrollview-1", actionSheetRef); const insets = useSafeAreaInsets(); - const viewShot = useRef(null); const platformIs = Platform.OS == "android"; return ( { const JRSTraInfoBox = () => { const { getTime, - setGetTime, delayData, - setDelayData, loadingDelayData, setLoadingDelayData, } = useTrainDelayData(); diff --git a/stateBox/useTrainMenu.js b/stateBox/useTrainMenu.js index 2f2991c..5e1c10b 100644 --- a/stateBox/useTrainMenu.js +++ b/stateBox/useTrainMenu.js @@ -102,7 +102,6 @@ export const TrainMenuProvider = ({ children }) => { setMapsStationData, injectJavaScript, setInjectJavaScript, - iconSetting, setIconSetting, mapSwitch, From 0fdd71db7367e1563fb2171020e81fece47ccc89 Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Mon, 2 Sep 2024 15:19:22 +0000 Subject: [PATCH 12/14] =?UTF-8?q?=E5=B7=AE=E5=88=86=E8=AA=BF=E6=95=B4a?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Top.js | 2 +- components/発車時刻表/LED_vidion.js | 2 +- components/駅名表/Sign.js | 9 ++------- 3 files changed, 4 insertions(+), 9 deletions(-) diff --git a/Top.js b/Top.js index 403ed87..acbd5d8 100644 --- a/Top.js +++ b/Top.js @@ -29,6 +29,7 @@ export const Top = ({ navigationRef }) => { return unsubscribe; }, [{ navigate, addListener }]); + const goToTrainMenu = () => { if (navigationRef.current?.getCurrentRoute().name == "Apps") { if (mapSwitch == "true") { @@ -47,7 +48,6 @@ export const Top = ({ navigationRef }) => { navigate("Apps"); } }; - useEffect(() => { const unsubscribe = addListener("tabPress", goToTrainMenu); return unsubscribe; diff --git a/components/発車時刻表/LED_vidion.js b/components/発車時刻表/LED_vidion.js index f746b34..dd91f9d 100644 --- a/components/発車時刻表/LED_vidion.js +++ b/components/発車時刻表/LED_vidion.js @@ -13,7 +13,7 @@ import { SheetManager } from "react-native-actions-sheet"; import { AS } from "../../storageControl"; import { Footer } from "./LED_Vision_Component/Footer"; import { Header } from "./LED_Vision_Component/Header"; -import { useTrainMenu } from "../../stateBox/useTrainMenu"; + /** * diff --git a/components/駅名表/Sign.js b/components/駅名表/Sign.js index 36a84db..f7f26be 100644 --- a/components/駅名表/Sign.js +++ b/components/駅名表/Sign.js @@ -14,15 +14,10 @@ import { LottieDelayView } from "./LottieDelayView"; import { useTrainMenu } from "../../stateBox/useTrainMenu"; export default function Sign(props) { - const { - currentStation, - oP, - oLP, - isCurrentStation = false, - } = props; + const { currentStation, oP, oLP, isCurrentStation = false } = props; const { favoriteStation, setFavoriteStation } = useFavoriteStation(); const [nexPrePosition, setNexPrePosition] = useState(0); - const { originalStationList} = useTrainMenu(); + const { originalStationList } = useTrainMenu(); const [preStation, setPreStation] = useState(); const [nexStation, setNexStation] = useState(); From e2151ca0b188459dcb6f4a307b2e5900e20d7c9c Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Tue, 3 Sep 2024 05:10:08 +0000 Subject: [PATCH 13/14] =?UTF-8?q?=E5=B7=AE=E5=88=86=E8=AA=BF=E6=95=B4b?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/Apps/LandscapeBackButton.tsx | 2 -- 1 file changed, 2 deletions(-) diff --git a/components/Apps/LandscapeBackButton.tsx b/components/Apps/LandscapeBackButton.tsx index c7fc3e0..89dff15 100644 --- a/components/Apps/LandscapeBackButton.tsx +++ b/components/Apps/LandscapeBackButton.tsx @@ -6,8 +6,6 @@ import { TextStyle, } from "react-native"; import { Ionicons } from "@expo/vector-icons"; -import Constants from "expo-constants"; -import { useTrainMenu } from "../../stateBox/useTrainMenu"; export const LandscapeBackButton: FC<{ onPress: () => void; }> = ({ onPress }) => { From ab09e6dd312e2a0f1a755dbd24e216dfb06edfe4 Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Tue, 3 Sep 2024 12:56:21 +0000 Subject: [PATCH 14/14] =?UTF-8?q?=E5=B7=AE=E5=88=86=E8=AA=BF=E6=95=B4c?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/Apps.js | 6 ------ 1 file changed, 6 deletions(-) diff --git a/components/Apps.js b/components/Apps.js index a5e6e5e..52af34a 100644 --- a/components/Apps.js +++ b/components/Apps.js @@ -2,13 +2,10 @@ import React from "react"; import { View, Platform, - Text, - TouchableOpacity, useWindowDimensions, LayoutAnimation, } from "react-native"; import Constants from "expo-constants"; -import { Ionicons } from "@expo/vector-icons"; import * as Updates from "expo-updates"; import { lineList } from "../lib/getStationList"; @@ -144,6 +141,3 @@ export default function Apps() { ); } - - -