時刻フィルタリングのロジックをdayjsベースに調整

This commit is contained in:
harukin-expo-dev-env
2025-09-13 12:04:13 +00:00
parent 50b2cbb21c
commit 19103d9796

View File

@@ -55,7 +55,10 @@ export const trainTimeFiltering: (x: trainDataProps) => boolean = (props) => {
return !currentTime.isAfter(db); return !currentTime.isAfter(db);
} }
}; };
type getTimeProps = (stationDiagram: { [key: string]: string }, station: StationProps) => eachTrainDiagramType[]; type getTimeProps = (
stationDiagram: { [key: string]: string },
station: StationProps
) => eachTrainDiagramType[];
export const getTime: getTimeProps = (stationDiagram, station) => { export const getTime: getTimeProps = (stationDiagram, station) => {
const returnData = Object.keys(stationDiagram) const returnData = Object.keys(stationDiagram)
.map((trainNum) => { .map((trainNum) => {
@@ -66,24 +69,19 @@ export const getTime: getTimeProps = (stationDiagram, station) => {
train: trainNum, train: trainNum,
}; };
stationDiagram[trainNum].split("#").forEach((data) => { stationDiagram[trainNum].split("#").forEach((data) => {
if (data.match("")) { const [stationName, type, time] = data.split(",");
trainData.lastStation = data.split(",着,")[0]; if (!type) return;
if (type.match("着")) {
trainData.lastStation = stationName;
} }
if (data.match("着編")) { if (stationName === station.Station_JP) {
trainData.lastStation = data.split(",着編,")[0]; if (type.match("")) {
} trainData.time = time;
if (data.split(",")[0] === station.Station_JP) { } else if (type.match("")) {
if (data.match(",発,")) { trainData.time = time;
trainData.time = data.split(",発,")[1];
} else if (data.match(",発編,")) {
trainData.time = data.split(",発編,")[1];
} else if (data.match(",通編,")) {
trainData.time = data.split(",通編,")[1];
trainData.isThrough = true; trainData.isThrough = true;
} else if (data.match(",着,")) { } else if (type.match("")) {
trainData.time = data.split(",着,")[1]; trainData.time = time;
} else if (data.match(",着編,")) {
trainData.time = data.split(",着編,")[1];
} }
} }
}); });
@@ -96,17 +94,13 @@ export const getTime: getTimeProps = (stationDiagram, station) => {
}) })
.filter((d) => d.time); .filter((d) => d.time);
return returnData.sort((a, b) => { return returnData.sort((a, b) => {
switch (true) { const [aH, aM] = a.time.split(":");
case parseInt(a.time.split(":")[0]) < parseInt(b.time.split(":")[0]): const [bH, bM] = b.time.split(":");
return -1; const baseTime = dayjs();
case parseInt(a.time.split(":")[0]) > parseInt(b.time.split(":")[0]): const aTime = baseTime.hour(parseInt(aH)).minute(parseInt(aM));
return 1; const bTime = baseTime.hour(parseInt(bH)).minute(parseInt(bM));
case parseInt(a.time.split(":")[1]) < parseInt(b.time.split(":")[1]): if (aTime.isBefore(bTime)) return -1;
return -1; if (aTime.isAfter(bTime)) return 1;
case parseInt(a.time.split(":")[1]) > parseInt(b.time.split(":")[1]):
return 1;
default:
return 0; return 0;
}
}); });
}; };