timeFilteringをリファクタリング
This commit is contained in:
@@ -8,7 +8,7 @@ type trainDataProps = {
|
||||
};
|
||||
export const trainTimeFiltering: (x: trainDataProps) => boolean = (props) => {
|
||||
const { d, currentTrain, station } = props;
|
||||
const baseTime = 2;
|
||||
const baseTime = 2; // 何時間以内の列車を表示するか
|
||||
if (currentTrain.filter((t) => t.num == d.train).length == 0) {
|
||||
const date = dayjs();
|
||||
const trainTime = date
|
||||
@@ -23,36 +23,35 @@ export const trainTimeFiltering: (x: trainDataProps) => boolean = (props) => {
|
||||
return false;
|
||||
} else {
|
||||
const Pos = trainPosition(currentTrain.filter((t) => t.num == d.train)[0]);
|
||||
const nextPos = Pos.isBetween ? Pos.Pos.to : Pos.Pos.Pos;
|
||||
const PrePos = Pos.isBetween ? Pos.Pos.from : "";
|
||||
if (station[0].Station_JP == nextPos) {
|
||||
if (d.lastStation != station[0].Station_JP) return true;
|
||||
} else if (station[0].Station_JP == PrePos) {
|
||||
return false;
|
||||
let nextPos = "";
|
||||
let PrePos = "";
|
||||
//
|
||||
if (Pos.isBetween == true) {
|
||||
nextPos = Pos.Pos.to;
|
||||
PrePos = Pos.Pos.from;
|
||||
} else {
|
||||
nextPos = Pos.Pos.Pos;
|
||||
}
|
||||
let [h, m] = d.time.split(":");
|
||||
let delay = isNaN(currentTrain.filter((t) => t.num == d.train)[0].delay)
|
||||
? 0
|
||||
: currentTrain.filter((t) => t.num == d.train)[0].delay;
|
||||
const stationData = station[0].Station_JP;
|
||||
switch (stationData) {
|
||||
case nextPos:
|
||||
if (d.lastStation != stationData) return true;
|
||||
break;
|
||||
case PrePos:
|
||||
return false;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
const [h, m] = d.time.split(":");
|
||||
const delayData = currentTrain.filter((t) => t.num == d.train)[0].delay;
|
||||
let delay = delayData === "入線" ? 0 : delayData;
|
||||
const date = dayjs();
|
||||
let targetHour = parseInt(h);
|
||||
|
||||
// 4時を日付変更線として処理
|
||||
if (targetHour < 4) {
|
||||
targetHour += 24;
|
||||
}
|
||||
|
||||
let currentHour = date.hour();
|
||||
if (currentHour < 4) {
|
||||
currentHour += 24;
|
||||
}
|
||||
|
||||
const db = dayjs()
|
||||
.hour(targetHour)
|
||||
.minute(parseInt(m) + parseInt(delay));
|
||||
const currentTime = dayjs().hour(currentHour);
|
||||
|
||||
return !currentTime.isAfter(db);
|
||||
const IntH = parseInt(h) < 4 ? parseInt(h) + 24 : parseInt(h);
|
||||
const IntM = parseInt(m);
|
||||
const targetDate = date.hour(IntH).minute(IntM + delay);
|
||||
if (date.isAfter(targetDate)) return false;
|
||||
if (targetDate.diff(date) < baseTime * 60 * 60 * 1000) return true;
|
||||
return false;
|
||||
}
|
||||
};
|
||||
type getTimeProps = (
|
||||
|
Reference in New Issue
Block a user