import React, { useState, useEffect } from "react";
import {
StatusBar,
View,
LayoutAnimation,
ScrollView,
Linking,
Text,
TouchableOpacity,
} from "react-native";
import AutoHeightImage from "react-native-auto-height-image";
import { FontAwesome, Foundation, Ionicons } from "@expo/vector-icons";
import ActionSheet from "react-native-actions-sheet";
import Sign from "../../components/駅名表/Sign";
import { useInterval } from "../../lib/useInterval";
import { TicketBox } from "../atom/TicketBox";
import {
widthPercentageToDP as wp,
heightPercentageToDP as hp,
} from "react-native-responsive-screen";
import lineColorList from "../../assets/originData/lineColorList";
import { getPDFViewURL } from "../../lib/getPdfViewURL";
export const StationDeteilView = (props) => {
const {
StationBoardAcSR,
currentStation,
originalStationList,
favoriteStation,
setFavoriteStation,
busAndTrainData,
navigate,
onExit,
} = props;
const [trainBus, setTrainBus] = useState();
useEffect(() => {
if (!currentStation) return () => {};
const data = busAndTrainData.filter((d) => {
return d.name === currentStation[0].Station_JP;
});
if (data.length == 0) {
setTrainBus();
}
setTrainBus(data[0]);
}, [currentStation]);
const info =
currentStation &&
(currentStation[0].StationTimeTable.match(".pdf")
? getPDFViewURL(currentStation[0].StationTimeTable)
: currentStation[0].StationTimeTable);
return (
>}
>
{currentStation && (
{
navigate("howto", {
info,
onExit,
});
StationBoardAcSR.current?.hide();
}}
oLP={() => Linking.openURL(currentStation[0].StationTimeTable)}
/>
)}
{currentStation &&
currentStation.map((d) => (
))}
{currentStation &&
currentStation[0].JrHpUrl &&
currentStation[0].StationNumber != "M12" && (
<駅構内図 //高松/阿波池田&後免&須崎kounai.png児島例外/
oP={() => {
navigate("howto", {
info:
currentStation[0].JrHpUrl.replace("/index.html", "/") +
"/kounai_map.html",
onExit,
});
StationBoardAcSR.current?.hide();
}}
oLP={() => {
Linking.openURL(
currentStation[0].JrHpUrl.replace("/index.html", "/") +
"/kounai_map.html"
);
}}
uri={currentStation[0].JrHpUrl.replace("/index.html", "/")}
/>
)}
{currentStation && (
{!currentStation[0].JrHpUrl || (
}
flex={1}
onPressButton={() => {
navigate("howto", {
info: currentStation[0].JrHpUrl,
onExit,
});
StationBoardAcSR.current?.hide();
}}
onLongPressButton={() =>
Linking.openURL(currentStation[0].JrHpUrl)
}
>
web
)}
{!currentStation[0].StationTimeTable || (
}
flex={1}
onPressButton={() => {
navigate("howto", {
info,
onExit,
});
StationBoardAcSR.current?.hide();
}}
onLongPressButton={() =>
Linking.openURL(currentStation[0].StationTimeTable)
}
>
時刻表
)}
{!currentStation[0].StationMap || (
}
flex={1}
onPressButton={() =>
Linking.openURL(currentStation[0].StationMap)
}
>
Map
)}
{!trainBus || (
}
flex={1}
onPressButton={() => {
navigate("howto", {
info: trainBus.address,
onExit,
});
StationBoardAcSR.current?.hide();
}}
onLongPressButton={() => Linking.openURL(trainBus.address)}
>
並行バス
)}
)}
);
};
const StationName = (props) => {
const { stringData, ss } = props;
return (
{stringData.Station_JP}
{stringData.Station_EN}
);
};
const NexPreStationLine = ({
currentStation,
originalStationList,
oP,
favoriteStation,
setFavoriteStation,
}) => {
const [preStation, setPreStation] = useState();
const [nexStation, setNexStation] = useState();
const [lineName, setLineName] = useState();
useEffect(() => {
getPreNextStation(currentStation);
}, [currentStation]);
useEffect(() => {
if (!currentStation) return () => {};
getPreNextStation(currentStation);
}, []);
const getPreNextStation = (now) => {
const lineList = [
"予讃線(高松-松山間)[Y]",
"予讃線(松山-宇和島間)[U]",
"予讃線/愛ある伊予灘線(向井原-伊予大洲間)[S]",
"土讃線(多度津-高知間)[D]",
"土讃線(高知-窪川間)[K]",
"高徳線(高松-徳島間)[T]",
"徳島線(徳島-阿波池田)[B]",
"鳴門線(池谷-鳴門間)[N]",
"瀬戸大橋線(宇多津-児島間)[M]",
];
let returnData;
lineList.forEach((d) => {
let cache = originalStationList[d].findIndex(
(data) => data.StationNumber == now.StationNumber
);
if (cache != -1) {
returnData = [
originalStationList[d][cache - 1],
originalStationList[d][cache + 1],
d,
];
}
});
setPreStation(returnData[0]);
setNexStation(returnData[1]);
setLineName(returnData[2]);
};
return (
{preStation ? (
<>
◀
{preStation.StationNumber ? (
{preStation.StationNumber}
) : (
<>>
)}
>
) : (
<>>
)}
{lineName &&
lineName
.split("(")
.map((d, index) => (index == 1 ? "(" + d : d))
.join("\n")}
{nexStation ? (
<>
{nexStation.StationNumber ? (
{nexStation.StationNumber}
) : (
<>>
)}
▶
>
) : (
<>>
)}
);
};
const 駅構内図 = (props) => {
const [open, setOpen] = useState(false);
return (
<>
setOpen(!open)}
>
{open ? "駅構内図を非表示" : "駅構内図を表示"}
{open && (
<>
>
)}
>
);
};
const styleSheet = {
外枠: {
width: wp("80%"),
height: (wp("80%") / 20) * 9,
borderColor: "#2E94BB",
borderWidth: 1,
backgroundColor: "white",
},
下帯: {
position: "absolute",
bottom: "0%",
left: "0%",
width: "100%",
height: "30%",
backgroundColor: "#2E94BB",
},
JRStyle: {
position: "absolute",
top: "2%",
left: "2%",
fontWeight: "bold",
fontSize: parseInt("30%"),
color: "#2E94BB",
},
stationNameAreaOverWrap: {
position: "absolute",
top: "10%",
alignContent: "center",
flexDirection: "row",
},
Station_JP: {
fontWeight: "bold",
fontSize: parseInt("40%"),
color: "#005170",
},
Station_EN: {
fontWeight: "bold",
fontSize: parseInt("15%"),
color: "#005170",
},
下帯内容: {
position: "absolute",
bottom: "0%",
height: "30%",
width: "100%",
alignItems: "center",
flexDirection: "column",
},
下枠フレーム: {
flex: 1,
flexDirection: "row",
alignContent: "center",
height: wp("10%"),
},
下枠左右マーク: {
fontWeight: "bold",
fontSize: parseInt("20%"),
color: "white",
paddingHorizontal: 10,
textAlignVertical: "center",
},
下枠駅ナンバー: {
alignContent: "center",
alignItems: "center",
width: wp("8%"),
height: wp("8%"),
margin: wp("1%"),
borderColor: "white",
borderWidth: parseInt("2%"),
borderRadius: parseInt("100%"),
},
下枠駅名: {
fontWeight: "bold",
fontSize: parseInt("15%"),
color: "white",
flex: 1,
paddingHorizontal: 0,
marginVertical: 0,
textAlignVertical: "center",
},
};