直通系路線にてライン情報が正常に取得できず駅番線表示管理システムに異常をきたしていた事案へのバグ修正
This commit is contained in:
parent
ab37bb084e
commit
99ab716cd2
@ -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]);
|
||||
|
@ -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;
|
||||
|
@ -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 && (
|
||||
|
@ -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;
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user