中央時三段活用可能に変更、ダイヤ情報の部分更新
This commit is contained in:
parent
a769ccb951
commit
d1ee693557
@ -71,10 +71,10 @@ export const EachTrainInfoCore = ({
|
|||||||
}, []);
|
}, []);
|
||||||
//bconst insets = useSafeAreaInsets();
|
//bconst insets = useSafeAreaInsets();
|
||||||
|
|
||||||
const [headStation, setHeadStation] = useState();
|
const [headStation, setHeadStation] = useState([]);
|
||||||
const [tailStation, setTailStation] = useState();
|
const [tailStation, setTailStation] = useState([]);
|
||||||
const [isConcatNear, setIsConcatNear] = useState(false);
|
const [showHeadStation, setShowHeadStation] = useState([]);
|
||||||
const [showNearTrain, setShowNearTrain] = useState([]);
|
const [showTailStation, setShowTailStation] = useState([]);
|
||||||
const [nearTrainIDList, setNearTrainIDList] = useState([]);
|
const [nearTrainIDList, setNearTrainIDList] = useState([]);
|
||||||
const { getInfluencedTrainData } = useBusAndTrainData();
|
const { getInfluencedTrainData } = useBusAndTrainData();
|
||||||
const [trainPositionSwitch, setTrainPositionSwitch] = useState("false");
|
const [trainPositionSwitch, setTrainPositionSwitch] = useState("false");
|
||||||
@ -120,9 +120,8 @@ export const EachTrainInfoCore = ({
|
|||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!data.trainNum) return;
|
if (!data.trainNum) return;
|
||||||
const TD = trainList[data.trainNum];
|
const TD = trainList[data.trainNum];
|
||||||
setIsConcatNear(false);
|
setHeadStation([]);
|
||||||
setHeadStation();
|
setTailStation([]);
|
||||||
setTailStation();
|
|
||||||
if (!TD) {
|
if (!TD) {
|
||||||
const specialTrainActualID = searchSpecialTrain(data.trainNum, trainList);
|
const specialTrainActualID = searchSpecialTrain(data.trainNum, trainList);
|
||||||
setTrueTrainID(specialTrainActualID || undefined);
|
setTrueTrainID(specialTrainActualID || undefined);
|
||||||
@ -134,27 +133,38 @@ export const EachTrainInfoCore = ({
|
|||||||
//裏列車探索
|
//裏列車探索
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!data.trainNum) return;
|
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);
|
setNearTrainIDList(returnArray);
|
||||||
setShowNearTrain(TDArray);
|
|
||||||
if (trainData.length == 0) return;
|
if (trainData.length == 0) return;
|
||||||
if (TDArray.length == 0) return;
|
if (TDArray.length == 0) return;
|
||||||
let head;
|
let head = [];
|
||||||
let tail;
|
let tail = [];
|
||||||
TDArray.forEach((d) => {
|
TDArray.forEach((data, i) =>
|
||||||
const [station, se, time] = d.split(",");
|
data.forEach((d) => {
|
||||||
|
const [station, se, time] = d.split(",");
|
||||||
if (station == trainData[0].split(",")[0]) {
|
if (station == trainData[0].split(",")[0]) {
|
||||||
head = trainData[0].split(",")[0];
|
head.push({
|
||||||
}
|
station: trainData[0].split(",")[0],
|
||||||
if (station == trainData[trainData.length - 1].split(",")[0]) {
|
dia: data,
|
||||||
tail = trainData[trainData.length - 1].split(",")[0];
|
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);
|
if (head) setHeadStation(head);
|
||||||
else setHeadStation();
|
else setHeadStation([]);
|
||||||
if (tail) setTailStation(tail);
|
if (tail) setTailStation(tail);
|
||||||
else setTailStation();
|
else setTailStation([]);
|
||||||
}, [trainData, data]);
|
}, [trainData, data]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@ -256,8 +266,9 @@ export const EachTrainInfoCore = ({
|
|||||||
</Text>
|
</Text>
|
||||||
<View style={{ flex: 1 }} />
|
<View style={{ flex: 1 }} />
|
||||||
<Text style={{ fontSize: 20, fontWeight: "bold", color: "white" }}>
|
<Text style={{ fontSize: 20, fontWeight: "bold", color: "white" }}>
|
||||||
|
{showHeadStation.map((d) => `${headStation[d].id} + `)}
|
||||||
{data.trainNum}
|
{data.trainNum}
|
||||||
{isConcatNear ? ` + ${nearTrainIDList}` : ""}
|
{showTailStation.map((d) => ` + ${tailStation[d].id}`)}
|
||||||
</Text>
|
</Text>
|
||||||
|
|
||||||
{data.limited != undefined &&
|
{data.limited != undefined &&
|
||||||
@ -331,33 +342,36 @@ export const EachTrainInfoCore = ({
|
|||||||
<ScrollStickyContent currentTrainData={currentTrainData} />
|
<ScrollStickyContent currentTrainData={currentTrainData} />
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
{headStation && !isConcatNear && (
|
{headStation.length != 0 &&
|
||||||
<TouchableOpacity
|
headStation.map((i, index) =>
|
||||||
onPress={() => {
|
showHeadStation.findIndex((d) => d == index) == -1 ? (
|
||||||
const array = openBackTrainInfo(
|
<TouchableOpacity
|
||||||
headStation,
|
onPress={() => {
|
||||||
trainData,
|
const array = openBackTrainInfo(i.station, trainData, i.dia);
|
||||||
showNearTrain
|
if (!array) return;
|
||||||
);
|
setTrainData(array);
|
||||||
if (!array) return;
|
setShowHeadStation([...showHeadStation, index]);
|
||||||
setTrainData(array);
|
}}
|
||||||
setIsConcatNear(true);
|
style={{
|
||||||
}}
|
padding: 10,
|
||||||
style={{
|
flexDirection: "row",
|
||||||
padding: 10,
|
borderColor: "blue",
|
||||||
flexDirection: "row",
|
borderWidth: 1,
|
||||||
borderColor: "blue",
|
margin: 10,
|
||||||
borderWidth: 1,
|
borderRadius: 5,
|
||||||
margin: 10,
|
alignItems: "center",
|
||||||
borderRadius: 5,
|
}}
|
||||||
alignItems: "center",
|
>
|
||||||
}}
|
<Text
|
||||||
>
|
style={{ fontSize: 18, fontWeight: "bold", color: "black" }}
|
||||||
<Text style={{ fontSize: 18, fontWeight: "bold", color: "black" }}>
|
>
|
||||||
「本当の始発駅」を表示
|
「本当の始発駅」を表示
|
||||||
</Text>
|
</Text>
|
||||||
</TouchableOpacity>
|
</TouchableOpacity>
|
||||||
)}
|
) : (
|
||||||
|
<></>
|
||||||
|
)
|
||||||
|
)}
|
||||||
{/* <LottieView
|
{/* <LottieView
|
||||||
autoPlay
|
autoPlay
|
||||||
loop
|
loop
|
||||||
@ -397,34 +411,38 @@ export const EachTrainInfoCore = ({
|
|||||||
/>
|
/>
|
||||||
)
|
)
|
||||||
)}
|
)}
|
||||||
{tailStation && !isConcatNear && (
|
{tailStation.length != 0 &&
|
||||||
<TouchableOpacity
|
tailStation.map((i, index) =>
|
||||||
onPress={() => {
|
showTailStation.findIndex((d) => d == index) == -1 ? (
|
||||||
const array = openBackTrainInfo(
|
<TouchableOpacity
|
||||||
tailStation,
|
onPress={() => {
|
||||||
trainData,
|
const array = openBackTrainInfo(i.station, trainData, i.dia);
|
||||||
showNearTrain
|
|
||||||
);
|
|
||||||
|
|
||||||
if (!array) return;
|
if (!array) return;
|
||||||
setTrainData(array);
|
setTrainData(array);
|
||||||
setIsConcatNear(true);
|
|
||||||
}}
|
setShowTailStation([...showTailStation, index]);
|
||||||
style={{
|
}}
|
||||||
padding: 10,
|
style={{
|
||||||
flexDirection: "row",
|
padding: 10,
|
||||||
borderColor: "blue",
|
flexDirection: "row",
|
||||||
borderWidth: 1,
|
borderColor: "blue",
|
||||||
margin: 10,
|
borderWidth: 1,
|
||||||
borderRadius: 5,
|
margin: 10,
|
||||||
alignItems: "center",
|
borderRadius: 5,
|
||||||
}}
|
alignItems: "center",
|
||||||
>
|
}}
|
||||||
<Text style={{ fontSize: 18, fontWeight: "bold", color: "black" }}>
|
>
|
||||||
「本当の終着駅」を表示
|
<Text
|
||||||
</Text>
|
style={{ fontSize: 18, fontWeight: "bold", color: "black" }}
|
||||||
</TouchableOpacity>
|
>
|
||||||
)}
|
「本当の終着駅」を表示
|
||||||
|
</Text>
|
||||||
|
</TouchableOpacity>
|
||||||
|
) : (
|
||||||
|
<></>
|
||||||
|
)
|
||||||
|
)}
|
||||||
|
|
||||||
<View style={{ flexDirection: "row" }}>
|
<View style={{ flexDirection: "row" }}>
|
||||||
<View
|
<View
|
||||||
|
@ -454,6 +454,8 @@ export const injectJavascriptData = (
|
|||||||
//千年ものがたり
|
//千年ものがたり
|
||||||
case "8011D":
|
case "8011D":
|
||||||
case "8012D":
|
case "8012D":
|
||||||
|
case "8021D":
|
||||||
|
case "8022D":
|
||||||
setStationIcon(element.querySelector("img"),'https://storage.haruk.in/s185mm1.png');
|
setStationIcon(element.querySelector("img"),'https://storage.haruk.in/s185mm1.png');
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -462,20 +464,49 @@ export const injectJavascriptData = (
|
|||||||
case "8054D":
|
case "8054D":
|
||||||
case "8062D":
|
case "8062D":
|
||||||
case "8063D":
|
case "8063D":
|
||||||
|
case "8082D":
|
||||||
|
case "8083D":
|
||||||
|
case "8073D":
|
||||||
|
case "8074D":
|
||||||
setStationIcon(element.querySelector("img"),'https://storage.haruk.in/s185ym1.png');
|
setStationIcon(element.querySelector("img"),'https://storage.haruk.in/s185ym1.png');
|
||||||
break;
|
break;
|
||||||
|
//ラマルドボア
|
||||||
|
case "9253M":
|
||||||
|
case "9256M":
|
||||||
|
setStationIcon(element.querySelector("img"),'https://storage.haruk.in/w213w.png');
|
||||||
|
break;
|
||||||
|
|
||||||
|
// 貨物
|
||||||
|
case "74":
|
||||||
|
case "75":
|
||||||
|
setStationIcon(element.querySelector("img"),'https://storage.haruk.in/ef65_fs.png');
|
||||||
|
break;
|
||||||
|
case "70":
|
||||||
|
case "71":
|
||||||
|
case "73":
|
||||||
|
case "76":
|
||||||
|
case "3070":
|
||||||
|
case "3071":
|
||||||
|
case "3072":
|
||||||
|
case "3073":
|
||||||
|
case "3076":
|
||||||
|
case "3077":
|
||||||
|
case "3078":
|
||||||
|
case "3079":
|
||||||
|
case "8070":
|
||||||
|
case "8071":
|
||||||
|
case "8072":
|
||||||
|
case "8077":
|
||||||
|
setStationIcon(element.querySelector("img"),'https://storage.haruk.in/ef210a.png');
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
`
|
`
|
||||||
: ``;
|
: ``;
|
||||||
|
|
||||||
const JRF_icon =
|
|
||||||
iconSetting == "true"
|
|
||||||
? `JRF || setStationIcon(element.querySelector("img"),'https://storage.haruk.in/ef210a.png');`
|
|
||||||
: ``;
|
|
||||||
const normal_train_name = `
|
const normal_train_name = `
|
||||||
if(new RegExp(/^4[1-9]\\d\\d[DM]$/).test(列番データ) || new RegExp(/^5[1-7]\\d\\d[DM]$/).test(列番データ)){
|
if(new RegExp(/^4[1-9]\\d\\d[DM]$/).test(列番データ) || new RegExp(/^5[1-7]\\d\\d[DM]$/).test(列番データ) || 列番データ ==="3621D"){
|
||||||
行き先情報.innerText = "ワンマン\\n"+行き先情報.innerText;
|
行き先情報.innerText = "ワンマン\\n"+行き先情報.innerText;
|
||||||
flag=true;
|
flag=true;
|
||||||
}
|
}
|
||||||
@ -495,8 +526,7 @@ export const injectJavascriptData = (
|
|||||||
行き先情報.innerText = 行き先情報.innerText+"臨時列車\\n";
|
行き先情報.innerText = 行き先情報.innerText+"臨時列車\\n";
|
||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
const JRF_name =
|
const JRF_name = `
|
||||||
`
|
|
||||||
let JRF = false;
|
let JRF = false;
|
||||||
const getJRF = num =>{
|
const getJRF = num =>{
|
||||||
switch(num){
|
switch(num){
|
||||||
@ -535,7 +565,7 @@ const getJRF = num =>{
|
|||||||
const data = getJRF(列番データ);
|
const data = getJRF(列番データ);
|
||||||
行き先情報.innerText = data != null ? data+行き先情報.innerText : 行き先情報.innerText;
|
行き先情報.innerText = data != null ? data+行き先情報.innerText : 行き先情報.innerText;
|
||||||
|
|
||||||
` + JRF_icon;
|
`;
|
||||||
|
|
||||||
const TKT_name = `
|
const TKT_name = `
|
||||||
//安芸行と併結列車を個別に表示、それ以外をdefaultで下りなら既定の行き先を、上りなら奈半利行を設定
|
//安芸行と併結列車を個別に表示、それ以外をdefaultで下りなら既定の行き先を、上りなら奈半利行を設定
|
||||||
@ -548,9 +578,10 @@ const data = getJRF(列番データ);
|
|||||||
return "ごめん・なはり線直通\\n快速 安芸行";
|
return "ごめん・なはり線直通\\n快速 安芸行";
|
||||||
case "5874D":
|
case "5874D":
|
||||||
case "5882D":
|
case "5882D":
|
||||||
|
case "5878D":
|
||||||
return "ごめん・なはり線直通\\n各停 安芸行";
|
return "ごめん・なはり線直通\\n各停 安芸行";
|
||||||
case "742D":
|
case "246D":
|
||||||
case "746D":
|
case "750D":
|
||||||
return "土佐山田/奈半利行\\n(後免にて解結)\\nごめん・なはり線快速";
|
return "土佐山田/奈半利行\\n(後免にて解結)\\nごめん・なはり線快速";
|
||||||
default:
|
default:
|
||||||
if(new RegExp(/^58[1-3][1,3,5,7,9][DM]$/).test(列番データ)){
|
if(new RegExp(/^58[1-3][1,3,5,7,9][DM]$/).test(列番データ)){
|
||||||
|
@ -63,11 +63,51 @@ export const BusAndTrainDataProvider = ({ children }) => {
|
|||||||
const getInfluencedTrainData = (trainNum) => {
|
const getInfluencedTrainData = (trainNum) => {
|
||||||
const trainPairList = initializeTrainPairList();
|
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 = [];
|
const returnArray = [];
|
||||||
if (!trainNum) return;
|
if (!trainNum) return;
|
||||||
if (trainPairList[trainNum]) {
|
if (trainPairList[trainNum]) {
|
||||||
returnArray.push(Object.keys(trainPairList[trainNum])[0]);
|
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 (
|
if (
|
||||||
// 列番が4xxDまたは5xxDの場合はxxDの列番を検索
|
// 列番が4xxDまたは5xxDの場合はxxDの列番を検索
|
||||||
new RegExp(/^4[1-9]\d\d[DM]$/).test(trainNum) ||
|
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["4" + trainNum]) returnArray.push("4" + trainNum);
|
||||||
if (trainList["5" + trainNum]) returnArray.push("5" + trainNum);
|
if (trainList["5" + trainNum]) returnArray.push("5" + trainNum);
|
||||||
}
|
}
|
||||||
if (!returnArray[0]) return [[], []];
|
|
||||||
const TD = trainList[returnArray[0]];
|
if (!returnArray.length) return [];
|
||||||
if (!TD) return [[], []];
|
const TDArray = returnArray.map((d) => {
|
||||||
const TDArray = TD.split("#").filter((d) => d != "");
|
const TD = trainList[d];
|
||||||
return [returnArray, TDArray];
|
if (!TD) return;
|
||||||
|
return { id: d, TrainData: TD.split("#").filter((d) => d != "") };
|
||||||
|
});
|
||||||
|
return TDArray;
|
||||||
};
|
};
|
||||||
return (
|
return (
|
||||||
<BusAndTrainDataContext.Provider
|
<BusAndTrainDataContext.Provider
|
||||||
|
Loading…
Reference in New Issue
Block a user