diff --git a/components/Apps.js b/components/Apps.js
index 769b17a..f49720d 100644
--- a/components/Apps.js
+++ b/components/Apps.js
@@ -24,6 +24,7 @@ import { MapsButton } from "./Apps/MapsButton";
import { ReloadButton } from "./Apps/ReloadButton";
import { LandscapeBackButton } from "./Apps/LandscapeBackButton";
import { useStationList } from "../stateBox/useStationList";
+import { FixedPositionBox } from "./Apps/FixedPositionBox";
/*
import StatusbarDetect from '../StatusbarDetect';
var Status = StatusbarDetect(); */
@@ -127,13 +128,7 @@ export default function Apps() {
/>
)}
{fixedPosition.type && (
- {
- setFixedPosition({ type: null, value: null });
- }}
- >
- {fixedPosition.type}: {fixedPosition.value}
-
+
)}
{mapSwitch == "true" ? (
diff --git a/components/Apps/FixedPositionBox.tsx b/components/Apps/FixedPositionBox.tsx
new file mode 100644
index 0000000..703a3a6
--- /dev/null
+++ b/components/Apps/FixedPositionBox.tsx
@@ -0,0 +1,269 @@
+import lineColorList from "@/assets/originData/lineColorList";
+import { getStationID } from "@/lib/eachTrainInfoCoreLib/getStationData";
+import { useAllTrainDiagram } from "@/stateBox/useAllTrainDiagram";
+import { useCurrentTrain } from "@/stateBox/useCurrentTrain";
+import { useStationList, StationProps } from "@/stateBox/useStationList";
+import { useEffect, useState } from "react";
+import { Text, TouchableOpacity, View, Image, Platform } from "react-native";
+import { customTrainDataDetector } from "../custom-train-data";
+import { getStringConfig, typeID } from "@/lib/getStringConfig";
+import { getTrainType } from "@/lib/getTrainType";
+import Constants from "expo-constants";
+
+export const FixedPositionBox = () => {
+ const { fixedPosition, setFixedPosition } = useCurrentTrain();
+
+ return (
+
+
+ {fixedPosition.type === "station" && (
+
+ )}
+ {fixedPosition.type === "train" && (
+
+ )}
+
+
+ );
+};
+
+export const FixedStation = ({ stationID }) => {
+ const { fixedPosition, setFixedPosition } = useCurrentTrain();
+ const { getStationDataFromId } = useStationList();
+ const [station, setStation] = useState([]);
+ useEffect(() => {
+ const data = getStationDataFromId(stationID);
+ setStation(data);
+ }, [stationID]);
+ console.log(station);
+ const lineColor =
+ station.length > 0
+ ? lineColorList[station[0]?.StationNumber.slice(0, 1)]
+ : "white";
+ return (
+ {
+ setFixedPosition({ type: null, value: null });
+ }}
+ >
+
+
+ {station.map((s) => {
+ if (s.StationNumber === null) return null;
+ return (
+
+
+ {s.StationNumber?.slice(0, 1)}
+
+
+ {s.StationNumber?.slice(1)}
+
+
+ );
+ })}
+
+
+ {station[0]?.Station_JP}
+
+
+
+ 駅情報固定中
+
+
+
+
+
+ 次:15:00 快速マリン 岡山
+
+
+
+ );
+};
+
+export const FixedTrain = ({ trainID }) => {
+ const { fixedPosition, setFixedPosition, currentTrain } = useCurrentTrain();
+ const { allCustomTrainData, allTrainDiagram } = useAllTrainDiagram();
+
+ const getTrainDataFromCurrentTrain = (trainNum: string) => {
+ const customTrainData = customTrainDataDetector(
+ trainNum,
+ allCustomTrainData
+ );
+ switch (customTrainData.type) {
+ case "Normal":
+ case "OneMan":
+ const currentTrainData = currentTrain.filter((a) => a.num == trainNum);
+ if (currentTrainData.length == 0) return customTrainData;
+ else if (currentTrainData[0].Type.includes("rapid:")) {
+ const typeText = currentTrainData[0].Type.split(":");
+ const returnData = {
+ type: "Rapid",
+ trainName: typeText[1].replace("\r", ""),
+ trainIcon: null,
+ trainNumDistance: null,
+ info: "",
+ };
+ return returnData;
+ }
+ return customTrainData;
+ default:
+ return customTrainData;
+ }
+ };
+ const [train, setTrain] = useState<{
+ Index: string;
+ num: string;
+ delay: string;
+ Pos: string;
+ PosNum: string;
+ Direction: number;
+ Type: string;
+ Line: string;
+ }>(null);
+ const [customData, setCustomData] = useState<{
+ ToData: string;
+ TrainNumber: string;
+ id: string;
+ img: string;
+ isWanman: boolean;
+ trainName: string;
+ trainNumDistance: number;
+ type: typeID;
+ viaData: string;
+ info?: string;
+ uwasa?: string;
+ }>(getTrainDataFromCurrentTrain(trainID));
+ useEffect(() => {
+ setCustomData(getTrainDataFromCurrentTrain(trainID));
+ }, [currentTrain, trainID]);
+ useEffect(() => {
+ currentTrain.forEach((d) => {
+ if (d.num == trainID) setTrain(d);
+ });
+ }, [trainID, currentTrain]);
+
+ const [ToData, setToData] = useState("");
+ useEffect(() => {
+ if (customData.ToData && customData.ToData != "") {
+ setToData(customData.ToData);
+ } else {
+ const base = allTrainDiagram[trainID];
+ if (!base) return;
+ const data = base.split("#");
+ setToData(data[data.length - 2].split(",")[0]);
+ }
+ }, [customData, train]);
+ const [stringConfig, setStringConfig] = useState([, ,]);
+ useEffect(() => {
+ const x = getStringConfig(customData.type, customData.TrainNumber);
+ setStringConfig(x);
+ }, [customData]);
+ return (
+ {
+ setFixedPosition({ type: null, value: null });
+ }}
+ >
+
+
+
+
+
+ {stringConfig[0]}
+
+ {ToData}行
+
+
+
+
+ 列車情報追跡中
+ 次は どこですか
+
+
+
+ );
+};
diff --git a/components/Apps/MapsButton.tsx b/components/Apps/MapsButton.tsx
index 66e7501..60cc2ac 100644
--- a/components/Apps/MapsButton.tsx
+++ b/components/Apps/MapsButton.tsx
@@ -37,6 +37,7 @@ export const MapsButton: FC = ({ onPress }) => {
alignSelf: "center",
alignItems: "center",
display: mapSwitch == "true" ? "flex" : "none",
+ zIndex: 1000,
},
text: {
textAlign: "center",
diff --git a/components/Apps/ReloadButton.tsx b/components/Apps/ReloadButton.tsx
index 05655c4..16a5dad 100644
--- a/components/Apps/ReloadButton.tsx
+++ b/components/Apps/ReloadButton.tsx
@@ -38,6 +38,7 @@ export const ReloadButton:FC = ({ onPress, right }) => {
alignSelf: "center",
alignItems: "center",
display: mapSwitch,
+ zIndex: 1000,
},
text: {
textAlign: "center",
diff --git a/components/Menu/StationPagination.tsx b/components/Menu/StationPagination.tsx
index dbbbd2c..8eee662 100644
--- a/components/Menu/StationPagination.tsx
+++ b/components/Menu/StationPagination.tsx
@@ -3,20 +3,7 @@ import { View, Text, TouchableOpacity } from "react-native";
import { useInterval } from "../../lib/useInterval";
import lineColorList from "../../assets/originData/lineColorList";
-
-type StationProps = {
- DispNum: string;
- JrHpUrl: string;
- MyStation: string;
- StationMap: string;
- StationNumber: string | null;
- StationTimeTable: string;
- Station_EN: string;
- Station_JP: string;
- jslodApi: string;
- lat: number;
- lng: number;
-};
+import { StationProps } from "@/stateBox/useStationList";
type StationNumberProps = {
currentStation: StationProps[];
active: boolean;
diff --git a/lib/getStringConfig.ts b/lib/getStringConfig.ts
index 327c533..54f84a9 100644
--- a/lib/getStringConfig.ts
+++ b/lib/getStringConfig.ts
@@ -1,4 +1,4 @@
-type typeID =
+export type typeID =
| "Normal"
| "OneMan"
| "Rapid"
diff --git a/stateBox/useCurrentTrain.js b/stateBox/useCurrentTrain.js
index 3684382..ac1152b 100644
--- a/stateBox/useCurrentTrain.js
+++ b/stateBox/useCurrentTrain.js
@@ -20,7 +20,7 @@ const initialState = {
getCurrentTrain: () => {},
inject: (i) => {},
fixedPosition: null,
- setFixedPosition: () => {},
+ setFixedPosition: (e) => {},
setInjectData: (e) => {},
getCurrentStationData: (e) => {},
getPosition: (e) => {},
diff --git a/stateBox/useStationList.tsx b/stateBox/useStationList.tsx
index 73219b2..c08e7a2 100644
--- a/stateBox/useStationList.tsx
+++ b/stateBox/useStationList.tsx
@@ -10,12 +10,24 @@ import {
getStationList,
lineList_LineWebID,
} from "../lib/getStationList";
-
+export type StationProps = {
+ DispNum: string;
+ JrHpUrl: string;
+ MyStation: string;
+ StationMap: string;
+ StationNumber: string | null;
+ StationTimeTable: string;
+ Station_EN: string;
+ Station_JP: string;
+ jslodApi: string;
+ lat: number;
+ lng: number;
+};
type initialStateType = {
- originalStationList: any[][];
- setOriginalStationList: React.Dispatch>;
- getStationDataFromName: (id: string) => any[];
- getStationDataFromId: (id: string) => any[];
+ originalStationList: StationProps[][];
+ setOriginalStationList: React.Dispatch>;
+ getStationDataFromName: (id: string) => StationProps[];
+ getStationDataFromId: (id: string) => StationProps[];
getStationDataFromNameBase: (name: string) => any[];
stationList: any[];
getInjectJavascriptAddress: (StationNumber: string) => string;