diff --git a/components/Apps/FixedPositionBox/FixedStationBox.tsx b/components/Apps/FixedPositionBox/FixedStationBox.tsx index e409ca3..9a02703 100644 --- a/components/Apps/FixedPositionBox/FixedStationBox.tsx +++ b/components/Apps/FixedPositionBox/FixedStationBox.tsx @@ -3,6 +3,7 @@ import { customTrainDataDetector } from "@/components/custom-train-data"; import { StationNumberMaker } from "@/components/駅名表/StationNumberMaker"; import { checkDuplicateTrainData } from "@/lib/checkDuplicateTrainData"; import { CustomTrainData, trainTypeID } from "@/lib/CommonTypes"; +import { getCurrentTrainData } from "@/lib/getCurrentTrainData"; import { getTrainDelayStatus } from "@/lib/getTrainDelayStatus"; import { getTrainType } from "@/lib/getTrainType"; import { objectIsEmpty } from "@/lib/objectIsEmpty"; @@ -301,35 +302,9 @@ const FixedStationBoxEachTrain = ({ d, station }) => { currentTrainData, station.Station_JP )}`; - const getTrainDataFromCurrentTrain = (trainNum: string) => { - const customTrainData = customTrainDataDetector( - d.train, - 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" as trainTypeID, - trainName: typeText[1].replace("\r", ""), - trainIcon: null, - trainNumDistance: null, - info: "", - }; - return returnData; - } - return customTrainData; - default: - return customTrainData; - } - }; - const [train, setTrain] = useState(getTrainDataFromCurrentTrain(d.train)); + const [train, setTrain] = useState(getCurrentTrainData(d.train,currentTrain,allCustomTrainData)); useEffect(() => { - setTrain(getTrainDataFromCurrentTrain(d.train)); + setTrain(getCurrentTrainData(d.train,currentTrain,allCustomTrainData)); }, [currentTrain, d.train]); const { name, color } = getTrainType({ type: train.type, whiteMode: true }); return ( diff --git a/components/Apps/FixedPositionBox/FixedTrainBox.tsx b/components/Apps/FixedPositionBox/FixedTrainBox.tsx index 9c1eb92..0538c2a 100644 --- a/components/Apps/FixedPositionBox/FixedTrainBox.tsx +++ b/components/Apps/FixedPositionBox/FixedTrainBox.tsx @@ -11,7 +11,8 @@ import { trainPosition } from "@/lib/trainPositionTextArray"; import { StationNumberMaker } from "../../駅名表/StationNumberMaker"; import { lineListPair, stationIDPair } from "@/lib/getStationList"; import { findReversalPoints } from "@/lib/eachTrainInfoCoreLib/findReversalPoints"; -import { trainTypeID } from "@/lib/CommonTypes"; +import { CustomTrainData, trainTypeID } from "@/lib/CommonTypes"; +import { getCurrentTrainData } from "@/lib/getCurrentTrainData"; type props = { trainID: string; @@ -27,32 +28,6 @@ export const FixedTrain: FC = ({ trainID }) => { } = 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<{ Pos?: string; Direction?: number; @@ -63,21 +38,9 @@ export const FixedTrain: FC = ({ trainID }) => { delay?: string | number; num?: string; }>(null); - const [customData, setCustomData] = useState<{ - ToData: string; - TrainNumber: string; - id: string; - img: string; - isWanman: boolean; - trainName: string; - trainNumDistance: number; - type: trainTypeID; - viaData: string; - info?: string; - uwasa?: string; - }>(getTrainDataFromCurrentTrain(trainID)); + const [customData, setCustomData] = useState(getCurrentTrainData(trainID, currentTrain, allCustomTrainData)); useEffect(() => { - setCustomData(getTrainDataFromCurrentTrain(trainID)); + setCustomData(getCurrentTrainData(trainID, currentTrain, allCustomTrainData)); }, [currentTrain, trainID]); useEffect(() => { const stationData = getCurrentStationData(trainID); diff --git a/components/発車時刻表/EachData.tsx b/components/発車時刻表/EachData.tsx index 985ec6e..916f9f3 100644 --- a/components/発車時刻表/EachData.tsx +++ b/components/発車時刻表/EachData.tsx @@ -19,6 +19,7 @@ import useInterval from "@/lib/useInterval"; import dayjs from "dayjs"; import { useAllTrainDiagram } from "@/stateBox/useAllTrainDiagram"; import { CustomTrainData, trainTypeID } from "@/lib/CommonTypes"; +import { getCurrentTrainData } from "@/lib/getCurrentTrainData"; type Props = { d: { @@ -76,35 +77,9 @@ export const EachData: FC = (props) => { }); }; - const getTrainDataFromCurrentTrain:(t:string)=>CustomTrainData = (trainNum: string) => { - const customTrainData = customTrainDataDetector( - d.train, - 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" as trainTypeID, - trainName: typeText[1].replace("\r", ""), - trainIcon: null, - trainNumDistance: null, - info: "", - }; - return returnData; - } - return customTrainData; - default: - return customTrainData; - } - }; - const [train, setTrain] = useState(getTrainDataFromCurrentTrain(d.train)); + const [train, setTrain] = useState(getCurrentTrainData(d.train,currentTrain,allCustomTrainData)); useEffect(() => { - setTrain(getTrainDataFromCurrentTrain(d.train)); + setTrain(getCurrentTrainData(d.train,currentTrain,allCustomTrainData)); }, [currentTrain, d.train, trainDescriptionSwitch]); // 土讃線複数存在対策 const currentTrainData = checkDuplicateTrainData( diff --git a/lib/getCurrentTrainData.ts b/lib/getCurrentTrainData.ts new file mode 100644 index 0000000..35ba0c1 --- /dev/null +++ b/lib/getCurrentTrainData.ts @@ -0,0 +1,31 @@ +import { customTrainDataDetector } from "@/components/custom-train-data"; +import { CustomTrainData, trainTypeID } from "./CommonTypes"; +import { trainDataType } from "./trainPositionTextArray"; + +export const getCurrentTrainData = ( + trainNum: string, + currentTrain: trainDataType[], + allCustomTrainData: CustomTrainData[] | undefined +) => { + 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" as trainTypeID, + trainName: typeText[1].replace("\r", ""), + trainIcon: null, + trainNumDistance: null, + info: "", + }; + return returnData; + } + return customTrainData; + default: + return customTrainData; + } +};