途中まで分割
This commit is contained in:
parent
319e4b7b68
commit
5ce9ba9bea
@ -52,16 +52,6 @@ export const EachTrainInfo = (props) => {
|
|||||||
const [isConcatNear, setIsConcatNear] = useState(false);
|
const [isConcatNear, setIsConcatNear] = useState(false);
|
||||||
const [tailStation, setTailStation] = useState();
|
const [tailStation, setTailStation] = useState();
|
||||||
const [headStation, setHeadStation] = 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);
|
// const [actionSheetHorizonalScroll, setActionSheetHorizonalScroll] = useState(false);
|
||||||
|
|
||||||
//裏列車探索
|
//裏列車探索
|
||||||
@ -85,102 +75,6 @@ export const EachTrainInfo = (props) => {
|
|||||||
});
|
});
|
||||||
}, [trainData, showNearTrain]);
|
}, [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(() => {
|
useEffect(() => {
|
||||||
setCurrentTrainData(
|
setCurrentTrainData(
|
||||||
checkDuplicateTrainData(
|
checkDuplicateTrainData(
|
||||||
@ -189,17 +83,6 @@ export const EachTrainInfo = (props) => {
|
|||||||
);
|
);
|
||||||
}, [currentTrain]);
|
}, [currentTrain]);
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
//列車現在地アイコン表示スイッチ
|
|
||||||
AS.getItem("trainPositionSwitch")
|
|
||||||
.then((d) => {
|
|
||||||
if (d) {
|
|
||||||
setTrainPositionSwitch(d);
|
|
||||||
} else {
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.catch((d) => AS.setItem("trainPositionSwitch", "false"));
|
|
||||||
}, []);
|
|
||||||
//bconst insets = useSafeAreaInsets();
|
//bconst insets = useSafeAreaInsets();
|
||||||
const getStationData = (stationName) => {
|
const getStationData = (stationName) => {
|
||||||
const Stations = stationList.map((a) =>
|
const Stations = stationList.map((a) =>
|
||||||
@ -213,18 +96,6 @@ export const EachTrainInfo = (props) => {
|
|||||||
if (!Station[0]) return [];
|
if (!Station[0]) return [];
|
||||||
return Station.map((d) => d.StationNumber)[0];
|
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 =
|
const stationList =
|
||||||
originalStationList &&
|
originalStationList &&
|
||||||
@ -361,37 +232,8 @@ export const EachTrainInfo = (props) => {
|
|||||||
console.log(e);
|
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 actionSheetRef = useRef(null);
|
||||||
const scrollHandlers = useScrollHandlers("scrollview-1", actionSheetRef);
|
|
||||||
return (
|
return (
|
||||||
<ActionSheet
|
<ActionSheet
|
||||||
gestureEnabled={true}
|
gestureEnabled={true}
|
||||||
@ -403,6 +245,247 @@ export const EachTrainInfo = (props) => {
|
|||||||
|
|
||||||
//useBottomSafeAreaPadding={Platform.OS == "android"}
|
//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
|
<View
|
||||||
style={{
|
style={{
|
||||||
backgroundColor: "#0099CC",
|
backgroundColor: "#0099CC",
|
||||||
@ -423,9 +506,7 @@ export const EachTrainInfo = (props) => {
|
|||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
</View>
|
</View>
|
||||||
<View
|
<View style={{ padding: 10, flexDirection: "row", alignItems: "center" }}>
|
||||||
style={{ padding: 10, flexDirection: "row", alignItems: "center" }}
|
|
||||||
>
|
|
||||||
<Text style={{ fontSize: 20, fontWeight: "bold", color: "white" }}>
|
<Text style={{ fontSize: 20, fontWeight: "bold", color: "white" }}>
|
||||||
{data.limited
|
{data.limited
|
||||||
? getType(data.limited.split(":")[0]) +
|
? getType(data.limited.split(":")[0]) +
|
||||||
@ -519,9 +600,7 @@ export const EachTrainInfo = (props) => {
|
|||||||
stationList={stationList}
|
stationList={stationList}
|
||||||
points={points}
|
points={points}
|
||||||
currentTrainData={currentTrainData}
|
currentTrainData={currentTrainData}
|
||||||
openStationACFromEachTrainInfo={
|
openStationACFromEachTrainInfo={openStationACFromEachTrainInfo}
|
||||||
openStationACFromEachTrainInfo
|
|
||||||
}
|
|
||||||
/>
|
/>
|
||||||
)
|
)
|
||||||
)}
|
)}
|
||||||
@ -635,9 +714,7 @@ export const EachTrainInfo = (props) => {
|
|||||||
stationList={stationList}
|
stationList={stationList}
|
||||||
points={points}
|
points={points}
|
||||||
currentTrainData={currentTrainData}
|
currentTrainData={currentTrainData}
|
||||||
openStationACFromEachTrainInfo={
|
openStationACFromEachTrainInfo={openStationACFromEachTrainInfo}
|
||||||
openStationACFromEachTrainInfo
|
|
||||||
}
|
|
||||||
/>
|
/>
|
||||||
)
|
)
|
||||||
)}
|
)}
|
||||||
@ -679,24 +756,5 @@ export const EachTrainInfo = (props) => {
|
|||||||
</DynamicHeaderScrollView>
|
</DynamicHeaderScrollView>
|
||||||
)}
|
)}
|
||||||
</View>
|
</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