import React, { Component, useRef, useState, useEffect } from "react"; import { StatusBar, View, LayoutAnimation, ScrollView, Linking, Text, TouchableOpacity, } from "react-native"; import { widthPercentageToDP as wp, heightPercentageToDP as hp, } from "react-native-responsive-screen"; import { useInterval } from "../../lib/useInterval"; export default function Sign(props) { const { currentStation, originalStationList, oP } = props; const getPreNextStation = (now) => { const lineList = [ "予讃線", "松宇線", "伊予灘線", "土讃線", "窪川線", "高徳線", "徳島線", "鳴門線", "瀬戸大橋線", ]; 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], ]; } }); return returnData; }; const [nexPrePosition, setNexPrePosition] = useState(0); useInterval(() => { if (currentStation.length == 1) return; LayoutAnimation.easeInEaseOut(); setNexPrePosition( nexPrePosition + 1 == currentStation.length ? 0 : nexPrePosition + 1 ); }, 2000); return ( JR {(() => { let [preStation, nexStation] = getPreNextStation( currentStation[nexPrePosition] ); return ( {preStation && ( <> {preStation.StationNumber && ( {preStation.StationNumber} )} )} {nexStation && ( <> {nexStation.StationNumber && ( {nexStation.StationNumber} )} )} ); })()} ); } const StationNumberMaker = (props) => { return props.currentStation .filter((d) => (d.StationNumber ? true : false)) .map((d, index, array) => ( { if (array.length == 1) return 20; else if (index == 0) return 5; else if (index == 1) return 35; else return 20; })() + "%", right: "10%", width: wp("10%"), height: wp("10%"), borderColor: "#2E94BB", borderWidth: parseInt("2%"), borderRadius: parseInt("100%"), }} > {d.StationNumber} )); }; const StationNameArea = (props) => { const { currentStation } = props; return ( {/* {stationName.今.LineName} */} {currentStation[0].Station_JP} {currentStation[0].Station_EN} ); }; const StationName = (props) => { const { stringData, ss } = props; return ( {stringData.Station_JP} {stringData.Station_EN} ); }; const styleSheet = { 外枠: { width: wp("80%"), height: (wp("80%") / 20) * 9, borderColor: "#2E94BB", borderWidth: 1, margin: 10, marginHorizontal: wp("10%"), }, 下帯: { 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", }, 下枠左右マーク: { 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, textAlignVertical: "center", }, };