86 lines
2.6 KiB
TypeScript
86 lines
2.6 KiB
TypeScript
import { logger } from "@/utils/logger";
|
|
|
|
export const openBackTrainInfo = (stationInfo, trainData, showNearTrain) => {
|
|
const migrationArray = (stationInfo) => {
|
|
const mainTrainStationPosition = trainData.findIndex(
|
|
(d) => d.split(",")[0] == stationInfo
|
|
);
|
|
|
|
const relationMain = (() => {
|
|
if (mainTrainStationPosition == 0) return "head";
|
|
if (mainTrainStationPosition == trainData.length - 1) return "tail";
|
|
return "middle";
|
|
})();
|
|
|
|
const subTrainStationPosition = showNearTrain.findIndex(
|
|
(d) => d.split(",")[0] == stationInfo
|
|
);
|
|
const relationSub = (() => {
|
|
if (subTrainStationPosition == 0) return "head";
|
|
if (subTrainStationPosition == showNearTrain.length - 1) return "tail";
|
|
return "middle";
|
|
})();
|
|
|
|
if (__DEV__) {
|
|
logger.debug('Relation data:', relationMain, relationSub);
|
|
}
|
|
switch (relationMain) {
|
|
case "head":
|
|
if (relationSub == "head") {
|
|
return;
|
|
} else if (relationSub == "tail") {
|
|
return [...showNearTrain, ...trainData];
|
|
} else if (relationSub == "middle") {
|
|
if (
|
|
showNearTrain[subTrainStationPosition].split(",")[1].includes("着")
|
|
) {
|
|
return [
|
|
...showNearTrain.slice(0, subTrainStationPosition + 1),
|
|
...trainData,
|
|
];
|
|
} else {
|
|
return [
|
|
...showNearTrain.slice(0, subTrainStationPosition),
|
|
...trainData,
|
|
];
|
|
}
|
|
} else return;
|
|
case "tail":
|
|
if (relationSub == "head") {
|
|
return [...trainData, ...showNearTrain];
|
|
} else if (relationSub == "tail") {
|
|
return;
|
|
} else if (relationSub == "middle") {
|
|
if (
|
|
showNearTrain[subTrainStationPosition].split(",")[1].includes("着")
|
|
) {
|
|
return [
|
|
...trainData,
|
|
...showNearTrain.slice(subTrainStationPosition + 1),
|
|
];
|
|
} else {
|
|
return [
|
|
...trainData,
|
|
...showNearTrain.slice(subTrainStationPosition),
|
|
];
|
|
}
|
|
} else return;
|
|
case "middle": //現状使わない
|
|
if (relationSub == "head") {
|
|
return [
|
|
...trainData.slice(0, mainTrainStationPosition),
|
|
...showNearTrain,
|
|
];
|
|
} else if (relationSub == "tail") {
|
|
return [
|
|
...showNearTrain.slice(0, subTrainStationPosition),
|
|
...trainData.slice(mainTrainStationPosition),
|
|
];
|
|
} else return;
|
|
}
|
|
};
|
|
const array = migrationArray(stationInfo);
|
|
if (!array) return null;
|
|
return array;
|
|
};
|