diff --git a/components/発車時刻表/LED_vidion.js b/components/発車時刻表/LED_vidion.js index 0f1376c..4609cf3 100644 --- a/components/発車時刻表/LED_vidion.js +++ b/components/発車時刻表/LED_vidion.js @@ -6,10 +6,9 @@ import LottieView from "lottie-react-native"; import { Ionicons, MaterialCommunityIcons } from "@expo/vector-icons"; import { customTrainDataDetector } from "../custom-train-data"; import { useInterval } from "../../lib/useInterval"; -import trainList from "../../assets/originData/trainList"; import { objectIsEmpty } from "../../lib/objectIsEmpty"; -import { parseAllTrainDiagram } from "../../lib/parseAllTrainDiagram"; import { getTrainType } from "../../lib/getTrainType"; +import { HeaderConfig } from "../../lib/HeaderConfig"; let diagramData = undefined; @@ -42,18 +41,9 @@ let diagramData = undefined; * 9031M サンライズ瀬戸琴平(延長)(臨時?) * 9062D 四国まんなか千年ものがたり(臨時?) */ -export default function LED_vision({ - station, - navigate, - setTrainInfo, - EachTrainInfoAsSR, -}) { - const HeaderConfig = { - headers: { - referer: "https://train.jr-shikoku.co.jp/sp.html", - }, - }; - const [trainDiagram, setTrainDiagram] = useState(null); // 全列車のダイヤを列番ベースで整理 +export default function LED_vision(props) { + const { station, navigate, setTrainInfo, EachTrainInfoAsSR, trainDiagram } = + props; const [stationDiagram, setStationDiagram] = useState({}); //当該駅の全時刻表 const [currentTrain, setCurrentTrain] = useState(null); //現在在線中の全列車 const [currentTrainLoading, setCurrentTrainLoading] = useState("loading"); @@ -61,23 +51,6 @@ export default function LED_vision({ const [trainIDSwitch, setTrainIDSwitch] = useState(false); const [trainDescriptionSwitch, setTrainDescriptionSwitch] = useState(false); - useEffect(() => { - //全列車リストを生成する副作用[無条件初回実行] - fetch( - "https://train.jr-shikoku.co.jp/g?arg1=station&arg2=traintimeinfo&arg3=dia", - HeaderConfig - ) - .then((response) => response.text()) - .then((d) => { - if (d.indexOf("404 Not Found") != -1) throw Error; - setTrainDiagram(parseAllTrainDiagram(d)); - }) - .catch((d) => { - console.log("fallback"); - setTrainDiagram(trainList); - }); - }, []); - useEffect(() => { // 現在の駅に停車するダイヤを作成する副作用[列車ダイヤと現在駅情報] if (!trainDiagram) { @@ -378,7 +351,11 @@ const EachData = ({ /> - + {trainDescriptionSwitch && !!train.info && ( @@ -451,7 +428,7 @@ const checkDuplicateTrainData = (currentTrainArray) => { else return notNyujoData[0]; }; -const StatusAndDelay = ({ currentTrain, train }) => { +const StatusAndDelay = ({ currentTrain, train, station }) => { // 土讃線複数存在対策 const getTrainDelayStatus = (current) => { if (!current) return () => {}; diff --git a/lib/HeaderConfig.js b/lib/HeaderConfig.js new file mode 100644 index 0000000..f4812b5 --- /dev/null +++ b/lib/HeaderConfig.js @@ -0,0 +1,5 @@ +export const HeaderConfig = { + headers: { + referer: "https://train.jr-shikoku.co.jp/sp.html", + }, +}; diff --git a/lib/getStationList.js b/lib/getStationList.js index 077751b..f1314de 100644 --- a/lib/getStationList.js +++ b/lib/getStationList.js @@ -33,11 +33,6 @@ export const lineList = [ export const getStationList = async (props) => { if (status) return status; //駅リストイニシャライズ - const HeaderConfig = { - headers: { - referer: "https://train.jr-shikoku.co.jp/sp.html", - }, - }; return await Promise.all([ yosan, uwajima, diff --git a/lib/getTrainType.js b/lib/getTrainType.js index e026863..2f19ea3 100644 --- a/lib/getTrainType.js +++ b/lib/getTrainType.js @@ -1,5 +1,5 @@ -export const getTrainType = (data) => { - switch (data) { +export const getTrainType = (nameString) => { + switch (nameString) { case "Rapid": return { color: "aqua", name: "快速", data: "rapid" }; case "LTDEXP": diff --git a/menu.js b/menu.js index 561fb59..e41d917 100644 --- a/menu.js +++ b/menu.js @@ -25,6 +25,8 @@ import { } from "@expo/vector-icons"; import LottieView from "lottie-react-native"; import { StationDeteilView } from "./components/ActionSheetComponents/StationDeteilView"; +import { parseAllTrainDiagram } from "./lib/parseAllTrainDiagram"; +import trainList from "./assets/originData/trainList"; import LED_vision from "./components/発車時刻表/LED_vidion"; import Sign from "./components/駅名表/Sign"; @@ -36,6 +38,7 @@ import { getStationList, lineList } from "./lib/getStationList"; import { JRSTraInfo } from "./components/ActionSheetComponents/JRSTraInfo"; import { EachTrainInfo } from "./components/ActionSheetComponents/EachTrainInfo"; import useInterval from "./lib/useInterval"; +import { HeaderConfig } from "./lib/HeaderConfig"; export default function Menu(props) { const { @@ -150,6 +153,25 @@ export default function Menu(props) { } }, [selectedCurrentStation]); + //全列車ダイヤリストを作成するuseEffect + const [trainDiagram, setTrainDiagram] = useState(null); // 全列車のダイヤを列番ベースで整理 + useEffect(() => { + //全列車リストを生成する副作用[無条件初回実行] + fetch( + "https://train.jr-shikoku.co.jp/g?arg1=station&arg2=traintimeinfo&arg3=dia", + HeaderConfig + ) + .then((response) => response.text()) + .then((d) => { + if (d.indexOf("404 Not Found") != -1) throw Error; + setTrainDiagram(parseAllTrainDiagram(d)); + }) + .catch((d) => { + console.log("fallback"); + setTrainDiagram(trainList); + }); + }, []); + const openStationACFromEachTrainInfo = (stationName) => { // EachTrainInfoAsSR.current?.hide(); // const findStationEachLine = (selectLine) => { @@ -226,6 +248,7 @@ export default function Menu(props) { navigate={navigate} setTrainInfo={setTrainInfo} EachTrainInfoAsSR={EachTrainInfoAsSR} + trainDiagram={trainDiagram} /> )}