途中まで分割

This commit is contained in:
harukin-OneMix4 2024-02-12 16:10:54 +09:00
parent 319e4b7b68
commit 5ce9ba9bea

View File

@ -52,16 +52,6 @@ export const EachTrainInfo = (props) => {
const [isConcatNear, setIsConcatNear] = useState(false);
const [tailStation, setTailStation] = useState();
const [headStation, setHeadStation] = useState();
const { height, width } = useWindowDimensions();
const [isLandscape, setIsLandscape] = useState(false);
useEffect(() => {
if (height / width > 1.5) {
setIsLandscape(false);
}
if (height / width < 1.5) {
setIsLandscape(true);
}
}, [width, height]);
// const [actionSheetHorizonalScroll, setActionSheetHorizonalScroll] = useState(false);
//裏列車探索
@ -85,102 +75,6 @@ export const EachTrainInfo = (props) => {
});
}, [trainData, showNearTrain]);
const openBackTrainInfo = (stationInfo, currentTrainIndex) => {
const migrationArray = (stationInfo) => {
const mainTrainStationPosition = trainData.findIndex(
(d) => d.split(",")[0] == stationInfo
);
const relationMain = (() => {
if (mainTrainStationPosition == 0) return "head";
if (mainTrainStationPosition == trainData.length - 1) return "tail";
return "middle";
})();
const subTrainStationPosition = showNearTrain.findIndex(
(d) => d.split(",")[0] == stationInfo
);
const relationSub = (() => {
if (subTrainStationPosition == 0) return "head";
if (subTrainStationPosition == showNearTrain.length - 1) return "tail";
return "middle";
})();
switch (relationMain) {
case "head":
if (relationSub == "head") {
return;
} else if (relationSub == "tail") {
return [
...showNearTrain.slice(0, subTrainStationPosition),
...trainData,
];
} else if (relationSub == "middle") {
return [
...showNearTrain.slice(0, subTrainStationPosition),
...trainData,
];
} else return;
case "tail":
if (relationSub == "head") {
return [
...trainData.slice(0, mainTrainStationPosition),
...showNearTrain,
];
} else if (relationSub == "tail") {
return;
} else if (relationSub == "middle") {
return [
...trainData.slice(0, mainTrainStationPosition),
...showNearTrain.slice(subTrainStationPosition),
];
} else return;
case "middle":
if (relationSub == "head") {
return [
...trainData.slice(0, mainTrainStationPosition),
...showNearTrain,
];
} else if (relationSub == "tail") {
return [
...showNearTrain.slice(0, subTrainStationPosition),
...trainData.slice(mainTrainStationPosition),
];
} else return;
}
};
const array = migrationArray(stationInfo);
if (!array) return;
setTrainData(array);
setIsConcatNear(true);
};
const openTrainInfo = (d) => {
const train = customTrainDataDetector(d);
let TrainNumber = "";
if (train.trainNumDistance != undefined) {
const timeInfo =
parseInt(d.replace("M", "").replace("D", "")) - train.trainNumDistance;
TrainNumber = timeInfo + "号";
}
const payload = {
data: {
trainNum: d,
limited: `${getTrainType(train.type).data}:${
train.trainName
}${TrainNumber}`,
},
navigate,
originalStationList,
from: "AllTrainDiagramView",
};
SheetManager.hide("EachTrainInfo").then(() => {
//0.1秒待機してから開く
setTimeout(() => {
SheetManager.show("EachTrainInfo", { payload });
}, 1);
});
};
useEffect(() => {
setCurrentTrainData(
checkDuplicateTrainData(
@ -189,17 +83,6 @@ export const EachTrainInfo = (props) => {
);
}, [currentTrain]);
useEffect(() => {
//列車現在地アイコン表示スイッチ
AS.getItem("trainPositionSwitch")
.then((d) => {
if (d) {
setTrainPositionSwitch(d);
} else {
}
})
.catch((d) => AS.setItem("trainPositionSwitch", "false"));
}, []);
//bconst insets = useSafeAreaInsets();
const getStationData = (stationName) => {
const Stations = stationList.map((a) =>
@ -213,18 +96,6 @@ export const EachTrainInfo = (props) => {
if (!Station[0]) return [];
return Station.map((d) => d.StationNumber)[0];
};
useEffect(() => {
//currentTrainData.Pos = "鴨川~端岡"; //test
if (!currentTrainData?.Pos) return;
if (currentTrainData?.Pos.match("")) {
const pos = currentTrainData?.Pos.replace("(下り)", "")
.replace("(上り)", "")
.split("");
setCurrentPosition([getStationData(pos[0]), getStationData(pos[1])]);
} else {
setCurrentPosition([getStationData(currentTrainData?.Pos)]);
}
}, [currentTrainData]);
const stationList =
originalStationList &&
@ -361,37 +232,8 @@ export const EachTrainInfo = (props) => {
console.log(e);
}
}
// 使用例
const points =
trainPositionSwitch == "true" ? findReversalPoints(currentPosition) : [];
useEffect(() => {
if (!data.trainNum) return;
const TD = trainList[data.trainNum];
if (!TD) {
setTrainData([]);
return;
}
setTrainData(TD.split("#").filter((d) => d != ""));
}, [data]);
const getType = (string) => {
switch (string) {
case "express":
return "特急";
case "rapid":
return "快速";
default:
return "";
}
};
const migrateTrainName = (string) => {
return string
.replace("マリン", "マリンライナー")
.replace("ライナーライナー", "ライナー");
};
const actionSheetRef = useRef(null);
const scrollHandlers = useScrollHandlers("scrollview-1", actionSheetRef);
return (
<ActionSheet
gestureEnabled={true}
@ -403,6 +245,247 @@ export const EachTrainInfo = (props) => {
//useBottomSafeAreaPadding={Platform.OS == "android"}
>
<Hoge
{...{
actionSheetRef,
data,
trainData,
isConcatNear,
nearTrainIDList,
navigate,
from,
currentTrainData,
currentPosition,
headStation,
tailStation,
stationList,
openStationACFromEachTrainInfo,
trainPositionSwitch,
findReversalPoints,
setTrainData,
trainList,
showNearTrain,
setIsConcatNear,
customTrainDataDetector,
getTrainType,
originalStationList,
SheetManager,
AS,
setTrainPositionSwitch,
getStationData,
setCurrentPosition,
}}
/>
</ActionSheet>
);
};
const styles = StyleSheet.create({
header: {
justifyContent: "center",
alignItems: "center",
left: 0,
right: 0,
//paddingTop: 10,
position: "absolute",
zIndex: 1,
backgroundColor: "f0f0f0",
},
headerText: {
color: "#fff",
fontSize: 25,
fontWeight: "bold",
textAlign: "center",
},
});
const Hoge = ({
actionSheetRef,
data,
trainData,
isConcatNear,
nearTrainIDList,
navigate,
from,
currentTrainData,
currentPosition,
headStation,
tailStation,
stationList,
openStationACFromEachTrainInfo,
trainPositionSwitch,
findReversalPoints,
setTrainData,
trainList,
showNearTrain,
setIsConcatNear,
customTrainDataDetector,
getTrainType,
originalStationList,
SheetManager,
AS,
setTrainPositionSwitch,
getStationData,
setCurrentPosition,
}) => {
const scrollHandlers = useScrollHandlers("scrollview-1", actionSheetRef);
const migrateTrainName = (string) => {
return string
.replace("マリン", "マリンライナー")
.replace("ライナーライナー", "ライナー");
};
const getType = (string) => {
switch (string) {
case "express":
return "特急";
case "rapid":
return "快速";
default:
return "";
}
};
// 使用例
const points =
trainPositionSwitch == "true" ? findReversalPoints(currentPosition) : [];
const { height, width } = useWindowDimensions();
const [isLandscape, setIsLandscape] = useState(false);
useEffect(() => {
//currentTrainData.Pos = "鴨川~端岡"; //test
if (!currentTrainData?.Pos) return;
if (currentTrainData?.Pos.match("")) {
const pos = currentTrainData?.Pos.replace("(下り)", "")
.replace("(上り)", "")
.split("");
setCurrentPosition([getStationData(pos[0]), getStationData(pos[1])]);
} else {
setCurrentPosition([getStationData(currentTrainData?.Pos)]);
}
}, [currentTrainData]);
useEffect(() => {
if (height / width > 1.5) {
setIsLandscape(false);
}
if (height / width < 1.5) {
setIsLandscape(true);
}
}, [width, height]);
useEffect(() => {
if (!data.trainNum) return;
const TD = trainList[data.trainNum];
if (!TD) {
setTrainData([]);
return;
}
setTrainData(TD.split("#").filter((d) => d != ""));
}, [data]);
useEffect(() => {
//列車現在地アイコン表示スイッチ
AS.getItem("trainPositionSwitch")
.then((d) => {
if (d) {
setTrainPositionSwitch(d);
} else {
}
})
.catch((d) => AS.setItem("trainPositionSwitch", "false"));
}, []);
const openBackTrainInfo = (stationInfo, currentTrainIndex) => {
const migrationArray = (stationInfo) => {
const mainTrainStationPosition = trainData.findIndex(
(d) => d.split(",")[0] == stationInfo
);
const relationMain = (() => {
if (mainTrainStationPosition == 0) return "head";
if (mainTrainStationPosition == trainData.length - 1) return "tail";
return "middle";
})();
const subTrainStationPosition = showNearTrain.findIndex(
(d) => d.split(",")[0] == stationInfo
);
const relationSub = (() => {
if (subTrainStationPosition == 0) return "head";
if (subTrainStationPosition == showNearTrain.length - 1) return "tail";
return "middle";
})();
switch (relationMain) {
case "head":
if (relationSub == "head") {
return;
} else if (relationSub == "tail") {
return [
...showNearTrain.slice(0, subTrainStationPosition),
...trainData,
];
} else if (relationSub == "middle") {
return [
...showNearTrain.slice(0, subTrainStationPosition),
...trainData,
];
} else return;
case "tail":
if (relationSub == "head") {
return [
...trainData.slice(0, mainTrainStationPosition),
...showNearTrain,
];
} else if (relationSub == "tail") {
return;
} else if (relationSub == "middle") {
return [
...trainData.slice(0, mainTrainStationPosition),
...showNearTrain.slice(subTrainStationPosition),
];
} else return;
case "middle":
if (relationSub == "head") {
return [
...trainData.slice(0, mainTrainStationPosition),
...showNearTrain,
];
} else if (relationSub == "tail") {
return [
...showNearTrain.slice(0, subTrainStationPosition),
...trainData.slice(mainTrainStationPosition),
];
} else return;
}
};
const array = migrationArray(stationInfo);
if (!array) return;
setTrainData(array);
setIsConcatNear(true);
};
const openTrainInfo = (d) => {
const train = customTrainDataDetector(d);
let TrainNumber = "";
if (train.trainNumDistance != undefined) {
const timeInfo =
parseInt(d.replace("M", "").replace("D", "")) - train.trainNumDistance;
TrainNumber = timeInfo + "号";
}
const payload = {
data: {
trainNum: d,
limited: `${getTrainType(train.type).data}:${
train.trainName
}${TrainNumber}`,
},
navigate,
originalStationList,
from: "AllTrainDiagramView",
};
SheetManager.hide("EachTrainInfo").then(() => {
//0.1秒待機してから開く
setTimeout(() => {
SheetManager.show("EachTrainInfo", { payload });
}, 1);
});
};
return (
<View
style={{
backgroundColor: "#0099CC",
@ -423,9 +506,7 @@ export const EachTrainInfo = (props) => {
}}
/>
</View>
<View
style={{ padding: 10, flexDirection: "row", alignItems: "center" }}
>
<View style={{ padding: 10, flexDirection: "row", alignItems: "center" }}>
<Text style={{ fontSize: 20, fontWeight: "bold", color: "white" }}>
{data.limited
? getType(data.limited.split(":")[0]) +
@ -519,9 +600,7 @@ export const EachTrainInfo = (props) => {
stationList={stationList}
points={points}
currentTrainData={currentTrainData}
openStationACFromEachTrainInfo={
openStationACFromEachTrainInfo
}
openStationACFromEachTrainInfo={openStationACFromEachTrainInfo}
/>
)
)}
@ -635,9 +714,7 @@ export const EachTrainInfo = (props) => {
stationList={stationList}
points={points}
currentTrainData={currentTrainData}
openStationACFromEachTrainInfo={
openStationACFromEachTrainInfo
}
openStationACFromEachTrainInfo={openStationACFromEachTrainInfo}
/>
)
)}
@ -679,24 +756,5 @@ export const EachTrainInfo = (props) => {
</DynamicHeaderScrollView>
)}
</View>
</ActionSheet>
);
};
const styles = StyleSheet.create({
header: {
justifyContent: "center",
alignItems: "center",
left: 0,
right: 0,
//paddingTop: 10,
position: "absolute",
zIndex: 1,
backgroundColor: "f0f0f0",
},
headerText: {
color: "#fff",
fontSize: 25,
fontWeight: "bold",
textAlign: "center",
},
});