72 lines
2.6 KiB
TypeScript
72 lines
2.6 KiB
TypeScript
import { trainDataType } from "./trainPositionTextArray";
|
||
import { getStationID } from "./eachTrainInfoCoreLib/getStationData";
|
||
import { stationIDPair } from "../lib/getStationList2";
|
||
|
||
export const checkDuplicateTrainData = (
|
||
currentTrainArray: trainDataType[],
|
||
stationList: any[]
|
||
) => {
|
||
const notSameLineData = checkSameTrain(currentTrainArray, stationList);
|
||
const notNyujoData = notSameLineData.filter((d) => d.delay !== "入線");
|
||
if (currentTrainArray.length == 1) return currentTrainArray[0];
|
||
if (notNyujoData.length == 0) return currentTrainArray[0];
|
||
else return notNyujoData[0];
|
||
};
|
||
|
||
// 二つのデータを比較して、正しい路線を反映しているデータだけを返す関数
|
||
const checkSameTrain = (
|
||
currentTrainArray: trainDataType[],
|
||
stationList: any[]
|
||
) => {
|
||
const trueLineData = currentTrainArray
|
||
.map((d) => {
|
||
if (d.Pos.match("~")) {
|
||
const [topST, downST] = d.Pos.replace("(下り)", "")
|
||
.replace("(上り)", "")
|
||
.split("~");
|
||
const stopStationList = [topST, downST].map((i) => {
|
||
return stationList.map((a) => a.filter((d) => d.StationName == i));
|
||
});
|
||
const x = stopStationList.map((i, index, array) => {
|
||
if (index == array.length - 1) return;
|
||
|
||
const firstItem = array[index];
|
||
const secondItem = array[index + 1];
|
||
let betweenStationLine = "";
|
||
let baseStationNumberFirst = "";
|
||
let baseStationNumberSecond = "";
|
||
Object.keys(stationIDPair).forEach((d, index2, array) => {
|
||
if (!d) return;
|
||
const haveFirst = firstItem[index2];
|
||
const haveSecond = secondItem[index2];
|
||
if (haveFirst.length && haveSecond.length) {
|
||
betweenStationLine = d;
|
||
baseStationNumberFirst = haveFirst[0].StationNumber;
|
||
baseStationNumberSecond = haveSecond[0].StationNumber;
|
||
}
|
||
});
|
||
|
||
return betweenStationLine;
|
||
});
|
||
return x;
|
||
} else {
|
||
const ST = d.Pos.replace("(下り)", "").replace("(上り)", "");
|
||
const stopStationList = stationList.map((a) =>
|
||
a.filter((d) => d.StationName == ST)
|
||
);
|
||
|
||
const string = Object.keys(stationIDPair).map((d, index2, array) => {
|
||
if (!d) return;
|
||
if (!stopStationList[index2].length) return;
|
||
return d;
|
||
});
|
||
return string;
|
||
}
|
||
})
|
||
.map((x) => x.filter((d) => d != undefined));
|
||
const returnData = currentTrainArray.filter((d, index) => {
|
||
return d.Line == trueLineData[index][0];
|
||
});
|
||
return returnData;
|
||
};
|