途中まで分割
This commit is contained in:
parent
319e4b7b68
commit
5ce9ba9bea
@ -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",
|
||||
},
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user