trainDiagramをmenuトップに移動、HeaderConfigを分離統合、バグ修正

This commit is contained in:
harukin-OneMix4 2023-07-06 02:38:42 +09:00
parent 52b15288b9
commit 1b16e09633
5 changed files with 40 additions and 40 deletions

View File

@ -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("<title>404 Not Found</title>") != -1) throw Error;
setTrainDiagram(parseAllTrainDiagram(d));
})
.catch((d) => {
console.log("fallback");
setTrainDiagram(trainList);
});
}, []);
useEffect(() => {
// 現在の駅に停車するダイヤを作成する副作用[列車ダイヤと現在駅情報]
if (!trainDiagram) {
@ -378,7 +351,11 @@ const EachData = ({
/>
<LastStation lastStation={d.lastStation} />
<DependTime time={d.time} />
<StatusAndDelay currentTrain={currentTrain} train={d.train} />
<StatusAndDelay
currentTrain={currentTrain}
train={d.train}
station={props.station}
/>
</TouchableOpacity>
{trainDescriptionSwitch && !!train.info && (
<Description info={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 () => {};

5
lib/HeaderConfig.js Normal file
View File

@ -0,0 +1,5 @@
export const HeaderConfig = {
headers: {
referer: "https://train.jr-shikoku.co.jp/sp.html",
},
};

View File

@ -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,

View File

@ -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":

23
menu.js
View File

@ -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("<title>404 Not Found</title>") != -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}
/>
)}
<JRSTraInfoBox