直通系路線にてライン情報が正常に取得できず駅番線表示管理システムに異常をきたしていた事案へのバグ修正

This commit is contained in:
harukin-expo-dev-env 2024-12-26 01:24:39 +00:00
parent ab37bb084e
commit 99ab716cd2
4 changed files with 79 additions and 11 deletions

View File

@ -46,7 +46,7 @@ export const EachTrainInfoCore = ({
}) => {
// const [actionSheetHorizonalScroll, setActionSheetHorizonalScroll] = useState(false);
const { currentTrain } = useCurrentTrain();
const { originalStationList,stationList } = useStationList();
const { originalStationList, stationList } = useStationList();
const { setTrainInfo } = useTrainMenu();
const [currentTrainData, setCurrentTrainData] = useState();
@ -56,7 +56,8 @@ export const EachTrainInfoCore = ({
if (!currentTrain.length) return;
setCurrentTrainData(
checkDuplicateTrainData(
currentTrain.filter((d) => d.num == data.trainNum)
currentTrain.filter((d) => d.num == data.trainNum),
stationList
)
);
}, [currentTrain, data.trainNum]);

View File

@ -18,7 +18,7 @@ export const AppsWebView = ({ openStationACFromEachTrainInfo }) => {
const { navigate } = useNavigation();
const { favoriteStation } = useFavoriteStation();
const { isLandscape } = useDeviceOrientationChange();
const { originalStationList } = useStationList();
const { originalStationList, stationList } = useStationList();
const {
setSelectedLine,
mapsStationData: stationData,
@ -96,7 +96,8 @@ export const AppsWebView = ({ openStationACFromEachTrainInfo }) => {
trainNum,
limited,
trainData: checkDuplicateTrainData(
currentTrain.filter((a) => a.num == trainNum)
currentTrain.filter((a) => a.num == trainNum),
stationList
),
}); //
if (isLandscape) return;

View File

@ -15,6 +15,7 @@ import { customTrainDataDetector } from "../custom-train-data";
import { TrainPosition } from "./LED_inside_Component/TrainPosition";
import { TrainPositionDataPush } from "./LED_inside_Component/TrainPositionDataPush";
import { TrainPositionDataDelete } from "./LED_inside_Component/TrainPositionDataDelete";
import { useStationList } from "../../stateBox/useStationList";
type Props = {
d: {
@ -41,6 +42,7 @@ export const EachData: FC<Props> = (props) => {
openStationACFromEachTrainInfo,
} = props;
const { currentTrain } = useCurrentTrain();
const { stationList } = useStationList();
const openTrainInfo = (d: {
train: string;
lastStation: string;
@ -94,7 +96,8 @@ export const EachData: FC<Props> = (props) => {
}, [currentTrain, d.train, trainDescriptionSwitch]);
// 土讃線複数存在対策
const currentTrainData = checkDuplicateTrainData(
currentTrain.filter((a) => a.num == d.train)
currentTrain.filter((a) => a.num == d.train),
stationList
);
const trainDelayStatus = `${getTrainDelayStatus(
currentTrainData,
@ -105,20 +108,20 @@ export const EachData: FC<Props> = (props) => {
const [platformDescription, setPlatformDescription] = useState<string>();
const [dialog, setDialog] = useState(false);
const [deleteDialog, setDeleteDialog] = useState(false);
const [deleteDialog, setDeleteDialog] = useState(false);
const [posInput, setPosInput] = useState("");
const [descInput, setDescInput] = useState("");
const [stationInput, setStationInput] = useState("");
const [stationNumberInput, setStationNumberInput] = useState("");
return (
<>
<TrainPositionDataDelete
<TrainPositionDataDelete
dialog={deleteDialog}
setDialog={setDeleteDialog}
currentTrainData={currentTrainData}
stationInput={stationInput}
stationNumberInput={stationNumberInput}
/>
/>
<TrainPositionDataPush
dialog={dialog}
setDialog={setDialog}
@ -168,7 +171,7 @@ export const EachData: FC<Props> = (props) => {
setPlatformNumber={setPlatformNumber}
platformDescription={platformDescription}
platformNumber={platformNumber}
key={d.train+"-trainPosition"}
key={d.train + "-trainPosition"}
/>
)}
{trainDescriptionSwitch && !!train.info && (

View File

@ -1,8 +1,71 @@
import { trainDataType } from "./trainPositionTextArray";
import { getStationID } from "./eachTrainInfoCoreLib/getStationData";
import { stationIDPair } from "../lib/getStationList2";
export const checkDuplicateTrainData = (currentTrainArray: trainDataType[]) => {
const notNyujoData = currentTrainArray.filter((d) => d.delay !== "入線");
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;
};