diff --git a/App.js b/App.js
index 76d74dd..09ab333 100644
--- a/App.js
+++ b/App.js
@@ -80,30 +80,6 @@ export function AppContainer() {
});
}, []);
- const { setCurrentTrain, setCurrentTrainLoading } = useCurrentTrain();
-
- const getCurrentTrain = () =>
- fetch(
- "https://script.google.com/macros/s/AKfycby9Y2-Bm75J_WkbZimi7iS8v5r9wMa9wtzpdwES9sOGF4i6HIYEJOM60W6gM1gXzt1o/exec",
- HeaderConfig
- )
- .then((response) => response.json())
- .then((d) =>
- d.map((x) => ({ num: x.TrainNum, delay: x.delay, Pos: x.Pos }))
- )
- .then((d) => {
- setCurrentTrain(d);
- setCurrentTrainLoading("success");
- })
- .catch(() => {
- console.log("えらー");
- setCurrentTrainLoading("error");
- });
-
- useEffect(getCurrentTrain, []); //初回だけ現在の全在線列車取得
-
- useInterval(getCurrentTrain, 15000); //15秒毎に全在線列車取得
-
const { areaInfo, setAreaInfo } = useAreaInfo();
const getAreaData = () =>
fetch(
@@ -128,7 +104,7 @@ export function AppContainer() {
tabBarIcon: initIcon("barchart", "AntDesign"),
}}
>
- {(props) => }
+ {(props) => }
- {(props) => }
+ {(props) => }
a.num == trainNum)
- ),
},
navigate,
originalStationList,
@@ -251,23 +246,21 @@ export default function Apps({ navigation, webview, stationData }) {
return pre;
}, []);
if (returnDataBase.length) {
- sleep(25, function () {
- const payload = {
- currentStation: returnDataBase,
- originalStationList: originalStationList,
- navigate: navigate,
- goTo: "Apps",
- useShow: () =>
- SheetManager.show("StationDetailView", {
- payload,
- }),
- onExit: () => {
- SheetManager.hide("StationDetailView");
- },
- };
- SheetManager.show("StationDetailView", {
- payload,
- });
+ const payload = {
+ currentStation: returnDataBase,
+ originalStationList: originalStationList,
+ navigate: navigate,
+ goTo: "Apps",
+ useShow: () =>
+ SheetManager.show("StationDetailView", {
+ payload,
+ }),
+ onExit: () => {
+ SheetManager.hide("StationDetailView");
+ },
+ };
+ SheetManager.show("StationDetailView", {
+ payload,
});
} else {
SheetManager.hide("StationDetailView");
@@ -327,13 +320,6 @@ export default function Apps({ navigation, webview, stationData }) {
top={Platform.OS == "ios" ? Constants.statusBarHeight : 0}
LoadError={LoadError}
/>
-
-
);
}
diff --git a/MenuPage.js b/MenuPage.js
index 804f385..a7b01f0 100644
--- a/MenuPage.js
+++ b/MenuPage.js
@@ -12,10 +12,12 @@ import { useFavoriteStation } from "./stateBox/useFavoriteStation";
import { optionData } from "./lib/stackOption.js";
import CurrentTrainListView from "./components/CurrentTrainListView.js";
import AllTrainDiagramView from "./components/AllTrainDiagramView.js";
+import { useCurrentTrain } from "./stateBox/useCurrentTrain.js";
const Stack = createStackNavigator();
-export function MenuPage({ navigation, getCurrentTrain }) {
+export function MenuPage({ navigation }) {
const { favoriteStation, setFavoriteStation } = useFavoriteStation();
+ const { getCurrentTrain } = useCurrentTrain();
useEffect(() => {
const unsubscribe = navigation.addListener("tabPress", (e) => {
AS.getItem("favoriteStation")
diff --git a/Top.js b/Top.js
index 9120dc8..b320f59 100644
--- a/Top.js
+++ b/Top.js
@@ -12,10 +12,12 @@ import TrainMenu from "./components/trainMenu.js";
import FavoriteList from "./components/FavoriteList.js";
import { useFavoriteStation } from "./stateBox/useFavoriteStation";
import { optionData } from "./lib/stackOption.js";
+import { useCurrentTrain } from "./stateBox/useCurrentTrain.js";
const Stack = createStackNavigator();
-export const Top = ({ navigation, getCurrentTrain }) => {
+export const Top = ({ navigation }) => {
const webview = useRef();
const { favoriteStation, setFavoriteStation } = useFavoriteStation();
+ const { getCurrentTrain } = useCurrentTrain();
//地図用
const [mapsStationData, setMapsStationData] = useState(undefined);
diff --git a/components/ActionSheetComponents/EachTrainInfo.js b/components/ActionSheetComponents/EachTrainInfo.js
index ecaa412..5d0c64f 100644
--- a/components/ActionSheetComponents/EachTrainInfo.js
+++ b/components/ActionSheetComponents/EachTrainInfo.js
@@ -24,6 +24,8 @@ import {
widthPercentageToDP,
} from "react-native-responsive-screen";
import lineColorList from "../../assets/originData/lineColorList";
+import { useCurrentTrain } from "../../stateBox/useCurrentTrain";
+import { checkDuplicateTrainData } from "../../lib/checkDuplicateTrainData";
export const EachTrainInfo = (props) => {
if (!props.payload) return <>>;
@@ -40,6 +42,18 @@ export const EachTrainInfo = (props) => {
const [trainPositionSwitch, setTrainPositionSwitch] = useState("false");
+ const { currentTrain } = useCurrentTrain();
+
+ const [currentTrainData, setCurrentTrainData] = useState([]);
+
+ useEffect(() => {
+ setCurrentTrainData(
+ checkDuplicateTrainData(
+ currentTrain.filter((d) => d.num == data.trainNum)
+ )
+ );
+ }, [currentTrain]);
+
useEffect(() => {
//列車現在地アイコン表示スイッチ
AS.getItem("trainPositionSwitch")
@@ -65,17 +79,17 @@ export const EachTrainInfo = (props) => {
return Station.map((d) => d.StationNumber)[0];
};
useEffect(() => {
- //data.trainData.Pos = "鴨川~端岡"; //test
- if (!data.trainData?.Pos) return;
- if (data.trainData?.Pos.match("~")) {
- const pos = data.trainData?.Pos.replace("(下り)", "")
+ //currentTrainData.Pos = "鴨川~端岡"; //test
+ if (!currentTrainData?.Pos) return;
+ if (currentTrainData?.Pos.match("~")) {
+ const pos = currentTrainData?.Pos.replace("(下り)", "")
.replace("(上り)", "")
.split("~");
setCurrentPosition([getStationData(pos[0]), getStationData(pos[1])]);
} else {
- setCurrentPosition([getStationData(data.trainData?.Pos)]);
+ setCurrentPosition([getStationData(currentTrainData?.Pos)]);
}
- }, [data.trainData]);
+ }, [currentTrainData]);
const stationList =
originalStationList &&
@@ -249,6 +263,7 @@ export const EachTrainInfo = (props) => {
gestureEnabled={isTop}
CustomHeaderComponent={<>>}
ref={actionSheetRef}
+ drawUnderStatusBar={false}
>
{
現在地 {currentPosition.toString()}
- {data.trainData?.Pos && data.trainData?.Pos.match("~") ? (
+ {currentTrainData?.Pos && currentTrainData?.Pos.match("~") ? (
<>
{
}}
>
{
- data.trainData?.Pos.replace("(下り)", "")
+ currentTrainData?.Pos.replace("(下り)", "")
.replace("(上り)", "")
.split("~")[0]
}
@@ -365,7 +380,7 @@ export const EachTrainInfo = (props) => {
}}
>
{
- data.trainData?.Pos.replace("(下り)", "")
+ currentTrainData?.Pos.replace("(下り)", "")
.replace("(上り)", "")
.split("~")[1]
}
@@ -379,7 +394,7 @@ export const EachTrainInfo = (props) => {
textAlign: "right",
}}
>
- {data.trainData?.Pos}
+ {currentTrainData?.Pos}
)}
@@ -394,7 +409,7 @@ export const EachTrainInfo = (props) => {
}}
>
- {isNaN(data.trainData?.delay) ? "状態" : "遅延時分"}
+ {isNaN(currentTrainData?.delay) ? "状態" : "遅延時分"}
{
textAlign: "right",
}}
>
- {data.trainData?.delay}
- {isNaN(data.trainData?.delay) ? "" : "分"}
+ {currentTrainData?.delay}
+ {isNaN(currentTrainData?.delay) ? "" : "分"}
{
textAlign: "right",
}}
>
- {data.trainData?.num}
+ {currentTrainData?.num}
@@ -511,6 +526,57 @@ export const EachTrainInfo = (props) => {
*/}
)}
+
+
+ 停車駅
+
+
+ {!isNaN(currentTrainData?.delay) &&
+ currentTrainData?.delay != 0 && (
+
+ (定刻)
+
+ )}
+
+ 見込
+
+
+
+
+
{
from == "AllTrainDiagramView" ? "70%" : "50%"
),
}}
- nestedScrollEnabled
onScroll={(e) => {
if (!Platform.OS !== "android") return;
setIsTop(e.nativeEvent.contentOffset.y < 0);
}}
>
-
-
- {/*
+ {/*
ほげほげふがふが */}
-
- {
+ const [station, se, time] = i.split(",");
+ const Stations = stationList.map((a) =>
+ a.filter((d) => d.StationName == station)
+ );
+ const StationNumbers =
+ Stations &&
+ Stations.reduce((newArray, e) => {
+ return newArray.concat(e);
+ }, [])
+ .filter((d) => d.StationNumber)
+ .map((d) => d.StationNumber);
+
+ const colorIDs =
+ StationNumbers != null
+ ? StationNumbers.map((d) => {
+ return d.split("").filter((s) => "A" < s && s < "Z");
+ }).reduce((newArray, e) => {
+ return newArray.concat(e);
+ }, [])
+ : [];
+ const EachIDs =
+ StationNumbers != null
+ ? StationNumbers.map((d) => {
+ return d
+ .split("")
+ .filter((s) => "0" <= s && s <= "9")
+ .join("");
+ })
+ : [];
+ const date = new Date();
+ if (time) {
+ date.setHours(time.split(":")[0], time.split(":")[1]);
+ }
+ if (!isNaN(currentTrainData?.delay)) {
+ date.setMinutes(date.getMinutes() + currentTrainData?.delay);
+ }
+ const timeString = date.toTimeString().split(" ")[0].split(":");
+ return (
+ openStationACFromEachTrainInfo(station)}
+ key={station}
>
- 停車駅
-
- {!isNaN(data.trainData?.delay) &&
- data.trainData?.delay != 0 && (
-
- (定刻)
-
- )}
-
- 見込
-
-
-
-
-
- {trainData.map((i, index) => {
- const [station, se, time] = i.split(",");
- const Stations = stationList.map((a) =>
- a.filter((d) => d.StationName == station)
- );
- const StationNumbers =
- Stations &&
- Stations.reduce((newArray, e) => {
- return newArray.concat(e);
- }, [])
- .filter((d) => d.StationNumber)
- .map((d) => d.StationNumber);
-
- const colorIDs =
- StationNumbers != null
- ? StationNumbers.map((d) => {
- return d.split("").filter((s) => "A" < s && s < "Z");
- }).reduce((newArray, e) => {
- return newArray.concat(e);
- }, [])
- : [];
- const EachIDs =
- StationNumbers != null
- ? StationNumbers.map((d) => {
- return d
- .split("")
- .filter((s) => "0" <= s && s <= "9")
- .join("");
- })
- : [];
- const date = new Date();
- if (time) {
- date.setHours(time.split(":")[0], time.split(":")[1]);
- }
- if (!isNaN(data.trainData?.delay)) {
- date.setMinutes(date.getMinutes() + data.trainData?.delay);
- }
- const timeString = date.toTimeString().split(" ")[0].split(":");
- return (
- openStationACFromEachTrainInfo(station)}
- key={station}
- >
-
-
- {colorIDs.map((color, index) => (
-
-
-
- {colorIDs[index]}
-
-
- {EachIDs[index]}
-
-
-
- ))}
-
-
- {station}
-
- {points && points.findIndex((d) => d == index) >= 0 ? (
+ {colorIDs.map((color, index) => (
+
+
- 🚊
+ {colorIDs[index]}
- ) : null}
- {!isNaN(data.trainData?.delay) &&
- data.trainData?.delay != 0 && (
-
- {time}
-
- )}
+
+ {EachIDs[index]}
+
+
+
+ ))}
+
+
+ {station}
+
+ {points && points.findIndex((d) => d == index) >= 0 ? (
- {timeString[0]}:{timeString[1]}
+ 🚊
-
- {se?.replace("発", "出発").replace("着", "到着")}
-
-
+ ) : null}
+ {!isNaN(currentTrainData?.delay) &&
+ currentTrainData?.delay != 0 && (
+
+ {time}
+
+ )}
+
+ {timeString[0]}:{timeString[1]}
+
+
+ {se?.replace("発", "出発").replace("着", "到着")}
+
-
- );
- })}
-
+
+
+ );
+ })}
diff --git a/components/AllTrainDiagramView.js b/components/AllTrainDiagramView.js
index c37a048..9b122d2 100644
--- a/components/AllTrainDiagramView.js
+++ b/components/AllTrainDiagramView.js
@@ -16,7 +16,6 @@ import { MaterialCommunityIcons } from "@expo/vector-icons";
import { useCurrentTrain } from "../stateBox/useCurrentTrain";
import { useAreaInfo } from "../stateBox/useAreaInfo";
import { useAllTrainDiagram } from "../stateBox/useAllTrainDiagram";
-import { EachTrainInfo } from "./ActionSheetComponents/EachTrainInfo";
import { customTrainDataDetector } from "./custom-train-data";
import { getStationList, lineList } from "../lib/getStationList";
@@ -65,9 +64,6 @@ export default function AllTrainDiagramView({ navigation: { navigate } }) {
limited: `${getTrainType(train.type).data}:${
train.trainName
}${TrainNumber}`,
- trainData: checkDuplicateTrainData(
- currentTrain.filter((a) => a.num == d)
- ),
},
navigate,
originalStationList,
diff --git a/components/settings.js b/components/settings.js
index 7f7b871..72bca39 100644
--- a/components/settings.js
+++ b/components/settings.js
@@ -165,7 +165,7 @@ export default function Setting(props) {
textAlignVertical: "center",
}}
>
- 内部バージョン: 4.6.1
+ 内部バージョン: 4.6.2
diff --git a/components/発車時刻表/LED_vidion.js b/components/発車時刻表/LED_vidion.js
index 33f078c..db4faf9 100644
--- a/components/発車時刻表/LED_vidion.js
+++ b/components/発車時刻表/LED_vidion.js
@@ -321,9 +321,6 @@ const EachData = ({
limited: `${getTrainType(train.type).data}:${
train.trainName
}${TrainNumber}`,
- trainData: checkDuplicateTrainData(
- currentTrain.filter((a) => a.num == d.train)
- ),
},
navigate,
originalStationList,
diff --git a/components/駅名表/Sign.js b/components/駅名表/Sign.js
index 7f07697..e5ec5cf 100644
--- a/components/駅名表/Sign.js
+++ b/components/駅名表/Sign.js
@@ -6,6 +6,8 @@ import { useInterval } from "../../lib/useInterval";
import { AS } from "../../storageControl";
import { useFavoriteStation } from "../../stateBox/useFavoriteStation";
+import lineColorList from "../../assets/originData/lineColorList";
+
export default function Sign(props) {
const { currentStation, originalStationList, oP, oLP } = props;
const { favoriteStation, setFavoriteStation } = useFavoriteStation();
@@ -24,7 +26,7 @@ export default function Sign(props) {
return false;
}
});
- setTestButtonStatus(isFavorite.length != 0);
+ setTestButtonStatus(isFavorite.length == 0 ? false : true);
}, [favoriteStation, currentStation]);
useInterval(() => {
@@ -220,27 +222,40 @@ const StationNumberMaker = (props) => {
};
return props.currentStation
.filter((d) => (d.StationNumber ? true : false))
- .map((d, index, array) => (
-
-
- {d.StationNumber}
-
-
- ));
+ .map((d, index, array) => {
+ const lineID = d.StationNumber.slice(0, 1);
+ const lineName = d.StationNumber.slice(1);
+ return (
+
+
+
+ {lineID + "\n" + lineName}
+
+
+
+ );
+ });
};
const StationNameArea = (props) => {
diff --git a/stateBox/useCurrentTrain.js b/stateBox/useCurrentTrain.js
index 241822e..944b37c 100644
--- a/stateBox/useCurrentTrain.js
+++ b/stateBox/useCurrentTrain.js
@@ -1,9 +1,13 @@
-import React, { createContext, useContext, useState } from "react";
+import React, { createContext, useContext, useState, useEffect } from "react";
+import { HeaderConfig } from "../lib/HeaderConfig";
+
+import useInterval from "../lib/useInterval";
const initialState = {
currentTrain: [],
setCurrentTrain: () => {},
currentTrainLoading: "loading",
setCurrentTrainLoading: () => {},
+ getCurrentTrain: () => {},
};
const CurrentTrainContext = createContext(initialState);
@@ -15,7 +19,27 @@ export const useCurrentTrain = () => {
export const CurrentTrainProvider = ({ children }) => {
const [currentTrain, setCurrentTrain] = useState([]); //現在在線中の全列車 { num: 列車番号, delay: 遅延時分(状態), Pos: 位置情報 }
const [currentTrainLoading, setCurrentTrainLoading] = useState("loading"); // success, error, loading
+ const getCurrentTrain = () =>
+ fetch(
+ "https://script.google.com/macros/s/AKfycby9Y2-Bm75J_WkbZimi7iS8v5r9wMa9wtzpdwES9sOGF4i6HIYEJOM60W6gM1gXzt1o/exec",
+ HeaderConfig
+ )
+ .then((response) => response.json())
+ .then((d) =>
+ d.map((x) => ({ num: x.TrainNum, delay: x.delay, Pos: x.Pos }))
+ )
+ .then((d) => {
+ setCurrentTrain(d);
+ setCurrentTrainLoading("success");
+ })
+ .catch(() => {
+ console.log("えらー");
+ setCurrentTrainLoading("error");
+ });
+ useEffect(getCurrentTrain, []); //初回だけ現在の全在線列車取得
+
+ useInterval(getCurrentTrain, 15000); //15秒毎に全在線列車取得
return (
{
setCurrentTrain,
currentTrainLoading,
setCurrentTrainLoading,
+ getCurrentTrain,
}}
>
{children}
diff --git a/trainbaseview.js b/trainbaseview.js
index 7486fd9..d5b9f1c 100644
--- a/trainbaseview.js
+++ b/trainbaseview.js
@@ -36,7 +36,7 @@ export default function TrainBase({ route, navigation }) {
setSupportMultipleWindows={false}
onMessage={(event) => {}}
/>
- {from == "LED" && (
+ {(from == "LED" || from == "AllTrainDiagramView") && (
navigate("menu")}
+ onPress={() =>
+ navigate(from == "AllTrainDiagramView" ? "AllTrainIDList" : "menu")
+ }
>