trainDiagramをmenuトップに移動、HeaderConfigを分離統合、バグ修正
This commit is contained in:
parent
52b15288b9
commit
1b16e09633
@ -6,10 +6,9 @@ import LottieView from "lottie-react-native";
|
|||||||
import { Ionicons, MaterialCommunityIcons } from "@expo/vector-icons";
|
import { Ionicons, MaterialCommunityIcons } from "@expo/vector-icons";
|
||||||
import { customTrainDataDetector } from "../custom-train-data";
|
import { customTrainDataDetector } from "../custom-train-data";
|
||||||
import { useInterval } from "../../lib/useInterval";
|
import { useInterval } from "../../lib/useInterval";
|
||||||
import trainList from "../../assets/originData/trainList";
|
|
||||||
import { objectIsEmpty } from "../../lib/objectIsEmpty";
|
import { objectIsEmpty } from "../../lib/objectIsEmpty";
|
||||||
import { parseAllTrainDiagram } from "../../lib/parseAllTrainDiagram";
|
|
||||||
import { getTrainType } from "../../lib/getTrainType";
|
import { getTrainType } from "../../lib/getTrainType";
|
||||||
|
import { HeaderConfig } from "../../lib/HeaderConfig";
|
||||||
|
|
||||||
let diagramData = undefined;
|
let diagramData = undefined;
|
||||||
|
|
||||||
@ -42,18 +41,9 @@ let diagramData = undefined;
|
|||||||
* 9031M サンライズ瀬戸琴平(延長)(臨時?)
|
* 9031M サンライズ瀬戸琴平(延長)(臨時?)
|
||||||
* 9062D 四国まんなか千年ものがたり(臨時?)
|
* 9062D 四国まんなか千年ものがたり(臨時?)
|
||||||
*/
|
*/
|
||||||
export default function LED_vision({
|
export default function LED_vision(props) {
|
||||||
station,
|
const { station, navigate, setTrainInfo, EachTrainInfoAsSR, trainDiagram } =
|
||||||
navigate,
|
props;
|
||||||
setTrainInfo,
|
|
||||||
EachTrainInfoAsSR,
|
|
||||||
}) {
|
|
||||||
const HeaderConfig = {
|
|
||||||
headers: {
|
|
||||||
referer: "https://train.jr-shikoku.co.jp/sp.html",
|
|
||||||
},
|
|
||||||
};
|
|
||||||
const [trainDiagram, setTrainDiagram] = useState(null); // 全列車のダイヤを列番ベースで整理
|
|
||||||
const [stationDiagram, setStationDiagram] = useState({}); //当該駅の全時刻表
|
const [stationDiagram, setStationDiagram] = useState({}); //当該駅の全時刻表
|
||||||
const [currentTrain, setCurrentTrain] = useState(null); //現在在線中の全列車
|
const [currentTrain, setCurrentTrain] = useState(null); //現在在線中の全列車
|
||||||
const [currentTrainLoading, setCurrentTrainLoading] = useState("loading");
|
const [currentTrainLoading, setCurrentTrainLoading] = useState("loading");
|
||||||
@ -61,23 +51,6 @@ export default function LED_vision({
|
|||||||
const [trainIDSwitch, setTrainIDSwitch] = useState(false);
|
const [trainIDSwitch, setTrainIDSwitch] = useState(false);
|
||||||
const [trainDescriptionSwitch, setTrainDescriptionSwitch] = 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(() => {
|
useEffect(() => {
|
||||||
// 現在の駅に停車するダイヤを作成する副作用[列車ダイヤと現在駅情報]
|
// 現在の駅に停車するダイヤを作成する副作用[列車ダイヤと現在駅情報]
|
||||||
if (!trainDiagram) {
|
if (!trainDiagram) {
|
||||||
@ -378,7 +351,11 @@ const EachData = ({
|
|||||||
/>
|
/>
|
||||||
<LastStation lastStation={d.lastStation} />
|
<LastStation lastStation={d.lastStation} />
|
||||||
<DependTime time={d.time} />
|
<DependTime time={d.time} />
|
||||||
<StatusAndDelay currentTrain={currentTrain} train={d.train} />
|
<StatusAndDelay
|
||||||
|
currentTrain={currentTrain}
|
||||||
|
train={d.train}
|
||||||
|
station={props.station}
|
||||||
|
/>
|
||||||
</TouchableOpacity>
|
</TouchableOpacity>
|
||||||
{trainDescriptionSwitch && !!train.info && (
|
{trainDescriptionSwitch && !!train.info && (
|
||||||
<Description info={train.info} />
|
<Description info={train.info} />
|
||||||
@ -451,7 +428,7 @@ const checkDuplicateTrainData = (currentTrainArray) => {
|
|||||||
else return notNyujoData[0];
|
else return notNyujoData[0];
|
||||||
};
|
};
|
||||||
|
|
||||||
const StatusAndDelay = ({ currentTrain, train }) => {
|
const StatusAndDelay = ({ currentTrain, train, station }) => {
|
||||||
// 土讃線複数存在対策
|
// 土讃線複数存在対策
|
||||||
const getTrainDelayStatus = (current) => {
|
const getTrainDelayStatus = (current) => {
|
||||||
if (!current) return () => {};
|
if (!current) return () => {};
|
||||||
|
5
lib/HeaderConfig.js
Normal file
5
lib/HeaderConfig.js
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
export const HeaderConfig = {
|
||||||
|
headers: {
|
||||||
|
referer: "https://train.jr-shikoku.co.jp/sp.html",
|
||||||
|
},
|
||||||
|
};
|
@ -33,11 +33,6 @@ export const lineList = [
|
|||||||
export const getStationList = async (props) => {
|
export const getStationList = async (props) => {
|
||||||
if (status) return status;
|
if (status) return status;
|
||||||
//駅リストイニシャライズ
|
//駅リストイニシャライズ
|
||||||
const HeaderConfig = {
|
|
||||||
headers: {
|
|
||||||
referer: "https://train.jr-shikoku.co.jp/sp.html",
|
|
||||||
},
|
|
||||||
};
|
|
||||||
return await Promise.all([
|
return await Promise.all([
|
||||||
yosan,
|
yosan,
|
||||||
uwajima,
|
uwajima,
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
export const getTrainType = (data) => {
|
export const getTrainType = (nameString) => {
|
||||||
switch (data) {
|
switch (nameString) {
|
||||||
case "Rapid":
|
case "Rapid":
|
||||||
return { color: "aqua", name: "快速", data: "rapid" };
|
return { color: "aqua", name: "快速", data: "rapid" };
|
||||||
case "LTDEXP":
|
case "LTDEXP":
|
||||||
|
23
menu.js
23
menu.js
@ -25,6 +25,8 @@ import {
|
|||||||
} from "@expo/vector-icons";
|
} from "@expo/vector-icons";
|
||||||
import LottieView from "lottie-react-native";
|
import LottieView from "lottie-react-native";
|
||||||
import { StationDeteilView } from "./components/ActionSheetComponents/StationDeteilView";
|
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 LED_vision from "./components/発車時刻表/LED_vidion";
|
||||||
import Sign from "./components/駅名表/Sign";
|
import Sign from "./components/駅名表/Sign";
|
||||||
@ -36,6 +38,7 @@ import { getStationList, lineList } from "./lib/getStationList";
|
|||||||
import { JRSTraInfo } from "./components/ActionSheetComponents/JRSTraInfo";
|
import { JRSTraInfo } from "./components/ActionSheetComponents/JRSTraInfo";
|
||||||
import { EachTrainInfo } from "./components/ActionSheetComponents/EachTrainInfo";
|
import { EachTrainInfo } from "./components/ActionSheetComponents/EachTrainInfo";
|
||||||
import useInterval from "./lib/useInterval";
|
import useInterval from "./lib/useInterval";
|
||||||
|
import { HeaderConfig } from "./lib/HeaderConfig";
|
||||||
|
|
||||||
export default function Menu(props) {
|
export default function Menu(props) {
|
||||||
const {
|
const {
|
||||||
@ -150,6 +153,25 @@ export default function Menu(props) {
|
|||||||
}
|
}
|
||||||
}, [selectedCurrentStation]);
|
}, [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) => {
|
const openStationACFromEachTrainInfo = (stationName) => {
|
||||||
// EachTrainInfoAsSR.current?.hide();
|
// EachTrainInfoAsSR.current?.hide();
|
||||||
// const findStationEachLine = (selectLine) => {
|
// const findStationEachLine = (selectLine) => {
|
||||||
@ -226,6 +248,7 @@ export default function Menu(props) {
|
|||||||
navigate={navigate}
|
navigate={navigate}
|
||||||
setTrainInfo={setTrainInfo}
|
setTrainInfo={setTrainInfo}
|
||||||
EachTrainInfoAsSR={EachTrainInfoAsSR}
|
EachTrainInfoAsSR={EachTrainInfoAsSR}
|
||||||
|
trainDiagram={trainDiagram}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
<JRSTraInfoBox
|
<JRSTraInfoBox
|
||||||
|
Loading…
Reference in New Issue
Block a user