設定画面の設置
This commit is contained in:
parent
5411071dbd
commit
79e8865dc9
13
App.js
13
App.js
@ -10,7 +10,9 @@ import tndView from './ndView';
|
||||
import trainbase from './trainbaseview';
|
||||
import howto from './howto';
|
||||
import menu from './menu';
|
||||
import News from './components/news.js';
|
||||
import TestArea from './TestArea.js';
|
||||
import Setting from './components/settings.js';
|
||||
const Stack = createStackNavigator();
|
||||
const Tab = createBottomTabNavigator();
|
||||
if (Platform.OS === 'android') {
|
||||
@ -26,7 +28,7 @@ export default function App(){
|
||||
<NavigationContainer name= "Root" ref={navigationRef} style={{flex:1}}>
|
||||
<Tab.Navigator>
|
||||
<Stack.Screen name="login" component={top} options={{ tabBarLabel: '位置情報',headerTransparent:true,gestureEnabled:true,tabBarIcon: ({ color, size }) => (<AntDesign name="barchart" size={32} />),}}/>
|
||||
<Stack.Screen name="menu" component={menu} options={{ tabBarLabel: 'リンク',headerTransparent:true,gestureEnabled:true,tabBarIcon: ({ color, size }) => (<Ionicons name="ios-radio" size={platform}/>),}}/>
|
||||
<Stack.Screen name="menuPage" component={menuPage} options={{ tabBarLabel: 'リンク',headerTransparent:true,gestureEnabled:true,tabBarIcon: ({ color, size }) => (<Ionicons name="ios-radio" size={platform}/>),}}/>
|
||||
<Stack.Screen name="home" component={tndView} options={{ tabBarLabel: '運行情報',headerTransparent:true,gestureEnabled:true,tabBarIcon: ({ color, size }) => (<Ionicons name="md-train" size={32}/>),}}/>
|
||||
|
||||
</Tab.Navigator>
|
||||
@ -41,6 +43,15 @@ function top(){
|
||||
<Stack.Screen name="trainbase" component={trainbase} options={{ title: 'トレインビジョン',gestureEnabled:true,...TransitionPresets.SlideFromRightIOS}}/>
|
||||
<Stack.Screen name="howto" component={howto} options={{ title: '使い方',gestureEnabled:true,...TransitionPresets.ModalPresentationIOS,cardOverlayEnabled:true,headerTransparent:true,headerShown:false}}/>
|
||||
<Stack.Screen name="test" component={TestArea} options={{}}/>
|
||||
<Stack.Screen name="news" component={News} options={{gestureEnabled:true,...TransitionPresets.ModalPresentationIOS,cardOverlayEnabled:true,headerTransparent:true,headerShown:false}} />
|
||||
</Stack.Navigator>
|
||||
)
|
||||
}
|
||||
function menuPage(){
|
||||
return(
|
||||
<Stack.Navigator>
|
||||
<Stack.Screen name="menu" component={menu} options={{headerShown: false,gestureEnabled:true,headerTransparent:true,}}/>
|
||||
<Stack.Screen name="setting" component={Setting} options={{gestureEnabled:true,...TransitionPresets.ModalPresentationIOS,cardOverlayEnabled:true,headerTransparent:true,headerShown:false}} />
|
||||
</Stack.Navigator>
|
||||
)
|
||||
}
|
948
Apps.js
948
Apps.js
@ -1,50 +1,464 @@
|
||||
import React, { useRef } from 'react';
|
||||
import {View, Platform} from 'react-native';
|
||||
import React, { useEffect, useRef, useState } from 'react';
|
||||
import {View, Platform, ToastAndroid} from 'react-native';
|
||||
import {WebView} from 'react-native-webview';
|
||||
import Constants from 'expo-constants';/*
|
||||
import Constants from 'expo-constants';
|
||||
import AsyncStorage from '@react-native-async-storage/async-storage';
|
||||
/*
|
||||
import StatusbarDetect from './StatusbarDetect';
|
||||
var Status = StatusbarDetect(); */
|
||||
|
||||
export var webview = null;
|
||||
|
||||
export default function Apps (props) {
|
||||
const { navigation: { navigate } } = props;
|
||||
var urlcache="";
|
||||
const webview = useRef();
|
||||
return (
|
||||
<View style={{height:"100%",paddingTop: Constants.statusBarHeight,}}>
|
||||
{/* {Status} */}
|
||||
<WebView
|
||||
useWebKit={true}
|
||||
ref={webview}
|
||||
source={{uri: 'https://train.jr-shikoku.co.jp/sp.html'}}
|
||||
originWhitelist={['https://train.jr-shikoku.co.jp','https://train.jr-shikoku.co.jp/sp.html']}
|
||||
mixedContentMode={'compatibility'}
|
||||
javaScriptEnabled={true}
|
||||
allowsBackForwardNavigationGestures={true}
|
||||
setSupportMultipleWindows={false}
|
||||
onNavigationStateChange={
|
||||
event =>{
|
||||
console.log(event);
|
||||
if(event.url != urlcache){//URL二重判定回避
|
||||
urlcache = event.url;
|
||||
|
||||
if (event.url.includes("https://train.jr-shikoku.co.jp/usage.htm")) {
|
||||
if(Platform.OS==="android")navigate('howto');
|
||||
webview?.current.goBack();
|
||||
//Actions.howto();
|
||||
}
|
||||
else if (event.url.includes("https://train.jr-shikoku.co.jp/train.html")) {
|
||||
//Actions.trainbase({info: event.url});
|
||||
if(Platform.OS==="android")navigate('trainbase', {info: event.url});
|
||||
webview?.current.goBack();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
onMessage={(event)=>{}}
|
||||
injectedJavaScript={INJECTED_JAVASCRIPT}/>
|
||||
</View>
|
||||
);
|
||||
const [iconSetting, setIconSetting] = useState(undefined)
|
||||
useEffect(()=>{
|
||||
AsyncStorage.getItem("status")
|
||||
.then(d=>{
|
||||
if(d != "2022/04/14"){
|
||||
navigate('news');
|
||||
}
|
||||
})
|
||||
.catch(e=>{
|
||||
navigate('news');
|
||||
})
|
||||
},[])
|
||||
useEffect(()=>{
|
||||
AsyncStorage.getItem("iconSwitch").then( d =>{
|
||||
if(d){
|
||||
setIconSetting(d);
|
||||
}
|
||||
else{
|
||||
AsyncStorage.setItem("iconSwitch","true").then(()=>Updates.reloadAsync())
|
||||
}
|
||||
|
||||
|
||||
}).catch(d=>AsyncStorage.setItem("iconSwitch","true").then(()=>Updates.reloadAsync()))
|
||||
},[])
|
||||
|
||||
const fTrainIcon = iconSetting == "true" ?`JRF || setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/f/ef210a.png');`:``;
|
||||
const trainIcon = iconSetting == "true" ? `
|
||||
|
||||
switch(列番データ){
|
||||
//しおかぜメイン
|
||||
//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":
|
||||
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/b/s8000nr.png');
|
||||
break;
|
||||
//8000 アンパン
|
||||
case "10M":
|
||||
case "22M":
|
||||
case "9M":
|
||||
case "21M":
|
||||
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/f/s8000ap.png');
|
||||
break;
|
||||
|
||||
|
||||
//8600
|
||||
case "8M":
|
||||
case "12M":
|
||||
case "20M":
|
||||
case "24M":
|
||||
case "7M":
|
||||
case "11M":
|
||||
case "19M":
|
||||
case "23M":
|
||||
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/b/s8600.png');
|
||||
break;
|
||||
|
||||
//いしづちメイン
|
||||
//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":
|
||||
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/b/s8000no.png');
|
||||
break;
|
||||
|
||||
//8000 アンパン
|
||||
case "1010M":
|
||||
case "1022M":
|
||||
case "1009M":
|
||||
case "1021M":
|
||||
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/f/s8000ap.png');
|
||||
break;
|
||||
|
||||
//8600
|
||||
case "1008M":
|
||||
case "1012M":
|
||||
case "1020M":
|
||||
case "1024M":
|
||||
case "1007M":
|
||||
case "1011M":
|
||||
case "1019M":
|
||||
case "1023M":
|
||||
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/b/s8600_isz.png');
|
||||
break;
|
||||
|
||||
//MEXP
|
||||
//8000
|
||||
case "1092M":
|
||||
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/b/s8000no.png');
|
||||
break;
|
||||
//8600
|
||||
case "1091M":
|
||||
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/b/s8600_isz.png');
|
||||
break;
|
||||
//三桁いしづち
|
||||
//8000 アンパン
|
||||
case "1041M":
|
||||
case "1044M":
|
||||
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/f/s8000ap.png');
|
||||
break;
|
||||
//8600
|
||||
case "1043M":
|
||||
case "1042M":
|
||||
case "1046M":
|
||||
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/b/s8600_isz.png');
|
||||
break;
|
||||
|
||||
|
||||
//南風 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":
|
||||
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/b/s2700.png');
|
||||
break;
|
||||
//2700アンパン
|
||||
case "32D":
|
||||
case "36D":
|
||||
case "44D":
|
||||
case "48D":
|
||||
case "56D":
|
||||
case "33D":
|
||||
case "37D":
|
||||
case "45D":
|
||||
case "49D":
|
||||
case "57D":
|
||||
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/f/s2700apr.png');
|
||||
break;
|
||||
|
||||
|
||||
|
||||
//うずしお
|
||||
//2700
|
||||
case "5006D":
|
||||
case "5022D":
|
||||
case "5013D":
|
||||
case "5029D":
|
||||
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":
|
||||
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/b/s2700_uzu.png');
|
||||
break;
|
||||
|
||||
//2600
|
||||
case "3008D":
|
||||
case "3014D":
|
||||
case "3020D":
|
||||
case "3026D":
|
||||
case "3001D":
|
||||
case "3011D":
|
||||
case "3017D":
|
||||
case "3023D":
|
||||
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/b/s2600.png');
|
||||
break;
|
||||
|
||||
//キハ185
|
||||
case "3009D":
|
||||
case "3032D":
|
||||
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/b/s185tu_uzu.png');
|
||||
break;
|
||||
|
||||
//マリンライナー
|
||||
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":
|
||||
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/b/s5001.png');
|
||||
break;
|
||||
case "3102M":
|
||||
case "3101M":
|
||||
case "3103M":
|
||||
case "3171M":
|
||||
case "3173M":
|
||||
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/b/s5001k.png');
|
||||
break;
|
||||
|
||||
//サンライズ瀬戸
|
||||
case "5032M":
|
||||
case "5031M":
|
||||
case "8041M": //琴平延長高松迄
|
||||
case "8031M": //琴平延長高松以降
|
||||
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/b/w285.png');
|
||||
break;
|
||||
|
||||
//宇和海
|
||||
//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 "1071D":
|
||||
case "1073D":
|
||||
case "1075D":
|
||||
case "1077D":
|
||||
case "1079D":
|
||||
case "1053D":
|
||||
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/b/s2000_uwa.png');
|
||||
break;
|
||||
//2000 アンパン込み
|
||||
case "1054D":
|
||||
case "1060D":
|
||||
case "1062D":
|
||||
case "1066D":
|
||||
case "1068D":
|
||||
case "1072D":
|
||||
case "1055D":
|
||||
case "1057D":
|
||||
case "1061D":
|
||||
case "1063D":
|
||||
case "1067D":
|
||||
case "1069D":
|
||||
case "1081D":
|
||||
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/f/s2002a.png');
|
||||
break;
|
||||
//しまんと
|
||||
case "2002D":
|
||||
case "2004D":
|
||||
case "2006D":
|
||||
case "2008D":
|
||||
case "2001D":
|
||||
case "2003D":
|
||||
case "2005D":
|
||||
case "2007D":
|
||||
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/b/s2700_smn.png');
|
||||
break;
|
||||
|
||||
//あしずり 2000
|
||||
case "2074D":
|
||||
case "2076D":
|
||||
case "2080D":
|
||||
case "2084D":
|
||||
case "2086D":
|
||||
case "2071D":
|
||||
case "2075D":
|
||||
case "2077D":
|
||||
case "2081D":
|
||||
case "2083D":
|
||||
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/b/s2000_asi.png');
|
||||
break;
|
||||
|
||||
//あしずり 2700
|
||||
case "2078D":
|
||||
case "2082D":
|
||||
case "2088D":
|
||||
case "2073D":
|
||||
case "2079D":
|
||||
case "2085D":
|
||||
case "2072D":
|
||||
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/b/s2700_asi.png');
|
||||
break;
|
||||
//剣山
|
||||
case "4002D":
|
||||
case "4004D":
|
||||
case "4006D":
|
||||
case "4008D":
|
||||
case "4010D":
|
||||
case "4001D":
|
||||
case "4003D":
|
||||
case "4005D":
|
||||
case "4007D":
|
||||
case "4009D":
|
||||
case "4011D":
|
||||
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/b/s185tu.png');
|
||||
break;
|
||||
//むろと
|
||||
case "5051D":
|
||||
case "5052D":
|
||||
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/b/s185_mrt.png');
|
||||
break;
|
||||
|
||||
|
||||
//よしのがわトロッコ
|
||||
case "8452D":
|
||||
case "8451D":
|
||||
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/f/s185to_ai.png');
|
||||
break;
|
||||
|
||||
//岡山高松アントロ
|
||||
case "8176D":
|
||||
case "8179D":
|
||||
//岡山琴平アントロ
|
||||
case "8277D":
|
||||
case "8278D":
|
||||
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/f/s32to4.png');
|
||||
break;
|
||||
|
||||
//伊予灘ものがたり
|
||||
case "8901D":
|
||||
case "8903D":
|
||||
case "8902D":
|
||||
case "8904D":
|
||||
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/b/s185iyoy.png');
|
||||
break;
|
||||
|
||||
|
||||
//千年ものがたり
|
||||
case "8011D":
|
||||
case "8012D":
|
||||
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/b/s185mm1.png');
|
||||
break;
|
||||
|
||||
//夜明けものがたり
|
||||
case "8053D":
|
||||
case "8054D":
|
||||
case "8062D":
|
||||
case "8063D":
|
||||
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/b/s185ym1.png');
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
` : ``;
|
||||
const INJECTED_JAVASCRIPT = `
|
||||
const setStationIcon = (行き先アイコン,img) =>{
|
||||
let newItem = document.createElement("div");
|
||||
@ -83,424 +497,7 @@ const INJECTED_JAVASCRIPT = `
|
||||
var 列番データ = element.getAttribute('onclick').split('"')[1];
|
||||
var flag=false;
|
||||
var TrainType = undefined;
|
||||
|
||||
|
||||
switch(列番データ){
|
||||
//しおかぜメイン
|
||||
//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":
|
||||
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/b/s8000nr.png');
|
||||
break;
|
||||
//8000 アンパン
|
||||
case "10M":
|
||||
case "22M":
|
||||
case "9M":
|
||||
case "21M":
|
||||
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/f/s8000ap.png');
|
||||
break;
|
||||
|
||||
|
||||
//8600
|
||||
case "8M":
|
||||
case "12M":
|
||||
case "20M":
|
||||
case "24M":
|
||||
case "7M":
|
||||
case "11M":
|
||||
case "19M":
|
||||
case "23M":
|
||||
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/b/s8600.png');
|
||||
break;
|
||||
|
||||
//いしづちメイン
|
||||
//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":
|
||||
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/b/s8000no.png');
|
||||
break;
|
||||
|
||||
//8000 アンパン
|
||||
case "1010M":
|
||||
case "1022M":
|
||||
case "1009M":
|
||||
case "1021M":
|
||||
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/f/s8000ap.png');
|
||||
break;
|
||||
|
||||
//8600
|
||||
case "1008M":
|
||||
case "1012M":
|
||||
case "1020M":
|
||||
case "1024M":
|
||||
case "1007M":
|
||||
case "1011M":
|
||||
case "1019M":
|
||||
case "1023M":
|
||||
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/b/s8600_isz.png');
|
||||
break;
|
||||
|
||||
//MEXP
|
||||
//8000
|
||||
case "1092M":
|
||||
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/b/s8000no.png');
|
||||
break;
|
||||
//8600
|
||||
case "1091M":
|
||||
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/b/s8600_isz.png');
|
||||
break;
|
||||
//三桁いしづち
|
||||
//8000 アンパン
|
||||
case "1041M":
|
||||
case "1044M":
|
||||
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/f/s8000ap.png');
|
||||
break;
|
||||
//8600
|
||||
case "1043M":
|
||||
case "1042M":
|
||||
case "1046M":
|
||||
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/b/s8600_isz.png');
|
||||
break;
|
||||
|
||||
|
||||
//南風 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":
|
||||
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/b/s2700.png');
|
||||
break;
|
||||
//2700アンパン
|
||||
case "32D":
|
||||
case "36D":
|
||||
case "44D":
|
||||
case "48D":
|
||||
case "56D":
|
||||
case "33D":
|
||||
case "37D":
|
||||
case "45D":
|
||||
case "49D":
|
||||
case "57D":
|
||||
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/f/s2700apr.png');
|
||||
break;
|
||||
|
||||
|
||||
|
||||
//うずしお
|
||||
//2700
|
||||
case "5006D":
|
||||
case "5022D":
|
||||
case "5013D":
|
||||
case "5029D":
|
||||
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":
|
||||
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/b/s2700_uzu.png');
|
||||
break;
|
||||
|
||||
//2600
|
||||
case "3008D":
|
||||
case "3014D":
|
||||
case "3020D":
|
||||
case "3026D":
|
||||
case "3001D":
|
||||
case "3011D":
|
||||
case "3017D":
|
||||
case "3023D":
|
||||
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/b/s2600.png');
|
||||
break;
|
||||
|
||||
//キハ185
|
||||
case "3009D":
|
||||
case "3032D":
|
||||
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/b/s185tu_uzu.png');
|
||||
break;
|
||||
|
||||
//マリンライナー
|
||||
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":
|
||||
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/b/s5001.png');
|
||||
break;
|
||||
case "3102M":
|
||||
case "3101M":
|
||||
case "3103M":
|
||||
case "3171M":
|
||||
case "3173M":
|
||||
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/b/s5001k.png');
|
||||
break;
|
||||
|
||||
//サンライズ瀬戸
|
||||
case "5032M":
|
||||
case "5031M":
|
||||
case "8041M": //琴平延長高松迄
|
||||
case "8031M": //琴平延長高松以降
|
||||
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/b/w285.png');
|
||||
break;
|
||||
|
||||
//宇和海
|
||||
//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 "1071D":
|
||||
case "1073D":
|
||||
case "1075D":
|
||||
case "1077D":
|
||||
case "1079D":
|
||||
case "1053D":
|
||||
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/b/s2000_uwa.png');
|
||||
break;
|
||||
//2000 アンパン込み
|
||||
case "1054D":
|
||||
case "1060D":
|
||||
case "1062D":
|
||||
case "1066D":
|
||||
case "1068D":
|
||||
case "1072D":
|
||||
case "1055D":
|
||||
case "1057D":
|
||||
case "1061D":
|
||||
case "1063D":
|
||||
case "1067D":
|
||||
case "1069D":
|
||||
case "1081D":
|
||||
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/f/s2002a.png');
|
||||
break;
|
||||
//しまんと
|
||||
case "2002D":
|
||||
case "2004D":
|
||||
case "2006D":
|
||||
case "2008D":
|
||||
case "2001D":
|
||||
case "2003D":
|
||||
case "2005D":
|
||||
case "2007D":
|
||||
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/b/s2700_smn.png');
|
||||
break;
|
||||
|
||||
//あしずり 2000
|
||||
case "2074D":
|
||||
case "2076D":
|
||||
case "2080D":
|
||||
case "2084D":
|
||||
case "2086D":
|
||||
case "2071D":
|
||||
case "2075D":
|
||||
case "2077D":
|
||||
case "2081D":
|
||||
case "2083D":
|
||||
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/b/s2000_asi.png');
|
||||
break;
|
||||
|
||||
//あしずり 2700
|
||||
case "2078D":
|
||||
case "2082D":
|
||||
case "2088D":
|
||||
case "2073D":
|
||||
case "2079D":
|
||||
case "2085D":
|
||||
case "2072D":
|
||||
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/b/s2700_asi.png');
|
||||
break;
|
||||
//剣山
|
||||
case "4002D":
|
||||
case "4004D":
|
||||
case "4006D":
|
||||
case "4008D":
|
||||
case "4010D":
|
||||
case "4001D":
|
||||
case "4003D":
|
||||
case "4005D":
|
||||
case "4007D":
|
||||
case "4009D":
|
||||
case "4011D":
|
||||
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/b/s185tu.png');
|
||||
break;
|
||||
//むろと
|
||||
case "5051D":
|
||||
case "5052D":
|
||||
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/b/s185_mrt.png');
|
||||
break;
|
||||
|
||||
|
||||
//よしのがわトロッコ
|
||||
case "8452D":
|
||||
case "8451D":
|
||||
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/f/s185to_ai.png');
|
||||
break;
|
||||
|
||||
//岡山高松アントロ
|
||||
case "8176D":
|
||||
case "8179D":
|
||||
//岡山琴平アントロ
|
||||
case "8277D":
|
||||
case "8278D":
|
||||
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/f/s32to4.png');
|
||||
break;
|
||||
|
||||
//伊予灘ものがたり
|
||||
case "8901D":
|
||||
case "8903D":
|
||||
case "8902D":
|
||||
case "8904D":
|
||||
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/b/s185iyoy.png');
|
||||
break;
|
||||
|
||||
|
||||
//千年ものがたり
|
||||
case "8011D":
|
||||
case "8012D":
|
||||
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/b/s185mm1.png');
|
||||
break;
|
||||
|
||||
//夜明けものがたり
|
||||
case "8053D":
|
||||
case "8054D":
|
||||
case "8062D":
|
||||
case "8063D":
|
||||
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/b/s185ym1.png');
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
`+trainIcon+`
|
||||
|
||||
|
||||
|
||||
@ -614,7 +611,7 @@ const INJECTED_JAVASCRIPT = `
|
||||
|
||||
//列番付与
|
||||
行き先情報.innerText = 行き先情報.innerText+列番データ+(JRF ? "":"レ");
|
||||
JRF || setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/f/ef210a.png');
|
||||
`+fTrainIcon+`
|
||||
}
|
||||
}
|
||||
try{
|
||||
@ -709,3 +706,40 @@ const INJECTED_JAVASCRIPT = `
|
||||
}
|
||||
`;
|
||||
|
||||
|
||||
return (
|
||||
<View style={{height:"100%",paddingTop: Constants.statusBarHeight,}}>
|
||||
{/* {Status} */}
|
||||
<WebView
|
||||
useWebKit={true}
|
||||
ref={webview}
|
||||
source={{uri: 'https://train.jr-shikoku.co.jp/sp.html'}}
|
||||
originWhitelist={['https://train.jr-shikoku.co.jp','https://train.jr-shikoku.co.jp/sp.html']}
|
||||
mixedContentMode={'compatibility'}
|
||||
javaScriptEnabled={true}
|
||||
allowsBackForwardNavigationGestures={true}
|
||||
setSupportMultipleWindows={false}
|
||||
onNavigationStateChange={
|
||||
event =>{
|
||||
console.log(event);
|
||||
if(event.url != urlcache){//URL二重判定回避
|
||||
urlcache = event.url;
|
||||
|
||||
if (event.url.includes("https://train.jr-shikoku.co.jp/usage.htm")) {
|
||||
if(Platform.OS==="android")navigate('howto');
|
||||
webview?.current.goBack();
|
||||
//Actions.howto();
|
||||
}
|
||||
else if (event.url.includes("https://train.jr-shikoku.co.jp/train.html")) {
|
||||
//Actions.trainbase({info: event.url});
|
||||
if(Platform.OS==="android")navigate('trainbase', {info: event.url});
|
||||
webview?.current.goBack();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
onMessage={(event)=>{}}
|
||||
injectedJavaScript={INJECTED_JAVASCRIPT}/>
|
||||
</View>
|
||||
);
|
||||
}
|
19
components/news.js
Normal file
19
components/news.js
Normal file
@ -0,0 +1,19 @@
|
||||
import React, { } from 'react';
|
||||
import {View,Text,TouchableOpacity } from 'react-native';
|
||||
import {WebView} from 'react-native-webview';
|
||||
import StatusbarDetect from '../StatusbarDetect';
|
||||
import AsyncStorage from '@react-native-async-storage/async-storage';
|
||||
var Status = StatusbarDetect();
|
||||
export default function News(props){
|
||||
const { navigation: { navigate } } = props;
|
||||
return(
|
||||
<View style={{height:"100%",backgroundColor:"#0099CC"}}>
|
||||
<WebView useWebKit={true} source={{uri: 'https://nexcloud.haruk.in/sites/press-harukin/JRShikokuApps/2022-4-13'}} mixedContentMode={'compatibility'} javaScriptEnabled={true}/>
|
||||
<TouchableOpacity style={{padding:10,flexDirection:"row",borderColor:"white",borderWidth:1,margin:10,borderRadius:5,alignItems:"center"}} onPress={()=>{AsyncStorage.setItem('status', "2022/04/14");navigate('Apps');}}>
|
||||
<View style={{flex:1}} />
|
||||
<Text style={{fontSize:25,fontWeight:"bold",color:"white"}}>更新情報を閉じる</Text>
|
||||
<View style={{flex:1}} />
|
||||
</TouchableOpacity>
|
||||
</View>
|
||||
)
|
||||
}
|
44
components/settings.js
Normal file
44
components/settings.js
Normal file
@ -0,0 +1,44 @@
|
||||
import React, { useState, useEffect } from 'react';
|
||||
import {View,Text,TouchableOpacity } from 'react-native';
|
||||
import * as Updates from 'expo-updates';
|
||||
import StatusbarDetect from '../StatusbarDetect';
|
||||
import AsyncStorage from '@react-native-async-storage/async-storage';
|
||||
var Status = StatusbarDetect();
|
||||
import { Switch } from 'react-native-elements';
|
||||
|
||||
export default function Setting(props){
|
||||
const { navigation: { navigate } } = props;
|
||||
const [iconSetting, setIconSetting] = useState(undefined)
|
||||
useEffect(()=>{
|
||||
AsyncStorage.getItem("iconSwitch").then( d =>{
|
||||
setIconSetting(d)
|
||||
})
|
||||
},[])
|
||||
console.log(iconSetting);
|
||||
return(
|
||||
<View style={{height:"100%",backgroundColor:"#0099CC"}}>
|
||||
<View style={{flex:1,backgroundColor:"white"}}>
|
||||
<View style={{backgroundColor:"#0099CC"}}>
|
||||
<Text style={{fontSize:30,fontWeight:"bold",textAlign:"center",color:"white",padding:10}}>設定画面</Text>
|
||||
</View>
|
||||
<View style={{flex:1}} >
|
||||
<View style={{flexDirection:"row",padding:10}}>
|
||||
<Text style={{fontSize:25,alignItems:"center",alignContent:"center",textAlign:"center",textAlignVertical:"center"}}>列車アイコンを表示する</Text>
|
||||
<View style={{flex:1}} />
|
||||
<Switch value={iconSetting == "true" ? true : false} color={iconSetting == "true" ? "red": null} onValueChange={(value)=>setIconSetting(value.toString())}/>
|
||||
</View>
|
||||
|
||||
</View>
|
||||
</View>
|
||||
<TouchableOpacity style={{padding:10,flexDirection:"row",borderColor:"white",borderWidth:1,margin:10,borderRadius:5,alignItems:"center"}} onPress={()=>{
|
||||
AsyncStorage.setItem("iconSwitch",iconSetting.toString()).then(()=>{
|
||||
Updates.reloadAsync()
|
||||
})
|
||||
}}>
|
||||
<View style={{flex:1}} />
|
||||
<Text style={{fontSize:25,fontWeight:"bold",color:"white"}}>設定を保存して再読み込み</Text>
|
||||
<View style={{flex:1}} />
|
||||
</TouchableOpacity>
|
||||
</View>
|
||||
)
|
||||
}
|
@ -8,6 +8,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@expo/vector-icons": "^12.0.0",
|
||||
"@react-native-async-storage/async-storage": "^1.13.0",
|
||||
"@react-native-community/masked-view": "0.1.10",
|
||||
"@react-navigation/bottom-tabs": "^5.11.11",
|
||||
"@react-navigation/native": "^5.9.4",
|
||||
@ -34,6 +35,7 @@
|
||||
"react-native-router-flux": "^4.3.1",
|
||||
"react-native-safe-area-context": "3.2.0",
|
||||
"react-native-screens": "~3.0.0",
|
||||
"react-native-storage": "^1.0.1",
|
||||
"react-native-svg": "12.1.0",
|
||||
"react-native-svg-uri": "^1.2.3",
|
||||
"react-native-vector-icons": "^8.1.0",
|
||||
|
27
yarn.lock
27
yarn.lock
@ -2787,6 +2787,13 @@
|
||||
resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570"
|
||||
integrity sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=
|
||||
|
||||
"@react-native-async-storage/async-storage@^1.13.0":
|
||||
version "1.17.3"
|
||||
resolved "https://registry.yarnpkg.com/@react-native-async-storage/async-storage/-/async-storage-1.17.3.tgz#fa7010aa9b6a811ff653df3698a90d3c173dd6a6"
|
||||
integrity sha512-2dxdlGwBjBP2qYu6F72U7cRRFshISYiNEWCaQNOJtxUERCMaYRWcniYqhL248KSbGUMpRhFCEtliztsiGoYYMA==
|
||||
dependencies:
|
||||
merge-options "^3.0.4"
|
||||
|
||||
"@react-native-community/cli-debugger-ui@^4.13.1":
|
||||
version "4.13.1"
|
||||
resolved "https://registry.yarnpkg.com/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-4.13.1.tgz#07de6d4dab80ec49231de1f1fbf658b4ad39b32c"
|
||||
@ -5915,6 +5922,11 @@ is-plain-obj@^1.0.0:
|
||||
resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
|
||||
integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4=
|
||||
|
||||
is-plain-obj@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287"
|
||||
integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==
|
||||
|
||||
is-plain-object@^2.0.3, is-plain-object@^2.0.4:
|
||||
version "2.0.4"
|
||||
resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
|
||||
@ -6685,6 +6697,13 @@ mdn-data@2.0.14:
|
||||
resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50"
|
||||
integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==
|
||||
|
||||
merge-options@^3.0.4:
|
||||
version "3.0.4"
|
||||
resolved "https://registry.yarnpkg.com/merge-options/-/merge-options-3.0.4.tgz#84709c2aa2a4b24c1981f66c179fe5565cc6dbb7"
|
||||
integrity sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==
|
||||
dependencies:
|
||||
is-plain-obj "^2.1.0"
|
||||
|
||||
merge-stream@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1"
|
||||
@ -8347,6 +8366,14 @@ react-native-size-matters@^0.3.1:
|
||||
resolved "https://registry.yarnpkg.com/react-native-size-matters/-/react-native-size-matters-0.3.1.tgz#24d0cfc335a2c730f6d58bd7b43ea5a41be4b49f"
|
||||
integrity sha512-mKOfBLIBFBcs9br1rlZDvxD5+mAl8Gfr5CounwJtxI6Z82rGrMO+Kgl9EIg3RMVf3G855a85YVqHJL2f5EDRlw==
|
||||
|
||||
react-native-storage@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/react-native-storage/-/react-native-storage-1.0.1.tgz#2c493875ff76ec301987c951a8302f3a54381241"
|
||||
integrity sha512-fXT2+zhkfHj3E1/ekbymO8JwcDGgnxeWBiNIa7Al14qB4i3MSOF88nyjIRuTyBsEwZl/f6JG7l+zwd/20+bmlA==
|
||||
dependencies:
|
||||
opencollective "^1.0.3"
|
||||
opencollective-postinstall "^2.0.2"
|
||||
|
||||
react-native-svg-uri@^1.2.3:
|
||||
version "1.2.3"
|
||||
resolved "https://registry.yarnpkg.com/react-native-svg-uri/-/react-native-svg-uri-1.2.3.tgz#2f67f30564068a0fee68a751845332a5185a1aab"
|
||||
|
Loading…
Reference in New Issue
Block a user