tsへファイル移動
This commit is contained in:
@@ -95,7 +95,7 @@ export function MenuPage() {
|
||||
return unsubscribe;
|
||||
}, [navigation, mapHeight, favoriteStation, setFavoriteStation]);
|
||||
return (
|
||||
<Stack.Navigator>
|
||||
<Stack.Navigator id={null}>
|
||||
<Stack.Screen
|
||||
name="menu"
|
||||
options={{
|
@@ -50,7 +50,7 @@ export const Top = () => {
|
||||
}, [addListener, mapSwitch]);
|
||||
|
||||
return (
|
||||
<Stack.Navigator detachInactiveScreens={false}>
|
||||
<Stack.Navigator id={null} detachInactiveScreens={false}>
|
||||
<Stack.Screen
|
||||
name="Apps"
|
||||
options={{
|
||||
@@ -68,7 +68,7 @@ export const Top = () => {
|
||||
/>
|
||||
<Stack.Screen
|
||||
name="stDiagram"
|
||||
options={{ ...optionData, gestureEnabled: false }}
|
||||
options={{ ...optionData, gestureEnabled: false }}
|
||||
component={StationDiagramView}
|
||||
/>
|
||||
<Stack.Screen name="howto" options={optionData} component={HowTo} />
|
@@ -189,7 +189,6 @@ export const FixedTrain: FC<props> = ({ trainID }) => {
|
||||
searchCount < points.length;
|
||||
searchCount++
|
||||
) {
|
||||
console.log(trainDataWidhThrough[searchCount]);
|
||||
const nextPos = trainDataWidhThrough[searchCount];
|
||||
if (nextPos) {
|
||||
const [station, se, time] = nextPos.split(",");
|
||||
|
@@ -3,20 +3,26 @@ import useInterval from "@/lib/useInterval";
|
||||
import { AS } from "@/storageControl";
|
||||
import React, { createContext, useContext, useEffect, useState } from "react";
|
||||
const initialState = {
|
||||
allTrainDiagram: undefined,
|
||||
setAllTrainDiagram: () => {},
|
||||
allTrainDiagram: {},
|
||||
setAllTrainDiagram: (e) => {},
|
||||
allCustomTrainData: [],
|
||||
keyList: [],
|
||||
};
|
||||
type initialStateType = {
|
||||
allTrainDiagram: { [key: string]: string };
|
||||
setAllTrainDiagram: (e) => void;
|
||||
allCustomTrainData: any[];
|
||||
keyList: string[];
|
||||
};
|
||||
|
||||
const AllTrainDiagramContext = createContext(initialState);
|
||||
const AllTrainDiagramContext = createContext<initialStateType>(initialState);
|
||||
|
||||
export const useAllTrainDiagram = () => useContext(AllTrainDiagramContext);
|
||||
|
||||
export const AllTrainDiagramProvider = ({ children }) => {
|
||||
const [allTrainDiagram, setAllTrainDiagram] = useState(trainList);
|
||||
const [allCustomTrainData, setAllCustomTrainData] = useState([]); // カスタム列車データ
|
||||
const [keyList, setKeyList] = useState(); // 第二要素
|
||||
const [keyList, setKeyList] = useState<string[]>([]); // 第二要素
|
||||
useEffect(() => {
|
||||
if (allTrainDiagram && Object.keys(allTrainDiagram).length > 0)
|
||||
setKeyList(Object.keys(allTrainDiagram));
|
||||
@@ -29,19 +35,19 @@ export const AllTrainDiagramProvider = ({ children }) => {
|
||||
.then((res) => {
|
||||
const data = {};
|
||||
res.forEach((d) => {
|
||||
const keys = Object.keys(d);
|
||||
const keys = Object.keys(d)[0];
|
||||
data[keys] = d[keys];
|
||||
});
|
||||
//dataのkeyで並び替え
|
||||
const sortedData = Object.keys(data)
|
||||
.sort((a, b) => a.replace(/[D,M]/, "") - b.replace(/[D,M]/, ""))
|
||||
.sort((a, b) => parseInt(a.replace(/[D,M]/, "")) - parseInt(b.replace(/[D,M]/, "")))
|
||||
.reduce((acc, key) => {
|
||||
acc[key] = data[key];
|
||||
return acc;
|
||||
}, {});
|
||||
return sortedData;
|
||||
})
|
||||
.then((res) => {
|
||||
.then((res:any) => {
|
||||
setAllTrainDiagram(res);
|
||||
AS.setItem("allTrainDiagram", JSON.stringify(res));
|
||||
})
|
@@ -1,19 +1,6 @@
|
||||
import React, { createContext, useContext, useState, useEffect } from "react";
|
||||
import useInterval from "../lib/useInterval";
|
||||
|
||||
const initialState = {
|
||||
areaInfo: "",
|
||||
setAreainfo: () => {},
|
||||
areaIconBadgeText: "",
|
||||
areaStationID: [],
|
||||
};
|
||||
|
||||
const AreaInfoContext = createContext(initialState);
|
||||
|
||||
export const useAreaInfo = () => {
|
||||
return useContext(AreaInfoContext);
|
||||
};
|
||||
|
||||
const setoStationID = [
|
||||
"Y00",
|
||||
"Y01",
|
||||
@@ -340,6 +327,31 @@ const areaStationPair = {
|
||||
yodo: { id: "G", stationID: yodoStationID },
|
||||
};
|
||||
|
||||
|
||||
|
||||
const initialState = {
|
||||
areaInfo: "",
|
||||
setAreaInfo: () => {},
|
||||
areaIconBadgeText: "",
|
||||
areaStationID: [],
|
||||
isInfo: false,
|
||||
setIsInfo: () => {},
|
||||
};
|
||||
type initialStateType = {
|
||||
areaInfo: string;
|
||||
setAreaInfo: (e: string) => void;
|
||||
areaIconBadgeText: string;
|
||||
areaStationID: string[];
|
||||
isInfo: boolean;
|
||||
setIsInfo: (e: boolean) => void;
|
||||
};
|
||||
|
||||
const AreaInfoContext = createContext<initialStateType>(initialState);
|
||||
|
||||
export const useAreaInfo = () => {
|
||||
return useContext(AreaInfoContext);
|
||||
};
|
||||
|
||||
export const AreaInfoProvider = ({ children }) => {
|
||||
const [areaInfo, setAreaInfo] = useState("");
|
||||
const [areaIconBadgeText, setAreaIconBadgeText] = useState("");
|
@@ -3,11 +3,11 @@ import { AS } from "../storageControl";
|
||||
import { useAllTrainDiagram } from "./useAllTrainDiagram";
|
||||
const initialState = {
|
||||
busAndTrainData: [],
|
||||
setBusAndTrainData: () => {},
|
||||
setBusAndTrainData: (e) => {},
|
||||
trainPairData: [],
|
||||
setTrainPairData: () => {},
|
||||
initializeTrainPairList: () => {},
|
||||
getInfluencedTrainData: () => {},
|
||||
setTrainPairData: (e) => {},
|
||||
initializeTrainPairList: (e) => {},
|
||||
getInfluencedTrainData: (e) => {},
|
||||
};
|
||||
|
||||
const BusAndTrainDataContext = createContext(initialState);
|
||||
@@ -18,8 +18,12 @@ export const useBusAndTrainData = () => {
|
||||
|
||||
export const BusAndTrainDataProvider = ({ children }) => {
|
||||
const { allTrainDiagram } = useAllTrainDiagram();
|
||||
const [busAndTrainData, setBusAndTrainData] = useState([]);
|
||||
const [trainPairData, setTrainPairData] = useState([]);
|
||||
const [busAndTrainData, setBusAndTrainData] = useState<{
|
||||
address: string;
|
||||
name: string;
|
||||
type: "station-data" | "bus-stop" | "train-info";
|
||||
}[]>([]);
|
||||
const [trainPairData, setTrainPairData] = useState<any[]>([]);
|
||||
useEffect(() => {
|
||||
AS.getItem("busAndTrain202403")
|
||||
.then((d) => {
|
||||
@@ -53,7 +57,7 @@ export const BusAndTrainDataProvider = ({ children }) => {
|
||||
});
|
||||
return trainPairList;
|
||||
};
|
||||
const getInfluencedTrainData = (trainNum) => {
|
||||
const getInfluencedTrainData = (trainNum:string) => {
|
||||
const trainPairList = initializeTrainPairList();
|
||||
|
||||
// 9253M ラマル
|
@@ -11,35 +11,56 @@ import useInterval from "../lib/useInterval";
|
||||
import { useStationList } from "./useStationList";
|
||||
import { checkDuplicateTrainData } from "@/lib/checkDuplicateTrainData";
|
||||
import { getStationID } from "@/lib/eachTrainInfoCoreLib/getStationData";
|
||||
import { trainDataType } from "@/lib/trainPositionTextArray";
|
||||
type loading = "loading" | "success" | "error";
|
||||
const initialState = {
|
||||
webview: {},
|
||||
webview: undefined,
|
||||
currentTrain: [],
|
||||
setCurrentTrain: () => {},
|
||||
currentTrainLoading: "loading",
|
||||
setCurrentTrainLoading: () => {},
|
||||
setCurrentTrain: (e) => {},
|
||||
currentTrainLoading: "loading" as loading,
|
||||
setCurrentTrainLoading: (e) => {},
|
||||
getCurrentTrain: () => {},
|
||||
inject: (i) => {},
|
||||
fixedPosition: null,
|
||||
setFixedPosition: (e) => {},
|
||||
setInjectData: (e) => {},
|
||||
getCurrentStationData: (e) => {},
|
||||
getPosition: (e) => {},
|
||||
getCurrentStationData: ((e) => {}) as (e: string) => trainDataType | undefined,
|
||||
getPosition: ((e) => {}) as (e: trainDataType) => string[] | undefined,
|
||||
};
|
||||
|
||||
const CurrentTrainContext = createContext(initialState);
|
||||
type initialStateType = {
|
||||
webview: React.MutableRefObject<any>;
|
||||
currentTrain: trainDataType[];
|
||||
setCurrentTrain: (e: trainDataType[]) => void;
|
||||
currentTrainLoading: loading;
|
||||
setCurrentTrainLoading: (e: loading) => void;
|
||||
getCurrentTrain: () => void;
|
||||
inject: (i: string) => void;
|
||||
fixedPosition: { type: "station" | "train"; value: string } | null;
|
||||
setFixedPosition: (e: { type: "station" | "train"; value: string } | null) => void;
|
||||
setInjectData: (e: { type: "station" | "train"; value: string; fixed: boolean }) => void;
|
||||
getCurrentStationData: (e: string) => trainDataType | undefined;
|
||||
getPosition: (e: trainDataType) => string[] | undefined;
|
||||
};
|
||||
|
||||
const CurrentTrainContext = createContext<initialStateType>(initialState);
|
||||
|
||||
export const useCurrentTrain = () => {
|
||||
return useContext(CurrentTrainContext);
|
||||
};
|
||||
|
||||
export const CurrentTrainProvider = ({ children }) => {
|
||||
const [currentTrain, setCurrentTrain] = useState([]); //現在在線中の全列車 { num: 列車番号, delay: 遅延時分(状態), Pos: 位置情報 }
|
||||
const [currentTrainLoading, setCurrentTrainLoading] = useState("loading"); // success, error, loading
|
||||
const [currentTrain, setCurrentTrain] = useState<trainDataType[]>([]); //現在在線中の全列車 { num: 列車番号, delay: 遅延時分(状態), Pos: 位置情報 }
|
||||
const [currentTrainLoading, setCurrentTrainLoading] =
|
||||
useState<loading>("loading");
|
||||
|
||||
const { getInjectJavascriptAddress, stationList, originalStationList } =
|
||||
useStationList();
|
||||
|
||||
const [fixedPosition, setFixedPosition] = useState({
|
||||
const [fixedPosition, setFixedPosition] = useState<{
|
||||
type: "station" | "train";
|
||||
value: string;
|
||||
}>({
|
||||
type: null,
|
||||
value: null,
|
||||
});
|
||||
@@ -75,7 +96,9 @@ export const CurrentTrainProvider = ({ children }) => {
|
||||
setIntervalState.stop();
|
||||
}
|
||||
}, [fixedPosition]);
|
||||
const getPosition = (currentTrainData) => {
|
||||
|
||||
type getPositionFuncType = (currentTrainData: trainDataType) => string[] | undefined;
|
||||
const getPosition: getPositionFuncType = (currentTrainData) => {
|
||||
//currentTrainData.Pos = "鴨川~端岡"; //test
|
||||
if (!currentTrainData) return;
|
||||
if (!currentTrainData?.Pos) return;
|
||||
@@ -85,7 +108,7 @@ export const CurrentTrainProvider = ({ children }) => {
|
||||
.replace("(徳島線)", "")
|
||||
.replace("(高徳線)", "")
|
||||
.split("~");
|
||||
const direction = parseInt(currentTrainData?.Direction) || 0;
|
||||
const direction = currentTrainData?.Direction || 0;
|
||||
if (pos[0] == "児島" && pos[1] == "宇多津") {
|
||||
return ["M12", "Y09"];
|
||||
} else if (pos[1] == "児島" && pos[0] == "宇多津") {
|
||||
@@ -136,15 +159,25 @@ export const CurrentTrainProvider = ({ children }) => {
|
||||
return [getStationID(currentTrainData?.Pos, stationList)];
|
||||
}
|
||||
};
|
||||
const getCurrentStationData = (e) => {
|
||||
const getCurrentStationData: (e: string) => trainDataType | undefined = (
|
||||
e
|
||||
) => {
|
||||
//e:trainNumber
|
||||
if (!currentTrain.length) return;
|
||||
console.log(currentTrain);
|
||||
return checkDuplicateTrainData(
|
||||
currentTrain.filter((d) => d.num == e),
|
||||
stationList
|
||||
);
|
||||
};
|
||||
const setInjectData = ({ type, value, fixed }) => {
|
||||
|
||||
type injectDataType = {
|
||||
type: "station" | "train";
|
||||
value: string;
|
||||
fixed: boolean;
|
||||
};
|
||||
type injectDataFuncType = (data: injectDataType) => void;
|
||||
const setInjectData: injectDataFuncType = ({ type, value, fixed }) => {
|
||||
if (type === "station") {
|
||||
const script = getInjectJavascriptAddress(value);
|
||||
inject(script);
|
@@ -1,7 +1,7 @@
|
||||
import React, { createContext, useContext, useState, useEffect } from "react";
|
||||
import { useWindowDimensions } from "react-native";
|
||||
import * as ScreenOrientation from "expo-screen-orientation";
|
||||
const initialState = { isLandscape: false, setIsLandscape: () => {} };
|
||||
const initialState = { isLandscape: false, setIsLandscape: (e) => {} };
|
||||
|
||||
const DeviceOrientationChange = createContext(initialState);
|
||||
|
@@ -7,7 +7,7 @@ import React, {
|
||||
FC,
|
||||
} from "react";
|
||||
import { AS } from "../storageControl";
|
||||
import { useStationList } from "./useStationList";
|
||||
import { StationProps, useStationList } from "./useStationList";
|
||||
const initialState = {
|
||||
favoriteStation: [],
|
||||
setFavoriteStation: () => {},
|
||||
@@ -16,8 +16,8 @@ const initialState = {
|
||||
|
||||
type initialStateType = {
|
||||
favoriteStation: any[];
|
||||
setFavoriteStation: (d:any)=>void;
|
||||
lodAddMigration: ()=>void;
|
||||
setFavoriteStation: (d: any) => void;
|
||||
lodAddMigration: () => void;
|
||||
};
|
||||
const FavoriteStationContext = createContext<initialStateType>(initialState);
|
||||
|
||||
@@ -27,8 +27,8 @@ export const useFavoriteStation = () => {
|
||||
type Props = {
|
||||
children: React.ReactNode;
|
||||
};
|
||||
export const FavoriteStationProvider:FC<Props> = ({ children }) => {
|
||||
const [favoriteStation, setFavoriteStation] = useState([]);
|
||||
export const FavoriteStationProvider: FC<Props> = ({ children }) => {
|
||||
const [favoriteStation, setFavoriteStation] = useState<StationProps[][]>([]);
|
||||
const { getStationDataFromName } = useStationList();
|
||||
const lodAddMigration = () => {
|
||||
const migration = favoriteStation.map((d) => {
|
||||
@@ -39,13 +39,13 @@ export const FavoriteStationProvider:FC<Props> = ({ children }) => {
|
||||
useEffect(() => {
|
||||
AS.getItem("favoriteStation")
|
||||
.then((d) => {
|
||||
const returnData = JSON.parse(d);
|
||||
const returnData: StationProps[][] = JSON.parse(d);
|
||||
setFavoriteStation(returnData);
|
||||
})
|
||||
.catch((error) => {
|
||||
// エラーログを記録(開発時のみ)
|
||||
if (__DEV__) {
|
||||
console.warn('お気に入り駅の読み込みに失敗しました:', error);
|
||||
console.warn("お気に入り駅の読み込みに失敗しました:", error);
|
||||
}
|
||||
});
|
||||
}, []);
|
||||
|
@@ -9,29 +9,29 @@ import { useNotification } from "../stateBox/useNotifications";
|
||||
|
||||
const initialState = {
|
||||
selectedLine: undefined,
|
||||
setSelectedLine: () => {},
|
||||
setSelectedLine: (e) => {},
|
||||
mapsStationData: undefined,
|
||||
setMapsStationData: () => {},
|
||||
setMapsStationData: (e) => {},
|
||||
iconSetting: undefined,
|
||||
setIconSetting: () => {},
|
||||
setIconSetting: (e) => {},
|
||||
mapSwitch: undefined,
|
||||
setMapSwitch: () => {},
|
||||
setMapSwitch: (e) => {},
|
||||
stationMenu: undefined,
|
||||
setStationMenu: () => {},
|
||||
setStationMenu: (e) => {},
|
||||
uiSetting: undefined,
|
||||
setUiSetting: () => {},
|
||||
setUiSetting: (e) => {},
|
||||
LoadError: false,
|
||||
setLoadError: () => {},
|
||||
setLoadError: (e) => {},
|
||||
trainInfo: {
|
||||
trainNum: undefined,
|
||||
limited: undefined,
|
||||
trainData: undefined,
|
||||
},
|
||||
setTrainInfo: () => {},
|
||||
setTrainInfo: (e) => {},
|
||||
trainMenu: "true",
|
||||
setTrainMenu: () => {},
|
||||
setTrainMenu: (e) => {},
|
||||
updatePermission : false,
|
||||
setUpdatePermission : () => {},
|
||||
setUpdatePermission : (e) => {},
|
||||
injectJavascript: "",
|
||||
};
|
||||
|
||||
@@ -50,9 +50,9 @@ export const TrainMenuProvider = ({ children }) => {
|
||||
}, []);
|
||||
|
||||
//画面表示関連
|
||||
const [iconSetting, setIconSetting] = useState(undefined);
|
||||
const [mapSwitch, setMapSwitch] = useState(undefined);
|
||||
const [stationMenu, setStationMenu] = useState(undefined);
|
||||
const [iconSetting, setIconSetting] = useState<"true" | "false" | undefined>(undefined);
|
||||
const [mapSwitch, setMapSwitch] = useState<"true" | "false" | undefined>(undefined);
|
||||
const [stationMenu, setStationMenu] = useState<"true" | "false" | undefined>(undefined);
|
||||
const [LoadError, setLoadError] = useState(false);
|
||||
|
||||
//更新権限所有確認
|
Reference in New Issue
Block a user