時刻フィルタリングのロジックをdayjsベースに調整
This commit is contained in:
@@ -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;
|
||||||
}
|
|
||||||
});
|
});
|
||||||
};
|
};
|
Reference in New Issue
Block a user