時刻フィルタリングのロジックを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,35 +55,33 @@ export const trainTimeFiltering: (x: trainDataProps) => boolean = (props) => {
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) => {
const returnData = Object.keys(stationDiagram)
.map((trainNum) => {
let trainData: eachTrainDiagramType = {
time: "",
lastStation: "",
isThrough: false,
train: trainNum,
};
time: "",
lastStation: "",
isThrough: false,
train: trainNum,
};
stationDiagram[trainNum].split("#").forEach((data) => {
if (data.match("")) {
trainData.lastStation = data.split(",着,")[0];
const [stationName, type, time] = data.split(",");
if (!type) return;
if (type.match("着")) {
trainData.lastStation = stationName;
}
if (data.match("着編")) {
trainData.lastStation = data.split(",着編,")[0];
}
if (data.split(",")[0] === station.Station_JP) {
if (data.match(",発,")) {
trainData.time = data.split(",発,")[1];
} else if (data.match(",発編,")) {
trainData.time = data.split(",発編,")[1];
} else if (data.match(",通編,")) {
trainData.time = data.split(",通編,")[1];
if (stationName === station.Station_JP) {
if (type.match("")) {
trainData.time = time;
} else if (type.match("")) {
trainData.time = time;
trainData.isThrough = true;
} else if (data.match(",着,")) {
trainData.time = data.split(",着,")[1];
} else if (data.match(",着編,")) {
trainData.time = data.split(",着編,")[1];
} else if (type.match("")) {
trainData.time = time;
}
}
});
@@ -96,17 +94,13 @@ export const getTime: getTimeProps = (stationDiagram, station) => {
})
.filter((d) => d.time);
return returnData.sort((a, b) => {
switch (true) {
case parseInt(a.time.split(":")[0]) < parseInt(b.time.split(":")[0]):
return -1;
case parseInt(a.time.split(":")[0]) > parseInt(b.time.split(":")[0]):
return 1;
case parseInt(a.time.split(":")[1]) < parseInt(b.time.split(":")[1]):
return -1;
case parseInt(a.time.split(":")[1]) > parseInt(b.time.split(":")[1]):
return 1;
default:
return 0;
}
const [aH, aM] = a.time.split(":");
const [bH, bM] = b.time.split(":");
const baseTime = dayjs();
const aTime = baseTime.hour(parseInt(aH)).minute(parseInt(aM));
const bTime = baseTime.hour(parseInt(bH)).minute(parseInt(bM));
if (aTime.isBefore(bTime)) return -1;
if (aTime.isAfter(bTime)) return 1;
return 0;
});
};
};