diff --git a/components/custom-train-data.js b/components/custom-train-data.js new file mode 100644 index 0000000..290ce01 --- /dev/null +++ b/components/custom-train-data.js @@ -0,0 +1,398 @@ +export const customTrainDataDetector = (TrainNumber) =>{ + switch(TrainNumber){ + //しおかぜメイン + //8000 ノーマル + case "2M": + case "4M": + case "6M": + case "14M": + case "16M": + case "18M": + case "26M": + case "28M": + case "30M": + case "1M": + case "3M": + case "5M": + case "13M": + case "15M": + case "17M": + case "25M": + case "27M": + case "29M": + return {type:"LTDEXP",trainName:"しおかぜ",trainIcon:'http://www.trainfrontview.net/b/s8000nr.png',trainNumDistance:0,info:"いしづちと併結 / 8000系で運転"}; + //8000 アンパン + case "10M": + case "22M": + case "9M": + case "21M": + return {type:"LTDEXP",trainName:"しおかぜ",trainIcon:'http://www.trainfrontview.net/f/s8000ap.png',trainNumDistance:0,info:"いしづちと併結 / アンパンマン列車で運転"}; + //8600 + case "8M": + case "12M": + case "20M": + case "24M": + case "7M": + case "11M": + case "19M": + case "23M": + return {type:"LTDEXP",trainName:"しおかぜ",trainIcon:'http://www.trainfrontview.net/b/s8600.png',trainNumDistance:0,info:"いしづちと併結 / 8600系で運転"}; + + //いしづちメイン + //8000 ノーマル + + case "1004M": + case "1006M": + case "1014M": + case "1016M": + case "1018M": + case "1026M": + case "1028M": + case "1030M": + case "1001M": + case "1003M": + case "1005M": + case "1013M": + case "1015M": + case "1017M": + case "1025M": + case "1027M": + case "1029M": + return {type:"LTDEXP",trainName:"いしづち",trainIcon:'http://www.trainfrontview.net/b/s8000no.png',trainNumDistance:1000,info:"しおかぜと併結 / 8000系で運転"}; + + //8000 アンパン + case "1010M": + case "1022M": + case "1009M": + case "1021M": + return {type:"LTDEXP",trainName:"いしづち",trainIcon:'http://www.trainfrontview.net/f/s8000ap.png',trainNumDistance:1000,info:"しおかぜと併結 / アンパンマン列車で運転"}; + + //8600 + case "1008M": + case "1012M": + case "1020M": + case "1024M": + case "1007M": + case "1011M": + case "1019M": + case "1023M": + return {type:"LTDEXP",trainName:"いしづち",trainIcon:'http://www.trainfrontview.net/b/s8600_isz.png',trainNumDistance:1000,info:"しおかぜと併結 / 8600系で運転"}; + + //MEXP + //8000 + case "1092M": + return {type:"LTDEXP",trainName:"モーニングEXP高松",trainIcon:'http://www.trainfrontview.net/b/s8000no.png',trainNumDistance:null,info:"8000系で運転"}; + //8600 + case "1091M": + return {type:"LTDEXP",trainName:"モーニングEXP松山",trainIcon:'http://www.trainfrontview.net/b/s8600_isz.png',trainNumDistance:null,info:"8600系で運転"}; + //三桁いしづち + //8000 アンパン + case "1041M": + case "1044M": + return {type:"LTDEXP",trainName:"いしづち",trainIcon:'http://www.trainfrontview.net/f/s8000ap.png',trainNumDistance:940,info:"アンパンマン列車で運転"}; + //8600 + case "1043M": + case "1042M": + case "1046M": + return {type:"LTDEXP",trainName:"いしづち",trainIcon:'http://www.trainfrontview.net/b/s8600_isz.png',trainNumDistance:940,info:"8600系で運転"}; + + //南風 2700ノーマル + case "34D": + case "38D": + case "40D": + case "42D": + case "46D": + case "50D": + case "52D": + case "54D": + case "58D": + case "31D": + case "35D": + case "39D": + case "41D": + case "43D": + case "47D": + case "51D": + case "53D": + case "55D": + return {type:"LTDEXP",trainName:"南風",trainIcon:'http://www.trainfrontview.net/b/s2700.png',trainNumDistance:30,info:"2700系で運転"}; + //2700アンパン + case "32D": + case "36D": + case "44D": + case "48D": + case "56D": + case "33D": + case "37D": + case "45D": + case "49D": + case "57D": + return {type:"LTDEXP",trainName:"南風",trainIcon:'http://www.trainfrontview.net/f/s2700apr.png',trainNumDistance:30,info:"アンパンマン列車で運転"}; + break; + + + + //うずしお + //2700 + case "5006D": + case "5022D": + case "5013D": + case "5029D": + return {type:"LTDEXP",trainName:"うずしお",trainIcon:'http://www.trainfrontview.net/b/s2700_uzu.png',trainNumDistance:5000,info:"南風と宇多津で併結 / 高松-宇多津間進行方向逆転 / 2700系で運転"}; + case "3002D": + case "3004D": + case "3010D": + case "3012D": + case "3016D": + case "3018D": + case "3024D": + case "3028D": + case "3030D": + case "3003D": + case "3005D": + case "3007D": + case "3015D": + case "3019D": + case "3021D": + case "3025D": + case "3027D": + case "3031D": + case "3033D": + return {type:"LTDEXP",trainName:"うずしお",trainIcon:'http://www.trainfrontview.net/b/s2700_uzu.png',trainNumDistance:3000,info:"2700系で運転"}; + + //2600 + case "3008D": + case "3014D": + case "3020D": + case "3026D": + case "3001D": + case "3011D": + case "3017D": + case "3023D": + return {type:"LTDEXP",trainName:"うずしお",trainIcon:'http://www.trainfrontview.net/b/s2600.png',trainNumDistance:3000,info:"2600系で運転"}; + + //キハ185 + case "3009D": + case "3032D": + return {type:"LTDEXP",trainName:"うずしお",trainIcon:'http://www.trainfrontview.net/b/s185tu_uzu.png',trainNumDistance:3000,info:"キハ185系で運転"}; + + //マリンライナー + case "3104M": + case "3106M": + case "3108M": + case "3110M": + case "3112M": + case "3114M": + case "3116M": + case "3118M": + case "3120M": + case "3122M": + case "3124M": + case "3126M": + case "3128M": + case "3130M": + case "3132M": + case "3134M": + case "3136M": + case "3138M": + case "3140M": + case "3142M": + case "3144M": + case "3146M": + case "3148M": + case "3150M": + case "3152M": + case "3154M": + case "3156M": + case "3158M": + case "3160M": + case "3162M": + case "3164M": + case "3166M": + case "3168M": + case "3170M": + case "3105M": + case "3107M": + case "3109M": + case "3111M": + case "3113M": + case "3115M": + case "3117M": + case "3119M": + case "3121M": + case "3123M": + case "3125M": + case "3127M": + case "3129M": + case "3131M": + case "3133M": + case "3135M": + case "3137M": + case "3139M": + case "3141M": + case "3143M": + case "3145M": + case "3147M": + case "3149M": + case "3151M": + case "3153M": + case "3155M": + case "3157M": + case "3159M": + case "3161M": + case "3163M": + case "3165M": + case "3167M": + case "3169M": + case "3175M": + return {type:"Rapid",trainName:"マリンライナー",trainIcon:'http://www.trainfrontview.net/b/s5001.png',trainNumDistance:3100,info:""}; + case "3102M": + case "3101M": + case "3103M": + case "3171M": + case "3173M": + return {type:"Rapid",trainName:"マリンライナー",trainIcon:'http://www.trainfrontview.net/b/s5001k.png',trainNumDistance:3100,info:""}; + + //サンライズ瀬戸 + case "5032M": + case "5031M": + return {type:"NightLTDEXP",trainName:"サンライズ瀬戸",trainIcon:'http://www.trainfrontview.net/b/w285.png',trainNumDistance:null,info:""}; + case "8041M": //琴平延長高松迄 + case "8031M": //琴平延長高松以降 + return {type:"NightLTDEXP",trainName:"サンライズ瀬戸",trainIcon:'http://www.trainfrontview.net/b/w285.png',trainNumDistance:null,info:"琴平延長運転日"}; + + //宇和海 + //2000 ノーマル + case "1052D": + case "1056D": + case "1058D": + case "1064D": + case "1070D": + case "1074D": + case "1076D": + case "1078D": + case "1080D": + case "1082D": + case "1051D": + case "1059D": + case "1065D": + case "1069D": + case "1071D": + case "1073D": + case "1075D": + case "1077D": + case "1079D": + case "1053D": + return {type:"LTDEXP",trainName:"宇和海",trainIcon:'http://www.trainfrontview.net/b/s2000_uwa.png',trainNumDistance:1050,info:"2000系で運転"}; + //2000 アンパン込み + case "1054D": + case "1060D": + case "1062D": + case "1066D": + case "1068D": + case "1072D": + case "1055D": + case "1057D": + case "1061D": + case "1063D": + case "1067D": + case "1081D": + return {type:"LTDEXP",trainName:"宇和海",trainIcon:'http://www.trainfrontview.net/f/s2002a.png',trainNumDistance:1050,info:"アンパン列車で運転"}; + //しまんと + case "2002D": + case "2004D": + case "2006D": + case "2008D": + case "2001D": + case "2003D": + case "2005D": + case "2007D": + return {type:"LTDEXP",trainName:"しまんと",trainIcon:'http://www.trainfrontview.net/b/s2700_smn.png',trainNumDistance:2000,info:"2700系で運転"}; + + //あしずり 2000 + case "2074D": + case "2076D": + case "2080D": + case "2084D": + case "2086D": + case "2071D": + case "2075D": + case "2077D": + case "2081D": + case "2083D": + return {type:"LTDEXP",trainName:"あしずり",trainIcon:'http://www.trainfrontview.net/b/s2000_asi.png',trainNumDistance:2070,info:"2000系で運転"}; + + + //あしずり 2700 + case "2078D": + case "2082D": + case "2088D": + case "2073D": + case "2079D": + case "2085D": + case "2072D": + return {type:"LTDEXP",trainName:"あしずり",trainIcon:'http://www.trainfrontview.net/b/s2700_asi.png',trainNumDistance:2070,info:"2700系で運転"}; + + //剣山 + case "4002D": + case "4004D": + case "4006D": + case "4008D": + case "4010D": + case "4001D": + case "4003D": + case "4005D": + case "4007D": + case "4009D": + case "4011D": + return {type:"LTDEXP",trainName:"剣山",trainIcon:'http://www.trainfrontview.net/b/s185tu.png',trainNumDistance:4000,info:"キハ185系で運転"}; + + //むろと + case "5051D": + case "5052D": + return {type:"LTDEXP",trainName:"むろと",trainIcon:'http://www.trainfrontview.net/b/s185_mrt.png',trainNumDistance:5050,info:"キハ185系で運転"}; + + + + //よしのがわトロッコ + case "8452D": + case "8451D": + return {type:"LTDEXP",trainName:"よしのがわトロッコ",trainIcon:'http://www.trainfrontview.net/f/s185to_ai.png',trainNumDistance:null,info:""}; + + + //岡山高松アントロ + case "8176D": + case "8179D": + //岡山琴平アントロ + case "8277D": + case "8278D": + return {type:"LTDEXP",trainName:"アンパンマントロッコ",trainIcon:'http://www.trainfrontview.net/f/s32to4.png',trainNumDistance:null,info:""}; + + + //伊予灘ものがたり + case "8901D": + case "8903D": + case "8902D": + case "8904D": + return {type:"LTDEXP",trainName:"伊予灘ものがたり",trainIcon:'http://www.trainfrontview.net/b/s185iyoy.png',trainNumDistance:null,info:""}; + + + + //千年ものがたり + case "8011D": + case "8012D": + return {type:"LTDEXP",trainName:"四国まんなか千年ものがたり",trainIcon:'http://www.trainfrontview.net/b/s185mm1.png',trainNumDistance:null,info:""}; + + + //夜明けものがたり + case "8053D": + case "8054D": + case "8062D": + case "8063D": + return {type:"LTDEXP",trainName:"時代の夜明けのものがたり",trainIcon:'http://www.trainfrontview.net/b/s185ym1.png',trainNumDistance:null,info:""}; + + default: + return {type:"Normal",trainName:"",trainIcon:null,trainNumDistance:null,info:null}; + break; + } +} \ No newline at end of file diff --git a/components/発車時刻表/LED_vidion.js b/components/発車時刻表/LED_vidion.js index 5d6966f..1def385 100644 --- a/components/発車時刻表/LED_vidion.js +++ b/components/発車時刻表/LED_vidion.js @@ -1,6 +1,8 @@ import React, { Component, useRef, useState, useEffect } from 'react'; import {StatusBar,View,LayoutAnimation,ScrollView,Linking,Text,TouchableOpacity } from 'react-native'; +import { Switch } from 'react-native-elements'; import {widthPercentageToDP as wp, heightPercentageToDP as hp} from 'react-native-responsive-screen'; +import { customTrainDataDetector } from '../custom-train-data'; let diagramData = undefined; @@ -42,6 +44,7 @@ export default function LED_vision(props){ const [trainDiagram,setTrainDiagram] = useState(null); const [stationDiagram,setStationDiagram] = useState(null); const [currentTrain, setCurrentTrain] = useState(null); + const [finalSwitch, setFinalSwitch] = useState(false); useEffect(()=>{ fetch('https://train.jr-shikoku.co.jp/g?arg1=station&arg2=traintimeinfo&arg3=dia', HeaderConfig).then(response => response.text()).then(d=>{ const val = d.replace("[\r\n","").split(',\r\n'); @@ -121,27 +124,111 @@ export default function LED_vision(props){ },[]) const filtering = d => currentTrain.map(m=>m.num).includes(d.train) - + console.log(new Date()) + const timeFiltering = d => { + const date = new Date(); + const newDate = new Date(); + let data = d.time.split(":"); + let delay = isNaN(currentTrain.filter(data =>data.num == d.train)[0].delay) ? 0 : currentTrain.filter(data =>data.num == d.train)[0].delay; + + date.setHours(parseInt(data[0])); + date.setMinutes(parseInt(data[1])+parseInt(delay)); + console.log(date); + console.log(newDate) + if(!(newDate > date)){ + return true; + } + + return false; + + } + const finalFiltering = d =>{ + if(finalSwitch){ + return true; + } + else{ + if(d.lastStation == "当駅止"){ + return false; + } + return true; + } + } return( - - 次の列車 - Next Train + + + にゃー + + + 次の列車 + Next Train + + + + + 当駅止表示 + setFinalSwitch(!finalSwitch)}/> + + + - {trainTimeAndNumber ? currentTrain && trainTimeAndNumber.filter(filtering).map((d,index)=> + {trainTimeAndNumber ? currentTrain && trainTimeAndNumber.filter(filtering).filter(timeFiltering).filter(finalFiltering).map((d,index)=> - - {/* 検証中 */} - {d.lastStation} + + { + if(customTrainDataDetector(d.train).trainName.length > 6){ + return 17; + } + else{ + return 20 + } + })(),color:(()=>{ + switch(customTrainDataDetector(d.train).type){ + case "Rapid": + return "aqua"; + case "LTDEXP": + return "red"; + case "NightLTDEXP": + return "red"; + case "Normal": + return "white"; + + } + })(),fontWeight:"bold"}}>{(()=>{ + switch(customTrainDataDetector(d.train).type){ + case "Rapid": + return "快速"; + case "LTDEXP": + return "特急"; + case "NightLTDEXP": + return "寝台特急"; + case "Normal": + return "普通列車"; + } + })()+" "+customTrainDataDetector(d.train).trainName+(()=>{ + if(customTrainDataDetector(d.train).trainNumDistance != null){ + return parseInt(d.train.replace("M","").replace("D","")) - customTrainDataDetector(d.train).trainNumDistance + "号"; + } + else{ + return ""; + } + })()} + + + { + if(d.lastStation.length > 4){ + return 15; + } + else{ + return 20 + } + })(),color:"white",fontWeight:"bold"}}>{d.lastStation} - {d.time} + {d.time} - {d.train} - - - {(()=>{ + {(()=>{ let data= currentTrain.filter(data=>data.num==d.train)[0].delay; if(isNaN(data)){ return data;