中央時三段活用可能に変更、ダイヤ情報の部分更新
This commit is contained in:
parent
a769ccb951
commit
d1ee693557
@ -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 = ({
|
||||
</Text>
|
||||
<View style={{ flex: 1 }} />
|
||||
<Text style={{ fontSize: 20, fontWeight: "bold", color: "white" }}>
|
||||
{showHeadStation.map((d) => `${headStation[d].id} + `)}
|
||||
{data.trainNum}
|
||||
{isConcatNear ? ` + ${nearTrainIDList}` : ""}
|
||||
{showTailStation.map((d) => ` + ${tailStation[d].id}`)}
|
||||
</Text>
|
||||
|
||||
{data.limited != undefined &&
|
||||
@ -331,33 +342,36 @@ export const EachTrainInfoCore = ({
|
||||
<ScrollStickyContent currentTrainData={currentTrainData} />
|
||||
}
|
||||
>
|
||||
{headStation && !isConcatNear && (
|
||||
<TouchableOpacity
|
||||
onPress={() => {
|
||||
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",
|
||||
}}
|
||||
>
|
||||
<Text style={{ fontSize: 18, fontWeight: "bold", color: "black" }}>
|
||||
「本当の始発駅」を表示
|
||||
</Text>
|
||||
</TouchableOpacity>
|
||||
)}
|
||||
{headStation.length != 0 &&
|
||||
headStation.map((i, index) =>
|
||||
showHeadStation.findIndex((d) => d == index) == -1 ? (
|
||||
<TouchableOpacity
|
||||
onPress={() => {
|
||||
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",
|
||||
}}
|
||||
>
|
||||
<Text
|
||||
style={{ fontSize: 18, fontWeight: "bold", color: "black" }}
|
||||
>
|
||||
「本当の始発駅」を表示
|
||||
</Text>
|
||||
</TouchableOpacity>
|
||||
) : (
|
||||
<></>
|
||||
)
|
||||
)}
|
||||
{/* <LottieView
|
||||
autoPlay
|
||||
loop
|
||||
@ -397,34 +411,38 @@ export const EachTrainInfoCore = ({
|
||||
/>
|
||||
)
|
||||
)}
|
||||
{tailStation && !isConcatNear && (
|
||||
<TouchableOpacity
|
||||
onPress={() => {
|
||||
const array = openBackTrainInfo(
|
||||
tailStation,
|
||||
trainData,
|
||||
showNearTrain
|
||||
);
|
||||
{tailStation.length != 0 &&
|
||||
tailStation.map((i, index) =>
|
||||
showTailStation.findIndex((d) => d == index) == -1 ? (
|
||||
<TouchableOpacity
|
||||
onPress={() => {
|
||||
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",
|
||||
}}
|
||||
>
|
||||
<Text style={{ fontSize: 18, fontWeight: "bold", color: "black" }}>
|
||||
「本当の終着駅」を表示
|
||||
</Text>
|
||||
</TouchableOpacity>
|
||||
)}
|
||||
if (!array) return;
|
||||
setTrainData(array);
|
||||
|
||||
setShowTailStation([...showTailStation, index]);
|
||||
}}
|
||||
style={{
|
||||
padding: 10,
|
||||
flexDirection: "row",
|
||||
borderColor: "blue",
|
||||
borderWidth: 1,
|
||||
margin: 10,
|
||||
borderRadius: 5,
|
||||
alignItems: "center",
|
||||
}}
|
||||
>
|
||||
<Text
|
||||
style={{ fontSize: 18, fontWeight: "bold", color: "black" }}
|
||||
>
|
||||
「本当の終着駅」を表示
|
||||
</Text>
|
||||
</TouchableOpacity>
|
||||
) : (
|
||||
<></>
|
||||
)
|
||||
)}
|
||||
|
||||
<View style={{ flexDirection: "row" }}>
|
||||
<View
|
||||
|
@ -454,6 +454,8 @@ export const injectJavascriptData = (
|
||||
//千年ものがたり
|
||||
case "8011D":
|
||||
case "8012D":
|
||||
case "8021D":
|
||||
case "8022D":
|
||||
setStationIcon(element.querySelector("img"),'https://storage.haruk.in/s185mm1.png');
|
||||
break;
|
||||
|
||||
@ -462,20 +464,49 @@ export const injectJavascriptData = (
|
||||
case "8054D":
|
||||
case "8062D":
|
||||
case "8063D":
|
||||
case "8082D":
|
||||
case "8083D":
|
||||
case "8073D":
|
||||
case "8074D":
|
||||
setStationIcon(element.querySelector("img"),'https://storage.haruk.in/s185ym1.png');
|
||||
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:
|
||||
break;
|
||||
}
|
||||
`
|
||||
: ``;
|
||||
|
||||
const JRF_icon =
|
||||
iconSetting == "true"
|
||||
? `JRF || setStationIcon(element.querySelector("img"),'https://storage.haruk.in/ef210a.png');`
|
||||
: ``;
|
||||
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;
|
||||
flag=true;
|
||||
}
|
||||
@ -495,8 +526,7 @@ export const injectJavascriptData = (
|
||||
行き先情報.innerText = 行き先情報.innerText+"臨時列車\\n";
|
||||
}
|
||||
`;
|
||||
const JRF_name =
|
||||
`
|
||||
const JRF_name = `
|
||||
let JRF = false;
|
||||
const getJRF = num =>{
|
||||
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(列番データ)){
|
||||
|
@ -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 (
|
||||
<BusAndTrainDataContext.Provider
|
||||
|
Loading…
Reference in New Issue
Block a user