Merge commit '99ab716cd22ed64e44514c27345e0e51943a0104' into develop

This commit is contained in:
harukin-expo-dev-env 2024-12-26 01:25:47 +00:00
commit 80df2ba040
7 changed files with 104 additions and 44 deletions

View File

@ -22,16 +22,8 @@ export const TrainDataView = ({
navigate,
}) => {
const { originalStationList } = useStationList();
const { stationList } = useStationList();
const stationList =
originalStationList &&
lineList.map((d) =>
originalStationList[d].map((a) => ({
StationNumber: a.StationNumber,
StationName: a.Station_JP,
}))
);
const { width, height } = useWindowDimensions();
const { isLandscape } = useDeviceOrientationChange();
const { inject } = useCurrentTrain();

View File

@ -12,7 +12,7 @@ import {
import { SheetManager } from "react-native-actions-sheet";
import { AS } from "../../storageControl";
import trainList from "../../assets/originData/trainList";
import { lineList, lineListPair } from "../../lib/getStationList";
import { lineListPair } from "../../lib/getStationList";
import { useCurrentTrain } from "../../stateBox/useCurrentTrain";
import { checkDuplicateTrainData } from "../../lib/checkDuplicateTrainData";
import { getTrainType } from "../../lib/getTrainType";
@ -46,7 +46,7 @@ export const EachTrainInfoCore = ({
}) => {
// const [actionSheetHorizonalScroll, setActionSheetHorizonalScroll] = useState(false);
const { currentTrain } = useCurrentTrain();
const { originalStationList } = useStationList();
const { originalStationList, stationList } = useStationList();
const { setTrainInfo } = useTrainMenu();
const [currentTrainData, setCurrentTrainData] = useState();
@ -56,7 +56,8 @@ export const EachTrainInfoCore = ({
if (!currentTrain.length) return;
setCurrentTrainData(
checkDuplicateTrainData(
currentTrain.filter((d) => d.num == data.trainNum)
currentTrain.filter((d) => d.num == data.trainNum),
stationList
)
);
}, [currentTrain, data.trainNum]);
@ -86,15 +87,6 @@ export const EachTrainInfoCore = ({
const [showThrew, setShowThrew] = useState(false);
const [haveThrough, setHaveThrough] = useState(false);
const stationList =
originalStationList &&
lineList.map((d) =>
originalStationList[d].map((a) => ({
StationNumber: a.StationNumber,
StationName: a.Station_JP,
}))
);
// 使用例
const stopStationIDList = trainDataWidhThrough.map((i) => {
const [station, se, time] = i.split(",");

View File

@ -18,7 +18,7 @@ export const AppsWebView = ({ openStationACFromEachTrainInfo }) => {
const { navigate } = useNavigation();
const { favoriteStation } = useFavoriteStation();
const { isLandscape } = useDeviceOrientationChange();
const { originalStationList } = useStationList();
const { originalStationList, stationList } = useStationList();
const {
setSelectedLine,
mapsStationData: stationData,
@ -96,7 +96,8 @@ export const AppsWebView = ({ openStationACFromEachTrainInfo }) => {
trainNum,
limited,
trainData: checkDuplicateTrainData(
currentTrain.filter((a) => a.num == trainNum)
currentTrain.filter((a) => a.num == trainNum),
stationList
),
}); //
if (isLandscape) return;

View File

@ -15,6 +15,7 @@ import { customTrainDataDetector } from "../custom-train-data";
import { TrainPosition } from "./LED_inside_Component/TrainPosition";
import { TrainPositionDataPush } from "./LED_inside_Component/TrainPositionDataPush";
import { TrainPositionDataDelete } from "./LED_inside_Component/TrainPositionDataDelete";
import { useStationList } from "../../stateBox/useStationList";
type Props = {
d: {
@ -41,6 +42,7 @@ export const EachData: FC<Props> = (props) => {
openStationACFromEachTrainInfo,
} = props;
const { currentTrain } = useCurrentTrain();
const { stationList } = useStationList();
const openTrainInfo = (d: {
train: string;
lastStation: string;
@ -94,7 +96,8 @@ export const EachData: FC<Props> = (props) => {
}, [currentTrain, d.train, trainDescriptionSwitch]);
// 土讃線複数存在対策
const currentTrainData = checkDuplicateTrainData(
currentTrain.filter((a) => a.num == d.train)
currentTrain.filter((a) => a.num == d.train),
stationList
);
const trainDelayStatus = `${getTrainDelayStatus(
currentTrainData,

View File

@ -46,15 +46,8 @@ export const TrainPosition: FC<Props> = ({
platformNumber,
}) => {
const { currentTrain } = useCurrentTrain();
const { originalStationList } = useStationList();
const stationList =
originalStationList &&
lineList.map((d) =>
originalStationList[d].map((a) => ({
StationNumber: a.StationNumber,
StationName: a.Station_JP,
}))
);
const { stationList } = useStationList();
useEffect(() => {
fetch(
`https://n8n.haruk.in/webhook/JR-shikoku-PosID?PosNum=${currentTrainData?.PosNum}&Line=${currentTrainData?.Line}`

View File

@ -1,8 +1,71 @@
import { trainDataType } from "./trainPositionTextArray";
import { getStationID } from "./eachTrainInfoCoreLib/getStationData";
import { stationIDPair } from "../lib/getStationList2";
export const checkDuplicateTrainData = (currentTrainArray: trainDataType[]) => {
const notNyujoData = currentTrainArray.filter((d) => d.delay !== "入線");
export const checkDuplicateTrainData = (
currentTrainArray: trainDataType[],
stationList: any[]
) => {
const notSameLineData = checkSameTrain(currentTrainArray, stationList);
const notNyujoData = notSameLineData.filter((d) => d.delay !== "入線");
if (currentTrainArray.length == 1) return currentTrainArray[0];
if (notNyujoData.length == 0) return currentTrainArray[0];
else return notNyujoData[0];
};
// 二つのデータを比較して、正しい路線を反映しているデータだけを返す関数
const checkSameTrain = (
currentTrainArray: trainDataType[],
stationList: any[]
) => {
const trueLineData = currentTrainArray
.map((d) => {
if (d.Pos.match("")) {
const [topST, downST] = d.Pos.replace("(下り)", "")
.replace("(上り)", "")
.split("");
const stopStationList = [topST, downST].map((i) => {
return stationList.map((a) => a.filter((d) => d.StationName == i));
});
const x = stopStationList.map((i, index, array) => {
if (index == array.length - 1) return;
const firstItem = array[index];
const secondItem = array[index + 1];
let betweenStationLine = "";
let baseStationNumberFirst = "";
let baseStationNumberSecond = "";
Object.keys(stationIDPair).forEach((d, index2, array) => {
if (!d) return;
const haveFirst = firstItem[index2];
const haveSecond = secondItem[index2];
if (haveFirst.length && haveSecond.length) {
betweenStationLine = d;
baseStationNumberFirst = haveFirst[0].StationNumber;
baseStationNumberSecond = haveSecond[0].StationNumber;
}
});
return betweenStationLine;
});
return x;
} else {
const ST = d.Pos.replace("(下り)", "").replace("(上り)", "");
const stopStationList = stationList.map((a) =>
a.filter((d) => d.StationName == ST)
);
const string = Object.keys(stationIDPair).map((d, index2, array) => {
if (!d) return;
if (!stopStationList[index2].length) return;
return d;
});
return string;
}
})
.map((x) => x.filter((d) => d != undefined));
const returnData = currentTrainArray.filter((d, index) => {
return d.Line == trueLineData[index][0];
});
return returnData;
};

View File

@ -6,16 +6,19 @@ import React, {
FC,
} from "react";
import { getStationList } from "../lib/getStationList";
import { lineList } from "../lib/getStationList";
type initialStateType = {
originalStationList: any[];
originalStationList: any[][];
setOriginalStationList: React.Dispatch<React.SetStateAction<any[]>>;
getStationData: (id: string) => void;
stationList: any[];
};
const initialState = {
originalStationList: [],
originalStationList: [[]],
setOriginalStationList: () => {},
getStationData: () => {},
stationList: [],
};
const StationListContext = createContext<initialStateType>(initialState);
@ -42,10 +45,23 @@ export const StationListProvider: FC<Props> = ({ children }) => {
});
return returnArray;
};
const [stationList, setStationList] = useState<any[][]>([[]]);
useEffect(()=>{
if(originalStationList.length === 0) return;
const stationList =
originalStationList &&
lineList.map((d) =>
originalStationList[d].map((a) => ({
StationNumber: a.StationNumber,
StationName: a.Station_JP,
}))
);
setStationList(stationList)
},[originalStationList])
return (
<StationListContext.Provider
value={{ originalStationList, setOriginalStationList, getStationData }}
value={{ originalStationList, setOriginalStationList, getStationData, stationList }}
>
{children}
</StationListContext.Provider>