36 lines
1.1 KiB
TypeScript
36 lines
1.1 KiB
TypeScript
import { useState, useEffect } from 'react';
|
|
import { useAllTrainDiagram } from '@/stateBox/useAllTrainDiagram';
|
|
import { searchSpecialTrain } from '@/lib/eachTrainInfoCoreLib/searchSpecialTrain';
|
|
|
|
export const useTrainDiagramData = (trainNum) => {
|
|
const { allTrainDiagram: trainList } = useAllTrainDiagram();
|
|
const [trainData, setTrainData] = useState([]);
|
|
const [trueTrainID, setTrueTrainID] = useState([]);
|
|
const [isManuallyExtended, setIsManuallyExtended] = useState(false);
|
|
|
|
useEffect(() => {
|
|
if (!trainNum) return;
|
|
|
|
// 手動で拡張されている場合は上書きしない
|
|
if (isManuallyExtended) return;
|
|
|
|
const TD = trainList[trainNum];
|
|
|
|
if (!TD) {
|
|
const specialTrainActualIDs = searchSpecialTrain(trainNum, trainList);
|
|
setTrueTrainID(specialTrainActualIDs || []);
|
|
setTrainData([]);
|
|
return;
|
|
}
|
|
|
|
setTrainData(TD.split('#').filter((d) => d !== ''));
|
|
}, [trainNum, trainList, isManuallyExtended]);
|
|
|
|
const setTrainDataExtended = (data) => {
|
|
setTrainData(data);
|
|
setIsManuallyExtended(true);
|
|
};
|
|
|
|
return { trainData, setTrainData: setTrainDataExtended, trueTrainID };
|
|
};
|