diff --git a/components/ActionSheetComponents/EachTrainInfoCore.js b/components/ActionSheetComponents/EachTrainInfoCore.js
index 3317c65..cade5b9 100644
--- a/components/ActionSheetComponents/EachTrainInfoCore.js
+++ b/components/ActionSheetComponents/EachTrainInfoCore.js
@@ -71,10 +71,10 @@ export const EachTrainInfoCore = ({
}, []);
//bconst insets = useSafeAreaInsets();
- const [headStation, setHeadStation] = useState();
- const [tailStation, setTailStation] = useState();
- const [isConcatNear, setIsConcatNear] = useState(false);
- const [showNearTrain, setShowNearTrain] = useState([]);
+ const [headStation, setHeadStation] = useState([]);
+ const [tailStation, setTailStation] = useState([]);
+ const [showHeadStation, setShowHeadStation] = useState([]);
+ const [showTailStation, setShowTailStation] = useState([]);
const [nearTrainIDList, setNearTrainIDList] = useState([]);
const { getInfluencedTrainData } = useBusAndTrainData();
const [trainPositionSwitch, setTrainPositionSwitch] = useState("false");
@@ -120,9 +120,8 @@ export const EachTrainInfoCore = ({
useEffect(() => {
if (!data.trainNum) return;
const TD = trainList[data.trainNum];
- setIsConcatNear(false);
- setHeadStation();
- setTailStation();
+ setHeadStation([]);
+ setTailStation([]);
if (!TD) {
const specialTrainActualID = searchSpecialTrain(data.trainNum, trainList);
setTrueTrainID(specialTrainActualID || undefined);
@@ -134,27 +133,38 @@ export const EachTrainInfoCore = ({
//裏列車探索
useEffect(() => {
if (!data.trainNum) return;
- const [returnArray, TDArray] = getInfluencedTrainData(data.trainNum);
+ const NearTrainList = getInfluencedTrainData(data.trainNum);
+ if (NearTrainList.length == 0) return;
+ const returnArray = NearTrainList.map((d) => d.id);
+ const TDArray = NearTrainList.map((d) => d.TrainData);
setNearTrainIDList(returnArray);
- setShowNearTrain(TDArray);
if (trainData.length == 0) return;
if (TDArray.length == 0) return;
- let head;
- let tail;
- TDArray.forEach((d) => {
- const [station, se, time] = d.split(",");
-
- if (station == trainData[0].split(",")[0]) {
- head = trainData[0].split(",")[0];
- }
- if (station == trainData[trainData.length - 1].split(",")[0]) {
- tail = trainData[trainData.length - 1].split(",")[0];
- }
- });
+ let head = [];
+ let tail = [];
+ TDArray.forEach((data, i) =>
+ data.forEach((d) => {
+ const [station, se, time] = d.split(",");
+ if (station == trainData[0].split(",")[0]) {
+ head.push({
+ station: trainData[0].split(",")[0],
+ dia: data,
+ id: nearTrainIDList[i],
+ });
+ }
+ if (station == trainData[trainData.length - 1].split(",")[0]) {
+ tail.push({
+ station: trainData[trainData.length - 1].split(",")[0],
+ dia: data,
+ id: nearTrainIDList[i],
+ });
+ }
+ })
+ );
if (head) setHeadStation(head);
- else setHeadStation();
+ else setHeadStation([]);
if (tail) setTailStation(tail);
- else setTailStation();
+ else setTailStation([]);
}, [trainData, data]);
useEffect(() => {
@@ -256,8 +266,9 @@ export const EachTrainInfoCore = ({
+ {showHeadStation.map((d) => `${headStation[d].id} + `)}
{data.trainNum}
- {isConcatNear ? ` + ${nearTrainIDList}` : ""}
+ {showTailStation.map((d) => ` + ${tailStation[d].id}`)}
{data.limited != undefined &&
@@ -331,33 +342,36 @@ export const EachTrainInfoCore = ({
}
>
- {headStation && !isConcatNear && (
- {
- const array = openBackTrainInfo(
- headStation,
- trainData,
- showNearTrain
- );
- if (!array) return;
- setTrainData(array);
- setIsConcatNear(true);
- }}
- style={{
- padding: 10,
- flexDirection: "row",
- borderColor: "blue",
- borderWidth: 1,
- margin: 10,
- borderRadius: 5,
- alignItems: "center",
- }}
- >
-
- 「本当の始発駅」を表示
-
-
- )}
+ {headStation.length != 0 &&
+ headStation.map((i, index) =>
+ showHeadStation.findIndex((d) => d == index) == -1 ? (
+ {
+ const array = openBackTrainInfo(i.station, trainData, i.dia);
+ if (!array) return;
+ setTrainData(array);
+ setShowHeadStation([...showHeadStation, index]);
+ }}
+ style={{
+ padding: 10,
+ flexDirection: "row",
+ borderColor: "blue",
+ borderWidth: 1,
+ margin: 10,
+ borderRadius: 5,
+ alignItems: "center",
+ }}
+ >
+
+ 「本当の始発駅」を表示
+
+
+ ) : (
+ <>>
+ )
+ )}
{/*
)
)}
- {tailStation && !isConcatNear && (
- {
- const array = openBackTrainInfo(
- tailStation,
- trainData,
- showNearTrain
- );
+ {tailStation.length != 0 &&
+ tailStation.map((i, index) =>
+ showTailStation.findIndex((d) => d == index) == -1 ? (
+ {
+ const array = openBackTrainInfo(i.station, trainData, i.dia);
- if (!array) return;
- setTrainData(array);
- setIsConcatNear(true);
- }}
- style={{
- padding: 10,
- flexDirection: "row",
- borderColor: "blue",
- borderWidth: 1,
- margin: 10,
- borderRadius: 5,
- alignItems: "center",
- }}
- >
-
- 「本当の終着駅」を表示
-
-
- )}
+ if (!array) return;
+ setTrainData(array);
+
+ setShowTailStation([...showTailStation, index]);
+ }}
+ style={{
+ padding: 10,
+ flexDirection: "row",
+ borderColor: "blue",
+ borderWidth: 1,
+ margin: 10,
+ borderRadius: 5,
+ alignItems: "center",
+ }}
+ >
+
+ 「本当の終着駅」を表示
+
+
+ ) : (
+ <>>
+ )
+ )}
{
switch(num){
@@ -535,7 +565,7 @@ const getJRF = num =>{
const data = getJRF(列番データ);
行き先情報.innerText = data != null ? data+行き先情報.innerText : 行き先情報.innerText;
-` + JRF_icon;
+`;
const TKT_name = `
//安芸行と併結列車を個別に表示、それ以外をdefaultで下りなら既定の行き先を、上りなら奈半利行を設定
@@ -548,9 +578,10 @@ const data = getJRF(列番データ);
return "ごめん・なはり線直通\\n快速 安芸行";
case "5874D":
case "5882D":
+ case "5878D":
return "ごめん・なはり線直通\\n各停 安芸行";
- case "742D":
- case "746D":
+ case "246D":
+ case "750D":
return "土佐山田/奈半利行\\n(後免にて解結)\\nごめん・なはり線快速";
default:
if(new RegExp(/^58[1-3][1,3,5,7,9][DM]$/).test(列番データ)){
diff --git a/stateBox/useBusAndTrainData.js b/stateBox/useBusAndTrainData.js
index c1b6d8d..8a5cc58 100644
--- a/stateBox/useBusAndTrainData.js
+++ b/stateBox/useBusAndTrainData.js
@@ -63,11 +63,51 @@ export const BusAndTrainDataProvider = ({ children }) => {
const getInfluencedTrainData = (trainNum) => {
const trainPairList = initializeTrainPairList();
+ // 9253M ラマル
+ // 9256M ラマル
+
+ // 4125m-545M
+ //143M-147M
+ // 1261M-4261M
+ // 3621DWANMAN
+ //8091D-IYO-OZU
+ //8093D-IYO-YAWA
+ //8092D-IYO-FUTAMI
+ //8094-IYO-DOGO
+
const returnArray = [];
if (!trainNum) return;
if (trainPairList[trainNum]) {
returnArray.push(Object.keys(trainPairList[trainNum])[0]);
}
+ switch (trainNum) {
+ case "4125M":
+ returnArray.push("545M");
+ break;
+ case "545M":
+ returnArray.push("4125M");
+ break;
+ case "143M":
+ returnArray.push("147M");
+ break;
+ case "147M":
+ returnArray.push("143M");
+ break;
+ case "1261M":
+ returnArray.push("4261M");
+ break;
+ case "4261M":
+ returnArray.push("1261M");
+ break;
+ case new RegExp(/^4[1-9]\d\d[DM]$/).test(trainNum):
+ if (trainList["5" + trainNum.substring(1)])
+ returnArray.push("5" + trainNum.substring(1));
+ break;
+ case new RegExp(/^5[1-7]\d\d[DM]$/).test(trainNum):
+ if (trainList["4" + trainNum.substring(1)])
+ returnArray.push("4" + trainNum.substring(1));
+ break;
+ }
if (
// 列番が4xxDまたは5xxDの場合はxxDの列番を検索
new RegExp(/^4[1-9]\d\d[DM]$/).test(trainNum) ||
@@ -82,11 +122,14 @@ export const BusAndTrainDataProvider = ({ children }) => {
if (trainList["4" + trainNum]) returnArray.push("4" + trainNum);
if (trainList["5" + trainNum]) returnArray.push("5" + trainNum);
}
- if (!returnArray[0]) return [[], []];
- const TD = trainList[returnArray[0]];
- if (!TD) return [[], []];
- const TDArray = TD.split("#").filter((d) => d != "");
- return [returnArray, TDArray];
+
+ if (!returnArray.length) return [];
+ const TDArray = returnArray.map((d) => {
+ const TD = trainList[d];
+ if (!TD) return;
+ return { id: d, TrainData: TD.split("#").filter((d) => d != "") };
+ });
+ return TDArray;
};
return (