diff --git a/App.js b/App.js index ddd4afe..ded91f4 100644 --- a/App.js +++ b/App.js @@ -34,13 +34,13 @@ export default function App() { useEffect(() => UpdateAsync(), []); const ProviderTree = buildProvidersTree([ + AllTrainDiagramProvider, NotificationProvider, StationListProvider, FavoriteStationProvider, TrainDelayDataProvider, CurrentTrainProvider, AreaInfoProvider, - AllTrainDiagramProvider, BusAndTrainDataProvider, TrainMenuProvider, SheetProvider, diff --git a/assets/originData/trainList.ts b/assets/originData/trainList.ts index 28bf2a4..07bb931 100644 --- a/assets/originData/trainList.ts +++ b/assets/originData/trainList.ts @@ -921,15 +921,4 @@ "581D":"徳島,発,20:30#阿波富田,発,20:33#二軒屋,発,20:36#文化の森,発,20:39#地蔵橋,発,20:42#中田,発,20:47#南小松島,発,20:51#阿波赤石,発,20:55#立江,発,20:58#羽ノ浦,発,21:07#西原,発,21:10#阿波中島,発,21:14#阿南,着,21:18#", "583D":"徳島,発,21:30#阿波富田,発,21:33#二軒屋,発,21:36#文化の森,発,21:38#地蔵橋,発,21:42#中田,発,21:46#南小松島,発,21:50#阿波赤石,発,21:54#立江,発,21:57#羽ノ浦,発,22:14#西原,発,22:17#阿波中島,発,22:20#阿南,発,22:26#見能林,発,22:29#阿波橘,発,22:32#桑野,発,22:37#新野,発,22:41#阿波福井,発,22:45#由岐,発,22:54#木岐,発,22:58#北河内,発,23:03#日和佐,発,23:06#山河内,発,23:14#辺川,発,23:23#牟岐,着,23:29#", "585D":"徳島,発,22:55#阿波富田,発,22:58#二軒屋,発,23:01#文化の森,発,23:03#地蔵橋,発,23:07#中田,発,23:11#南小松島,発,23:15#阿波赤石,発,23:19#立江,発,23:22#羽ノ浦,発,23:26#西原,発,23:29#阿波中島,発,23:32#阿南,着,23:36#", - -// 臨時列車 -"9395D":"臨時列車,提,https://www.jr-shikoku.co.jp/03_news/pdf/20250314_20250413_tomorrow_together_worldtour.pdf#高松,発,22:10#昭和町,発,22:13#栗林公園北口,発,22:16#栗林,発,22:19#木太町,発,22:23#屋島,発,22:36#古高松南,発,22:39#八栗口,発,22:43#讃岐牟礼,発,22:45#志度,発,22:49#オレンジタウン,発,22:53#造田,発,22:57#神前,発,23:00#讃岐津田,発,23:06#鶴羽,発,23:10#丹生,発,23:15#三本松,着,23:18#", -"9174M":"臨時列車,提,https://www.jr-shikoku.co.jp/03_news/pdf/20250314_20250413_tomorrow_together_worldtour.pdf#高松,発,22:00#坂出,発,22:16#児島,発,22:39#茶屋町,発,22:48#早島,発,22:55#妹尾,発,22:59#岡山,着,23:06#", - -// わらぐろ号/れんげ号 -"9662D":"宇和れんげまつり臨時列車,提,https://www.jr-shikoku.co.jp/03_news/pdf/20250124_20250629_rinji_spring.pdf#宇和島,発,10:00#北宇和島,発,10:03#高光,発,10:07#伊予吉田,発,10:21#立間,発,10:50#下宇和,発,10:36#卯之町,発,10:39#上宇和,発,10:42#伊予石城,発,10:46#双岩,発,10:53#八幡浜,着,10:58#", -"9664D":"宇和れんげまつり臨時列車,提,https://www.jr-shikoku.co.jp/03_news/pdf/20250124_20250629_rinji_spring.pdf#卯之町,発,11:18#上宇和,発,11:21#伊予石城,発,11:25#双岩,発,11:34#八幡浜,着,11:39#", -"9663D":"宇和れんげまつり臨時列車,提,https://www.jr-shikoku.co.jp/03_news/pdf/20250124_20250629_rinji_spring.pdf#八幡浜,発,10:07#双岩,発,10:16#伊予石城,発,10:23#上宇和,発,10:27#卯之町,着,10:30#", -"9665D":"宇和れんげまつり臨時列車,提,https://www.jr-shikoku.co.jp/03_news/pdf/20250124_20250629_rinji_spring.pdf#八幡浜,発,13:38#双岩,発,13:45#伊予石城,発,13:52#上宇和,発,13:56#卯之町,発,14:07#下宇和,発,14:10#立間,発,14:18#伊予吉田,発,14:25#高光,発,14:31#北宇和島,発,14:35#宇和島,着,14:37#", - } \ No newline at end of file diff --git a/components/ActionSheetComponents/EachTrainInfo/ShowSpecialTrain.js b/components/ActionSheetComponents/EachTrainInfo/ShowSpecialTrain.js index c0a82f7..ea8e121 100644 --- a/components/ActionSheetComponents/EachTrainInfo/ShowSpecialTrain.js +++ b/components/ActionSheetComponents/EachTrainInfo/ShowSpecialTrain.js @@ -1,13 +1,14 @@ import { Text, TouchableOpacity } from "react-native"; import React, { useState } from "react"; +import { useAllTrainDiagram } from "@/stateBox/useAllTrainDiagram"; export const ShowSpecialTrain = ({ isTrainDataNothing, setTrainData, - trainList, trueTrainID, }) => { + const { allTrainDiagram } = useAllTrainDiagram(); const replaceSpecialTrainDetail = (trainNum) => { - let TD = trainList[trainNum]; + let TD = allTrainDiagram[trainNum]; if (!TD) return; setTrainData(TD.split("#").filter((d) => d != "")); }; diff --git a/components/ActionSheetComponents/EachTrainInfo/TrainDataView.js b/components/ActionSheetComponents/EachTrainInfo/TrainDataView.js index 36c685c..120af56 100644 --- a/components/ActionSheetComponents/EachTrainInfo/TrainDataView.js +++ b/components/ActionSheetComponents/EachTrainInfo/TrainDataView.js @@ -2,7 +2,7 @@ import React, { useState, useEffect } from "react"; import { View, TouchableOpacity, useWindowDimensions } from "react-native"; import { StateBox } from "./StateBox"; import { useDeviceOrientationChange } from "../../../stateBox/useDeviceOrientationChange"; -import { getStationList2 } from "../../../lib/getStationList2"; +import { getStationList2 } from "../../../lib/getStationList"; import { useCurrentTrain } from "../../../stateBox/useCurrentTrain"; import { SheetManager } from "react-native-actions-sheet"; import { trainPosition } from "../../../lib/trainPositionTextArray"; diff --git a/components/ActionSheetComponents/EachTrainInfoCore.js b/components/ActionSheetComponents/EachTrainInfoCore.js index d837113..c419bb7 100644 --- a/components/ActionSheetComponents/EachTrainInfoCore.js +++ b/components/ActionSheetComponents/EachTrainInfoCore.js @@ -12,8 +12,7 @@ import { import { SheetManager } from "react-native-actions-sheet"; import { useScrollHandlers } from "react-native-actions-sheet"; import { AS } from "../../storageControl"; -import trainList from "../../assets/originData/trainList"; -import { lineListPair } from "../../lib/getStationList"; +import { lineListPair, stationIDPair } from "../../lib/getStationList"; import { useCurrentTrain } from "../../stateBox/useCurrentTrain"; import { checkDuplicateTrainData } from "../../lib/checkDuplicateTrainData"; import { getTrainType } from "../../lib/getTrainType"; @@ -34,7 +33,7 @@ import { ShowSpecialTrain } from "./EachTrainInfo/ShowSpecialTrain"; import { useTrainMenu } from "../../stateBox/useTrainMenu"; import { HeaderText } from "./EachTrainInfoCore/HeaderText"; import { useStationList } from "../../stateBox/useStationList"; -import { stationIDPair } from "../../lib/getStationList2"; +import { useAllTrainDiagram } from "@/stateBox/useAllTrainDiagram"; export const EachTrainInfoCore = ({ actionSheetRef, @@ -45,6 +44,7 @@ export const EachTrainInfoCore = ({ }) => { const { currentTrain } = useCurrentTrain(); const { originalStationList, stationList } = useStationList(); + const { allTrainDiagram: trainList } = useAllTrainDiagram(); const { setTrainInfo } = useTrainMenu(); const [currentTrainData, setCurrentTrainData] = useState(); @@ -215,9 +215,8 @@ export const EachTrainInfoCore = ({ if (!data.trainNum) return; const NearTrainList = getInfluencedTrainData(data.trainNum); if (NearTrainList.length == 0) return; - const returnArray = NearTrainList.map((d) => d.id); const TDArray = NearTrainList.map((d) => d.TrainData); - setNearTrainIDList(returnArray); + setNearTrainIDList(NearTrainList.map((d) => d.id)); if (trainData.length == 0) return; if (TDArray.length == 0) return; let head = []; @@ -241,10 +240,8 @@ export const EachTrainInfoCore = ({ } }) ); - if (head) setHeadStation(head); - else setHeadStation([]); - if (tail) setTailStation(tail); - else setTailStation([]); + setHeadStation(head || []); + setTailStation(tail || []); }, [trainData, data]); useEffect(() => { @@ -390,7 +387,6 @@ export const EachTrainInfoCore = ({ {!trainData.length && ( diff --git a/components/ActionSheetComponents/TrainMenuLineSelector.js b/components/ActionSheetComponents/TrainMenuLineSelector.js index 5b45c5b..9d2541f 100644 --- a/components/ActionSheetComponents/TrainMenuLineSelector.js +++ b/components/ActionSheetComponents/TrainMenuLineSelector.js @@ -11,8 +11,7 @@ import { useSafeAreaInsets } from "react-native-safe-area-context"; import { useTrainMenu } from "../../stateBox/useTrainMenu"; import { useCurrentTrain } from "../../stateBox/useCurrentTrain"; import lineColorList from "../../assets/originData/lineColorList"; -import { stationIDPair } from "../../lib/getStationList2"; -import { lineListPair } from "../../lib/getStationList"; +import { stationIDPair, lineListPair } from "../../lib/getStationList"; export const TrainMenuLineSelector = () => { const { @@ -20,7 +19,7 @@ export const TrainMenuLineSelector = () => { setSelectedLine, mapsStationData: stationData, } = useTrainMenu(); - const { webview } = useCurrentTrain(); + const { webview } = useCurrentTrain(); const actionSheetRef = useRef(null); const insets = useSafeAreaInsets(); const platformIs = Platform.OS == "android"; @@ -55,7 +54,7 @@ export const TrainMenuLineSelector = () => { onPress={() => { SheetManager.hide("TrainMenuLineSelector"); const s = selectedLine == d ? undefined : d; - if(!s) return; + if (!s) return; setSelectedLine(s); Object.keys(stationData).forEach((data, indexBase) => { stationData[data].forEach((D, index) => { @@ -66,7 +65,7 @@ export const TrainMenuLineSelector = () => { "" ).split(","); if (latlng.length == 0) return null; - if (index == 0 ) { + if (index == 0) { webview.current ?.injectJavaScript(`MoveDisplayStation('${data}_${D.MyStation}_${D.Station_JP}'); document.getElementById("disp").insertAdjacentHTML("afterbegin", "
");`); diff --git a/components/Apps/WebView.jsx b/components/Apps/WebView.jsx index 468bd48..28e19dc 100644 --- a/components/Apps/WebView.jsx +++ b/components/Apps/WebView.jsx @@ -2,7 +2,7 @@ import React from "react"; import { Platform, LayoutAnimation } from "react-native"; import { WebView } from "react-native-webview"; -import { lineList } from "../../lib/getStationList"; +import { lineList, stationNamePair } from "../../lib/getStationList"; import { checkDuplicateTrainData } from "../../lib/checkDuplicateTrainData"; import { useFavoriteStation } from "../../stateBox/useFavoriteStation"; import { useCurrentTrain } from "../../stateBox/useCurrentTrain"; @@ -11,7 +11,6 @@ import { SheetManager } from "react-native-actions-sheet"; import { useNavigation } from "@react-navigation/native"; import { useTrainMenu } from "../../stateBox/useTrainMenu"; -import { stationNamePair } from "../../lib/getStationList2"; import { useStationList } from "../../stateBox/useStationList"; export const AppsWebView = ({ openStationACFromEachTrainInfo }) => { const { webview, currentTrain } = useCurrentTrain(); diff --git a/components/DynamicHeaderScrollView.js b/components/DynamicHeaderScrollView.js index d4dda44..0e31d16 100644 --- a/components/DynamicHeaderScrollView.js +++ b/components/DynamicHeaderScrollView.js @@ -6,7 +6,6 @@ import { AS } from "../storageControl"; export const DynamicHeaderScrollView = (props) => { const { children, - actionSheetRef = {}, containerProps = {}, shortHeader = <>, longHeader = <>, diff --git a/components/trainMenu.js b/components/trainMenu.js index 954a5cd..fa05fed 100644 --- a/components/trainMenu.js +++ b/components/trainMenu.js @@ -4,8 +4,7 @@ import MapView from "react-native-maps"; import { useCurrentTrain } from "../stateBox/useCurrentTrain"; import { useNavigation } from "@react-navigation/native"; import lineColorList from "../assets/originData/lineColorList"; -import { stationIDPair } from "../lib/getStationList2"; -import { lineListPair } from "../lib/getStationList"; +import { lineListPair, stationIDPair } from "../lib/getStationList"; import { SheetManager } from "react-native-actions-sheet"; import { useTrainMenu } from "../stateBox/useTrainMenu"; import { MapPin } from "./TrainMenu/MapPin"; diff --git a/components/trainMenu.web.js b/components/trainMenu.web.js index 0835101..47372cd 100644 --- a/components/trainMenu.web.js +++ b/components/trainMenu.web.js @@ -4,8 +4,7 @@ import { View, Text, TouchableOpacity, Linking } from "react-native"; import { useCurrentTrain } from "../stateBox/useCurrentTrain"; import { useNavigation } from "@react-navigation/native"; import lineColorList from "../assets/originData/lineColorList"; -import { stationIDPair } from "../lib/getStationList2"; -import { lineListPair } from "../lib/getStationList"; +import { lineListPair, stationIDPair } from "../lib/getStationList"; import { SheetManager } from "react-native-actions-sheet"; import { useTrainMenu } from "../stateBox/useTrainMenu"; //import { MapPin } from "./TrainMenu/MapPin"; diff --git a/components/発車時刻表/LED_inside_Component/TrainPosition.tsx b/components/発車時刻表/LED_inside_Component/TrainPosition.tsx index e53e8ef..5f830a0 100644 --- a/components/発車時刻表/LED_inside_Component/TrainPosition.tsx +++ b/components/発車時刻表/LED_inside_Component/TrainPosition.tsx @@ -5,7 +5,6 @@ import { trainDataType, trainPosition, } from "../../../lib/trainPositionTextArray"; -import { lineList } from "../../../lib/getStationList"; import { getStationID } from "../../../lib/eachTrainInfoCoreLib/getStationData"; import { useCurrentTrain } from "../../../stateBox/useCurrentTrain"; diff --git a/lib/checkDuplicateTrainData.ts b/lib/checkDuplicateTrainData.ts index 3e2e3b5..8a1c33a 100644 --- a/lib/checkDuplicateTrainData.ts +++ b/lib/checkDuplicateTrainData.ts @@ -1,6 +1,5 @@ import { trainDataType } from "./trainPositionTextArray"; -import { getStationID } from "./eachTrainInfoCoreLib/getStationData"; -import { stationIDPair } from "../lib/getStationList2"; +import { stationIDPair } from "../lib/getStationList"; export const checkDuplicateTrainData = ( currentTrainArray: trainDataType[], diff --git a/lib/getStationList.ts b/lib/getStationList.ts index 76a3bf5..1a851f3 100644 --- a/lib/getStationList.ts +++ b/lib/getStationList.ts @@ -40,6 +40,41 @@ export const lineListPair = { N: "鳴門線(池谷-鳴門間)[N]", M: "瀬戸大橋線(児島-宇多津間)[M]", }; +export const getStationList2 = async () => { + return { + yosan, + uwajima, + uwajima2, + dosan, + dosan2, + koutoku, + tokushima, + naruto, + seto, + }; +}; +export const stationIDPair = { + yosan: "Y", + uwajima: "U", + uwajima2: "S", + dosan: "D", + dosan2: "K", + koutoku: "T", + tokushima: "B", + naruto: "N", + seto: "M", +}; +export const stationNamePair = { + "予讃線(高松 - 松山)": "yosan", + "予讃線・内子線(松山 - 内子 - 宇和島)": "uwajima", + "予讃線・伊予灘線(向井原 - 伊予大洲)": "uwajima2", + "土讃線(多度津 - 高知)": "dosan", + "土讃線(高知 - 窪川)": "dosan2", + "高徳線(高松 - 徳島)": "koutoku", + "徳島線(徳島 - 阿波池田)": "tokushima", + "鳴門線(池谷 - 鳴門)": "naruto", + "瀬戸大橋線(児島 - 宇多津)": "seto", +}; export const getStationList = async () => { if (status) return status; diff --git a/lib/getStationList2.ts b/lib/getStationList2.ts deleted file mode 100644 index 6d5bb5c..0000000 --- a/lib/getStationList2.ts +++ /dev/null @@ -1,46 +0,0 @@ -import yosan from "../assets/originData/yosan"; -import uwajima from "../assets/originData/uwajima"; -import uwajima2 from "../assets/originData/uwajima2"; -import dosan from "../assets/originData/dosan"; -import dosan2 from "../assets/originData/dosan2"; -import koutoku from "../assets/originData/koutoku"; -import tokushima from "../assets/originData/tokushima"; -import naruto from "../assets/originData/naruto"; -import seto from "../assets/originData/seto"; -export const getStationList2 = async () => { - return { - yosan, - uwajima, - uwajima2, - dosan, - dosan2, - koutoku, - tokushima, - naruto, - seto, - }; -}; - -export const stationIDPair = { - yosan: "Y", - uwajima: "U", - uwajima2: "S", - dosan: "D", - dosan2: "K", - koutoku: "T", - tokushima: "B", - naruto: "N", - seto: "M", -}; - -export const stationNamePair = { - "予讃線(高松 - 松山)": "yosan", - "予讃線・内子線(松山 - 内子 - 宇和島)": "uwajima", - "予讃線・伊予灘線(向井原 - 伊予大洲)": "uwajima2", - "土讃線(多度津 - 高知)": "dosan", - "土讃線(高知 - 窪川)": "dosan2", - "高徳線(高松 - 徳島)": "koutoku", - "徳島線(徳島 - 阿波池田)": "tokushima", - "鳴門線(池谷 - 鳴門)": "naruto", - "瀬戸大橋線(児島 - 宇多津)": "seto", -}; diff --git a/menu.js b/menu.js index 6a7a888..42a8592 100644 --- a/menu.js +++ b/menu.js @@ -17,7 +17,6 @@ import { widthPercentageToDP as wp } from "react-native-responsive-screen"; import { Ionicons } from "@expo/vector-icons"; import LottieView from "lottie-react-native"; import { parseAllTrainDiagram } from "./lib/parseAllTrainDiagram"; -import trainList from "./assets/originData/trainList"; import LED_vision from "./components/発車時刻表/LED_vidion"; import Sign from "./components/駅名表/Sign"; @@ -37,6 +36,7 @@ import { StationNumber } from "./components/Menu/StationPagination"; import lineColorList from "./assets/originData/lineColorList"; import { AS } from "./storageControl"; import { SimpleDot } from "./components/Menu/SimpleDot"; +import { useAllTrainDiagram } from "./stateBox/useAllTrainDiagram"; export default function Menu({ getCurrentTrain }) { const { navigate } = useNavigation(); @@ -131,11 +131,7 @@ export default function Menu({ getCurrentTrain }) { }, [selectedCurrentStation]); //全列車ダイヤリストを作成するuseEffect - const [trainDiagram, setTrainDiagram] = useState(null); // 全列車のダイヤを列番ベースで整理 - useEffect(() => { - //全列車リストを生成する副作用[無条件初回実行] - setTrainDiagram(trainList); - }, []); + const { allTrainDiagram:trainDiagram} = useAllTrainDiagram(); const oPSign = () => { const payload = { diff --git a/stateBox/useAllTrainDiagram.js b/stateBox/useAllTrainDiagram.js index fd00af2..4f8b589 100644 --- a/stateBox/useAllTrainDiagram.js +++ b/stateBox/useAllTrainDiagram.js @@ -1,3 +1,5 @@ +import trainList from "@/assets/originData/trainList"; +import { AS } from "@/storageControl"; import React, { createContext, useContext, useEffect, useState } from "react"; const initialState = { allTrainDiagram: undefined, @@ -9,24 +11,14 @@ const AllTrainDiagramContext = createContext(initialState); export const useAllTrainDiagram = () => useContext(AllTrainDiagramContext); export const AllTrainDiagramProvider = ({ children }) => { - const [allTrainDiagram, setAllTrainDiagram] = useState(); + const [allTrainDiagram, setAllTrainDiagram] = useState(trainList); const [keyList, setKeyList] = useState(); // 第二要素 useEffect( () => allTrainDiagram && setKeyList(Object.keys(allTrainDiagram)), [allTrainDiagram] ); - const customData = { - "9395D":"臨時列車,提,https://www.jr-shikoku.co.jp/03_news/pdf/20250314_20250413_tomorrow_together_worldtour.pdf#高松,発,22:10#昭和町,発,22:13#栗林公園北口,発,22:16#栗林,発,22:19#木太町,発,22:23#屋島,発,22:36#古高松南,発,22:39#八栗口,発,22:43#讃岐牟礼,発,22:45#志度,発,22:49#オレンジタウン,発,22:53#造田,発,22:57#神前,発,23:00#讃岐津田,発,23:06#鶴羽,発,23:10#丹生,発,23:15#三本松,着,23:18#", - "9174M":"臨時列車,提,https://www.jr-shikoku.co.jp/03_news/pdf/20250314_20250413_tomorrow_together_worldtour.pdf#高松,発,22:00#坂出,発,22:16#児島,発,22:39#茶屋町,発,22:48#早島,発,22:55#妹尾,発,22:59#岡山,着,23:06#", - "9662D":"宇和れんげまつり臨時列車,提,https://www.jr-shikoku.co.jp/03_news/pdf/20250124_20250629_rinji_spring.pdf#宇和島,発,10:00#北宇和島,発,10:03#高光,発,10:07#伊予吉田,発,10:21#立間,発,10:50#下宇和,発,10:36#卯之町,発,10:39#上宇和,発,10:42#伊予石城,発,10:46#双岩,発,10:53#八幡浜,着,10:58#", - "9664D":"宇和れんげまつり臨時列車,提,https://www.jr-shikoku.co.jp/03_news/pdf/20250124_20250629_rinji_spring.pdf#卯之町,発,11:18#上宇和,発,11:21#伊予石城,発,11:25#双岩,発,11:34#八幡浜,着,11:39#", - "9663D":"宇和れんげまつり臨時列車,提,https://www.jr-shikoku.co.jp/03_news/pdf/20250124_20250629_rinji_spring.pdf#八幡浜,発,10:07#双岩,発,10:16#伊予石城,発,10:23#上宇和,発,10:27#卯之町,着,10:30#", - "9665D":"宇和れんげまつり臨時列車,提,https://www.jr-shikoku.co.jp/03_news/pdf/20250124_20250629_rinji_spring.pdf#八幡浜,発,13:38#双岩,発,13:45#伊予石城,発,13:52#上宇和,発,13:56#卯之町,発,14:07#下宇和,発,14:10#立間,発,14:18#伊予吉田,発,14:25#高光,発,14:31#北宇和島,発,14:35#宇和島,着,14:37#", - }; useEffect(() => { - fetch( - "https://n8n.haruk.in/webhook/CrowdTh%E2%82%AC71m3Ra7!ngLead%E2%82%ACr$" - ) + fetch("https://n8n.haruk.in/webhook/JR-shikoku-diagram-migrate-original") .then((res) => res.json()) .then((res) => res.data) .then((res) => { @@ -38,34 +30,21 @@ export const AllTrainDiagramProvider = ({ children }) => { return data; }) .then((res) => { - Object.assign(res, customData); setAllTrainDiagram(res); + AS.setItem("allTrainDiagram", JSON.stringify(res)); }) .catch((d) => { - alert("allTrainDiagram取得エラー/再取得します"); - alert(d); - fetch( - "https://script.google.com/macros/s/AKfycbx_s7RB-xTy-iAslFJg7LfplLV09-hjDXEjdi9kCP_JT45wq17Af_IPOKIOqIfaNDg/exec" - ) - .then((res) => res.json()) - .then((res) => { - const data = {}; - res.forEach((d) => { - const keys = Object.keys(d); - data[keys] = d[keys]; - }); - return data; - }) - .then((res) => { - Object.assign(res, customData); - setAllTrainDiagram(res); + AS.getItem("allTrainDiagram") + .then((d) => setAllTrainDiagram(JSON.parse(d))) + .catch(() => { + alert("初回の路線情報の取得に失敗しました。"); }); }); }, []); return ( {children} diff --git a/stateBox/useBusAndTrainData.js b/stateBox/useBusAndTrainData.js index e29d3f6..692913b 100644 --- a/stateBox/useBusAndTrainData.js +++ b/stateBox/useBusAndTrainData.js @@ -1,6 +1,6 @@ import React, { createContext, useContext, useState, useEffect } from "react"; -import trainList from "../assets/originData/trainList"; import { AS } from "../storageControl"; +import { useAllTrainDiagram } from "./useAllTrainDiagram"; const initialState = { busAndTrainData: [], setBusAndTrainData: () => {}, @@ -17,6 +17,7 @@ export const useBusAndTrainData = () => { }; export const BusAndTrainDataProvider = ({ children }) => { + const { allTrainDiagram } = useAllTrainDiagram(); const [busAndTrainData, setBusAndTrainData] = useState([]); const [trainPairData, setTrainPairData] = useState([]); useEffect(() => { @@ -79,7 +80,7 @@ export const BusAndTrainDataProvider = ({ children }) => { case "139M": returnArray.push("143M"); break; - // 土讃線琴平界隈 + // 土讃線琴平界隈 case "1263M": returnArray.push("4263M"); break; @@ -130,7 +131,7 @@ export const BusAndTrainDataProvider = ({ children }) => { case "484D": returnArray.push("583D"); break; - // reverse. + // reverse. case "525D": returnArray.push("4430D"); break; @@ -173,7 +174,7 @@ export const BusAndTrainDataProvider = ({ children }) => { case "583D": returnArray.push("484D"); break; - //上り + //上り case "4520D": returnArray.push("4314D"); break; @@ -215,7 +216,7 @@ export const BusAndTrainDataProvider = ({ children }) => { break; case "564D": returnArray.push("475D"); - break; + break; case "568D": returnArray.push("5479D"); break; @@ -225,7 +226,7 @@ export const BusAndTrainDataProvider = ({ children }) => { case "576D": returnArray.push("4368D"); break; - // reverse. + // reverse. case "4314D": returnArray.push("4520D"); break; @@ -278,12 +279,12 @@ export const BusAndTrainDataProvider = ({ children }) => { returnArray.push("576D"); break; } - if(new RegExp(/^4[1-9]\d\d[DM]$/).test(trainNum)){ - if (trainList["5" + trainNum.substring(1)]) + if (new RegExp(/^4[1-9]\d\d[DM]$/).test(trainNum)) { + if (allTrainDiagram["5" + trainNum.substring(1)]) returnArray.push("5" + trainNum.substring(1)); } - if(new RegExp(/^5[1-7]\d\d[DM]$/).test(trainNum)){ - if (trainList["4" + trainNum.substring(1)]) + if (new RegExp(/^5[1-7]\d\d[DM]$/).test(trainNum)) { + if (allTrainDiagram["4" + trainNum.substring(1)]) returnArray.push("4" + trainNum.substring(1)); } if ( @@ -291,22 +292,24 @@ export const BusAndTrainDataProvider = ({ children }) => { new RegExp(/^4[1-9]\d\d[DM]$/).test(trainNum) || new RegExp(/^5[1-7]\d\d[DM]$/).test(trainNum) ) { - if (trainList[trainNum.substring(1)]) { + if (allTrainDiagram[trainNum.substring(1)]) { returnArray.push(trainNum.substring(1)); } } if (new RegExp(/^[1-9]\d\d[DM]$/).test(trainNum)) { // 列番がxxDの場合は4xxDと5xxDの列番を検索 - if (trainList["4" + trainNum]) returnArray.push("4" + trainNum); - if (trainList["5" + trainNum]) returnArray.push("5" + trainNum); + if (allTrainDiagram["4" + trainNum]) returnArray.push("4" + trainNum); + if (allTrainDiagram["5" + trainNum]) returnArray.push("5" + trainNum); } if (!returnArray.length) return []; - const TDArray = returnArray.filter(d => trainList.hasOwnProperty(d)).map((d) => { - const TD = trainList[d]; - if (!TD) return; - return { id: d, TrainData: TD.split("#").filter((d) => d != "") }; - }); + const TDArray = returnArray + .filter((d) => allTrainDiagram.hasOwnProperty(d)) + .map((d) => { + const TD = allTrainDiagram[d]; + if (!TD) return; + return { id: d, TrainData: TD.split("#").filter((d) => d != "") }; + }); return TDArray; }; return ( diff --git a/stateBox/useStationList.tsx b/stateBox/useStationList.tsx index c064c12..f718064 100644 --- a/stateBox/useStationList.tsx +++ b/stateBox/useStationList.tsx @@ -5,8 +5,7 @@ import React, { useEffect, FC, } from "react"; -import { getStationList } from "../lib/getStationList"; -import { lineList } from "../lib/getStationList"; +import { lineList, getStationList } from "../lib/getStationList"; type initialStateType = { originalStationList: any[][]; diff --git a/stateBox/useTrainMenu.js b/stateBox/useTrainMenu.js index 8fcf424..cb5925e 100644 --- a/stateBox/useTrainMenu.js +++ b/stateBox/useTrainMenu.js @@ -2,7 +2,7 @@ import React, { createContext, useContext, useState, useEffect } from "react"; import { ASCore } from "../storageControl"; -import { getStationList2 } from "../lib/getStationList2"; +import { getStationList2 } from "../lib/getStationList"; import { injectJavascriptData } from "../lib/webViewInjectjavascript"; const initialState = {