InitialCommit
0
._sync_d9887ec3805a.db-wal
Normal file
7
.expo-shared/assets.json
Normal file
@ -0,0 +1,7 @@
|
||||
{
|
||||
"e982607dc7c471e1e6dd358ecab4ec93f2211576b8b232652ee6e255c3c5c33f": true,
|
||||
"7adc6cdde1172c646f8dda7fcb1186d148e59e6d2a40774bd7e03281a653f19c": true,
|
||||
"d64a5b98ad82d1490c6b4000a35d16df16172ebee8c51369a3e09f0e7b77c286": true,
|
||||
"bd33a28432d03bcee909287ce4fe2cc43e2eda700d603ca00c4493272b82bdab": true,
|
||||
"89ed26367cdb9b771858e026f2eb95bfdb90e5ae943e716575327ec325f39c44": true
|
||||
}
|
7
.gitignore
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
node_modules/**/*
|
||||
.expo/*
|
||||
npm-debug.*
|
||||
*.jks
|
||||
*.p12
|
||||
*.key
|
||||
*.mobileprovision
|
1
.watchmanconfig
Normal file
@ -0,0 +1 @@
|
||||
{}
|
49
App.js
Normal file
@ -0,0 +1,49 @@
|
||||
import React from 'react';
|
||||
import { NavigationContainer } from '@react-navigation/native';
|
||||
import { createStackNavigator,TransitionPresets ,} from '@react-navigation/stack';
|
||||
import { createBottomTabNavigator } from '@react-navigation/bottom-tabs';
|
||||
import { AntDesign, Ionicons } from '@expo/vector-icons';
|
||||
import {ToastAndroid, Platform, UIManager,} from 'react-native';
|
||||
import { UpdateAsync } from './UpdateAsync.js';
|
||||
import Apps from './Apps';
|
||||
import tndView from './ndView';
|
||||
import trainbase from './trainbaseview';
|
||||
import howto from './howto';
|
||||
import menu from './menu';
|
||||
import TestArea from './TestArea.js';
|
||||
const Stack = createStackNavigator();
|
||||
const Tab = createBottomTabNavigator();
|
||||
const navigationRef = React.createRef();
|
||||
if (Platform.OS === 'android') {
|
||||
if (UIManager.setLayoutAnimationEnabledExperimental) {
|
||||
UIManager.setLayoutAnimationEnabledExperimental(true);
|
||||
}
|
||||
}
|
||||
export default class App extends React.Component{
|
||||
render(){
|
||||
UpdateAsync();
|
||||
var platform = Platform.OS === "android" ? 70 : 50;
|
||||
return(
|
||||
<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="home" component={tndView} options={{ tabBarLabel: '運行情報',headerTransparent:true,gestureEnabled:true,tabBarIcon: ({ color, size }) => (<Ionicons name="md-train" size={32}/>),}}/>
|
||||
|
||||
</Tab.Navigator>
|
||||
</NavigationContainer>
|
||||
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
function top(){
|
||||
return(
|
||||
<Stack.Navigator>
|
||||
<Stack.Screen name="Apps" component={Apps} options={{headerShown: false,gestureEnabled:true,headerTransparent:true,}}/>
|
||||
<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.Navigator>
|
||||
)
|
||||
}
|
132
Apps.js
Normal file
@ -0,0 +1,132 @@
|
||||
import React from 'react';
|
||||
import {View, Platform} from 'react-native';
|
||||
import {WebView} from 'react-native-webview';
|
||||
import Constants from 'expo-constants';
|
||||
import StatusbarDetect from './StatusbarDetect';
|
||||
var Status = StatusbarDetect();
|
||||
export var webview = null;
|
||||
export default function Apps ({ navigation: { navigate } }) {
|
||||
var urlcache="";
|
||||
return (
|
||||
<View style={{height:"100%",paddingTop: Constants.statusBarHeight,}}>
|
||||
{Status}
|
||||
<WebView
|
||||
useWebKit={true}
|
||||
ref={ref => (this.webview = ref)}
|
||||
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}
|
||||
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');
|
||||
this.webview.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});
|
||||
this.webview.goBack();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
injectedJavaScript={js}/>
|
||||
</View>
|
||||
);
|
||||
}
|
||||
const js = `
|
||||
var observer = new MutationObserver(function(){
|
||||
console.log(elem);
|
||||
});
|
||||
const elem = document.querySelector('#modal_content');
|
||||
console.log(elem);
|
||||
const config = {
|
||||
attributes: true,
|
||||
childList: true,
|
||||
characterData: true
|
||||
};
|
||||
|
||||
observer.observe(elem, config);
|
||||
|
||||
document.getElementById('headerStr').style.display = 'none';
|
||||
document.getElementById('modal_info').style.display = 'none';
|
||||
document.getElementById('header').style.height = '50px';
|
||||
document.getElementById('main').style.paddingTop = '54px';
|
||||
document.querySelector('#header a').style.display = 'none';
|
||||
after();
|
||||
|
||||
function after(){
|
||||
try {
|
||||
document.getElementById('refreshIcon').click();
|
||||
var elements = document.querySelectorAll('[onclick]');
|
||||
for (var index = 0; index < elements.length; index++) {
|
||||
var element = elements[index];
|
||||
if(element.getAttribute('onclick').indexOf('ShowTrainTimeInfo') != -1){
|
||||
var test = element.getElementsByTagName("p");
|
||||
var test3 = element.getAttribute('onclick').split('"');
|
||||
var HTrain = "\\n試運転";
|
||||
var RTrain = "\\n回送";
|
||||
var STrain = "\\n臨時列車";
|
||||
var WTrain = "ワンマン\\n";
|
||||
var 海 = "(海経由)";
|
||||
var 内 = "(内子経由)";
|
||||
var reg1 = new RegExp(/^4[1-9]\\d\\d[DM]$/);
|
||||
var reg2 = new RegExp(/^5[1-9]\\d\\d[DM]$/);
|
||||
var 海1 = new RegExp(/^49[0-4]\\dD$/);
|
||||
var 海2 = new RegExp(/^9[0-4]\\dD$/);
|
||||
var 内1 = new RegExp(/^46\\d\\dD$/);
|
||||
var 内2 = new RegExp(/^6\\d\\dD$/);
|
||||
var flag=false;
|
||||
test[0].innerText = test[0].innerText+test3[1];
|
||||
if(reg1.test(test3[1]) || reg2.test(test3[1])){
|
||||
test[0].innerText = WTrain+test[0].innerText;
|
||||
flag=true;
|
||||
}
|
||||
if(海1.test(test3[1]) || 海2.test(test3[1])){
|
||||
test[0].innerText = 海+(flag ? "" : "\\n")+test[0].innerText;
|
||||
}
|
||||
if(内1.test(test3[1]) || 内2.test(test3[1])){
|
||||
test[0].innerText = 内+(flag ? "" : "\\n")+test[0].innerText;
|
||||
}
|
||||
if(test3[1].indexOf("H") != -1){
|
||||
test[0].innerText = test[0].innerText+HTrain;
|
||||
}
|
||||
else if(test3[1].indexOf("R") != -1){
|
||||
test[0].innerText = test[0].innerText+RTrain;
|
||||
}
|
||||
else if(test3[1].indexOf("S") != -1){
|
||||
test[0].innerText = test[0].innerText+STrain;
|
||||
}
|
||||
}
|
||||
}
|
||||
try{
|
||||
document.querySelector('#pMENU_2').style.borderStyle='solid';
|
||||
document.querySelector('#pMENU_2').style.borderColor='#00d3e8';
|
||||
document.querySelector('#pMENU_2').style.borderWidth='2px';
|
||||
document.querySelector('#pMENU_2').style.borderRadius='10%';
|
||||
document.querySelector('#pMENU_3').style.borderStyle='solid';
|
||||
document.querySelector('#pMENU_3').style.borderColor='#00d3e8';
|
||||
document.querySelector('#pMENU_3').style.borderWidth='2px';
|
||||
document.querySelector('#pMENU_3').style.borderRadius='10%';
|
||||
document.querySelectorAll('#pMENU_2 div').forEach((d)=>{
|
||||
d.style.padding = '10px';
|
||||
});
|
||||
document.querySelectorAll('#pMENU_3 div').forEach((d)=>{
|
||||
d.style.padding = '10px';
|
||||
});
|
||||
}catch(e){
|
||||
alert("にゃー");
|
||||
}
|
||||
|
||||
} catch (e) {
|
||||
}
|
||||
setTimeout(after, 10000);
|
||||
}
|
||||
`;
|
16
StatusbarDetect.js
Normal file
@ -0,0 +1,16 @@
|
||||
import React from 'react';
|
||||
import {Platform, StatusBar, View} from 'react-native';
|
||||
|
||||
export default function StatusbarDetect() {
|
||||
if(Platform.OS == "ios"){
|
||||
return (
|
||||
<StatusBar barStyle="dark-content"/>
|
||||
);
|
||||
}
|
||||
else if(Platform.OS == "android"){
|
||||
return (
|
||||
<View/>
|
||||
);
|
||||
}
|
||||
|
||||
}
|
49
TestArea.js
Normal file
@ -0,0 +1,49 @@
|
||||
import React, { Component, useEffect, useState } from 'react';
|
||||
import {StatusBar,View,ScrollView,Linking,Text } from 'react-native';
|
||||
import Constants from 'expo-constants';
|
||||
import { ListItem } from 'react-native-elements';
|
||||
import Icon from 'react-native-vector-icons/Entypo';
|
||||
import StatusbarDetect from './StatusbarDetect';
|
||||
var Status = StatusbarDetect();
|
||||
let a=[];
|
||||
export default function TestArea(props) {
|
||||
const [data,setdata] = useState(null);
|
||||
useEffect(()=>{
|
||||
data==null ? test().then(res=>{
|
||||
//console.log(res);
|
||||
setdata(res);
|
||||
}):null
|
||||
},[data])
|
||||
return (
|
||||
<View style={{height:"100%",paddingTop: Constants.statusBarHeight,}}>
|
||||
{Status}
|
||||
<ScrollView>
|
||||
<Text>TEST AREA!!</Text>
|
||||
{data}
|
||||
</ScrollView>
|
||||
</View>
|
||||
);
|
||||
}
|
||||
|
||||
async function test(){
|
||||
return fetch('https://train.jr-shikoku.co.jp/g?arg1=train&arg2=train', {
|
||||
headers: {
|
||||
'authority': 'train.jr-shikoku.co.jp',
|
||||
'cache-control': 'no-cache',
|
||||
'pragma': 'no-cache',
|
||||
'if-modified-since': 'Thu, 01 Jun 1970 00:00:00 GMT',
|
||||
'accept': '*/*',
|
||||
'sec-fetch-site': 'same-origin',
|
||||
'sec-fetch-mode': 'cors',
|
||||
'referer': 'https://train.jr-shikoku.co.jp/sp.html'
|
||||
}
|
||||
}).then(res=>res.json()).then(D=>{
|
||||
let d =[];
|
||||
D.forEach(element => {
|
||||
console.log(element)
|
||||
d.push(<ListItem title={"Direction:"+element.Direction+" Index:"+element.Index+" Line:"+element.Line+" Pos:"+element.Pos+" PosNum:"+element.PosNum+" TrainNum:"+element.TrainNum+" Type:"+element.Type+" Delay:"+element.delay}/>);
|
||||
});
|
||||
a=d;
|
||||
return d;
|
||||
});
|
||||
}
|
24
UpdateAsync.js
Normal file
@ -0,0 +1,24 @@
|
||||
import { ToastAndroid, } from 'react-native';
|
||||
|
||||
import * as Updates from 'expo-updates';
|
||||
|
||||
|
||||
|
||||
|
||||
export function UpdateAsync(){
|
||||
try {
|
||||
async function test(){
|
||||
const update = await Updates.checkForUpdateAsync();
|
||||
if (update.isAvailable) {
|
||||
ToastAndroid.showWithGravityAndOffset('アプリのデータを更新しています。',ToastAndroid.LONG,ToastAndroid.BOTTOM,25,50,);
|
||||
await Updates.fetchUpdateAsync().then(function(){
|
||||
Updates.reloadAsync();
|
||||
});
|
||||
}
|
||||
else{}
|
||||
}
|
||||
test();
|
||||
}catch(e){
|
||||
ToastAndroid.showWithGravityAndOffset(e,ToastAndroid.LONG,ToastAndroid.BOTTOM,25,50,);
|
||||
}
|
||||
}
|
36
app.json
Normal file
@ -0,0 +1,36 @@
|
||||
{
|
||||
"expo": {
|
||||
"name": "JR四国運行状況",
|
||||
"slug": "jrshikoku",
|
||||
"privacy": "public",
|
||||
"platforms": [
|
||||
"ios",
|
||||
"android"
|
||||
],
|
||||
"version": "3.1",
|
||||
"orientation": "portrait",
|
||||
"icon": "./assets/icon.png",
|
||||
"splash": {
|
||||
"image": "./assets/splash.png",
|
||||
"resizeMode": "contain",
|
||||
"backgroundColor": "#00b8ff"
|
||||
},
|
||||
"updates": {
|
||||
"fallbackToCacheTimeout": 0
|
||||
},
|
||||
"assetBundlePatterns": [
|
||||
"**/*"
|
||||
],
|
||||
"ios": {
|
||||
"buildNumber": "13",
|
||||
"supportsTablet": true,
|
||||
"bundleIdentifier": "jrshikokuinfo.xprocess.hrkn"
|
||||
},
|
||||
"android": {
|
||||
"package": "jrshikokuinfo.xprocess.hrkn",
|
||||
"versionCode": 10,
|
||||
"permissions": [],
|
||||
"googleServicesFile": "./google-services.json"
|
||||
}
|
||||
}
|
||||
}
|
BIN
assets/compass1554366501.jpg
Normal file
After Width: | Height: | Size: 255 KiB |
BIN
assets/compass1554366502.jpg
Normal file
After Width: | Height: | Size: 362 KiB |
BIN
assets/compass1554366503.jpg
Normal file
After Width: | Height: | Size: 250 KiB |
BIN
assets/icon.png
Normal file
After Width: | Height: | Size: 56 KiB |
BIN
assets/icons.orig.png
Normal file
After Width: | Height: | Size: 2.9 KiB |
BIN
assets/icons.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
assets/splash.png
Normal file
After Width: | Height: | Size: 196 KiB |
BIN
assets/splash2.png
Normal file
After Width: | Height: | Size: 1.2 MiB |
BIN
assets/splashs.png
Normal file
After Width: | Height: | Size: 7.0 KiB |
BIN
assets/名称未設定.png
Normal file
After Width: | Height: | Size: 3.4 MiB |
BIN
assets/名称未設定.xcf
Normal file
6
babel.config.js
Normal file
@ -0,0 +1,6 @@
|
||||
module.exports = function(api) {
|
||||
api.cache(true);
|
||||
return {
|
||||
presets: ['babel-preset-expo'],
|
||||
};
|
||||
};
|
40
google-services.json
Normal file
@ -0,0 +1,40 @@
|
||||
{
|
||||
"project_info": {
|
||||
"project_number": "407139691461",
|
||||
"firebase_url": "https://trainfo-shikoku.firebaseio.com",
|
||||
"project_id": "trainfo-shikoku",
|
||||
"storage_bucket": "trainfo-shikoku.appspot.com"
|
||||
},
|
||||
"client": [
|
||||
{
|
||||
"client_info": {
|
||||
"mobilesdk_app_id": "1:407139691461:android:b6824b1f6c962d4d",
|
||||
"android_client_info": {
|
||||
"package_name": "jrshikokuinfo.xprocess.hrkn"
|
||||
}
|
||||
},
|
||||
"oauth_client": [
|
||||
{
|
||||
"client_id": "407139691461-jo0nh70n7m93p049rkak2sjamb5uti6p.apps.googleusercontent.com",
|
||||
"client_type": 3
|
||||
}
|
||||
],
|
||||
"api_key": [
|
||||
{
|
||||
"current_key": "AIzaSyDnUf3CaZXyuJe_EkGK-UV3zRoBEPCcSWA"
|
||||
}
|
||||
],
|
||||
"services": {
|
||||
"appinvite_service": {
|
||||
"other_platform_oauth_client": [
|
||||
{
|
||||
"client_id": "407139691461-jo0nh70n7m93p049rkak2sjamb5uti6p.apps.googleusercontent.com",
|
||||
"client_type": 3
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"configuration_version": "1"
|
||||
}
|
16
howto.js
Normal file
@ -0,0 +1,16 @@
|
||||
const WEBVIEW = "WEBVIEW";
|
||||
import React, { Component } from 'react';
|
||||
import { StatusBar,View} from 'react-native';
|
||||
import {WebView} from 'react-native-webview';
|
||||
export default class howto extends Component {
|
||||
render() {
|
||||
return (
|
||||
<View style={{height:"100%"}}>
|
||||
<View style={{alignItems:"center"}}>
|
||||
<View style={{ width:60,height:8,marginTop:15,marginBottom:10, backgroundColor: "gray", padding: 0, borderRadius: 20, borderWidth: 1, borderColor: "gray", overflow: "hidden"}}/>
|
||||
</View>
|
||||
<WebView useWebKit={true} source={{uri: 'https://train.jr-shikoku.co.jp/usage.htm'}}/>
|
||||
</View>
|
||||
);
|
||||
}
|
||||
}
|
49
menu.js
Normal file
@ -0,0 +1,49 @@
|
||||
import React, { Component } from 'react';
|
||||
import {StatusBar,View,ScrollView,Linking,Text } from 'react-native';
|
||||
import Constants from 'expo-constants';
|
||||
import { ListItem } from 'react-native-elements';
|
||||
import Icon from 'react-native-vector-icons/Entypo';
|
||||
import StatusbarDetect from './StatusbarDetect';
|
||||
var Status = StatusbarDetect();
|
||||
import { useNavigation } from '@react-navigation/native';
|
||||
export default function(props) {
|
||||
const navigation = useNavigation();
|
||||
|
||||
return <Menu {...props} navigation={navigation} />;
|
||||
}
|
||||
export class Menu extends React.Component {
|
||||
constructor(props){
|
||||
super(props);
|
||||
this.state={
|
||||
count:0,
|
||||
}
|
||||
}
|
||||
|
||||
render() {
|
||||
const { navigation } = this.props;
|
||||
return (
|
||||
<View style={{height:"100%",paddingTop: Constants.statusBarHeight,}}>
|
||||
{Status}
|
||||
<ScrollView>
|
||||
<Text>JR四国</Text>
|
||||
<ListItem title={"JR四国サイトトップ"} roundAvatar rightIcon={<Icon name="chevron-right" size={20}/>} leftIcon={<Icon name="globe" size={20} />} onPress={()=>Linking.openURL("https://www.jr-shikoku.co.jp")}/>
|
||||
<ListItem title={"コロナウイルスに関するお知らせ"} roundAvatar rightIcon={<Icon name="chevron-right" size={20}/>} leftIcon={<Icon name="new" size={20} />} onPress={()=>Linking.openURL("http://www.jr-shikoku.co.jp/02_information/suspension/index.html")}/>
|
||||
<ListItem title={"駅/鉄道情報"} roundAvatar rightIcon={<Icon name="chevron-right" size={20}/>} leftIcon={<Icon name="map" size={20} />} onPress={()=>Linking.openURL("https://www.jr-shikoku.co.jp/01_trainbus/sp/")}/>
|
||||
<ListItem title={"列車空席案内(サイバーステーション)"} roundAvatar rightIcon={<Icon name="chevron-right" size={20}/>} leftIcon={<Icon name="browser" size={20} />} onPress={()=>Linking.openURL("http://www.jr.cyberstation.ne.jp/")}/>
|
||||
<ListItem title={"JR四国 東京営業情報【公式】"} roundAvatar rightIcon={<Icon name="chevron-right" size={20}/>} leftIcon={<Icon name="twitter" size={20} />} onPress={()=>Linking.openURL("https://twitter.com/JRshikoku_tokyo")}/>
|
||||
<ListItem title={"JR四国運行情報Twitter"} roundAvatar rightIcon={<Icon name="chevron-right" size={20}/>} leftIcon={<Icon name="twitter" size={20} />} onPress={()=>Linking.openURL("https://twitter.com/jr_shikoku_info")}/>
|
||||
<ListItem title={"JR四国いそうろう妖精 すまいるえきちゃん♡【公式】"} roundAvatar rightIcon={<Icon name="chevron-right" size={20}/>} leftIcon={<Icon name="twitter" size={20} />} onPress={()=>Linking.openURL("https://twitter.com/Smile_Eki_Chan")}/>
|
||||
<ListItem title={"JR四国デザインPT♡"} roundAvatar rightIcon={<Icon name="chevron-right" size={20}/>} leftIcon={<Icon name="twitter" size={20} />} onPress={()=>Linking.openURL("https://twitter.com/JR_Shikoku_DPT")}/>
|
||||
<ListItem title={"JR四国デザインPT弐号◇"} roundAvatar rightIcon={<Icon name="chevron-right" size={20}/>} leftIcon={<Icon name="twitter" size={20} />} onPress={()=>Linking.openURL("https://twitter.com/PT2nd_Yuki")}/>
|
||||
|
||||
<Text>このアプリについて</Text>
|
||||
<ListItem title={"広報Twitter"} roundAvatar rightIcon={<Icon name="chevron-right" size={20}/>} leftIcon={<Icon name="twitter" size={20} />} onPress={()=>{this.state.count < 10 ? (Linking.openURL("https://twitter.com/Xprocess_main"),this.setState({count: this.state.count+1})):navigation.navigate("test")}}/>
|
||||
</ScrollView>
|
||||
<Text>2021/4/1 >> ボタン押しにくくね?と思った箇所を改善しました!!</Text>
|
||||
<Text>バージョン3.2 最終データ更新:2021/4/1</Text>
|
||||
|
||||
</View>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
23
ndView.js
Normal file
@ -0,0 +1,23 @@
|
||||
import React, { Component } from 'react';
|
||||
import { StatusBar,View,Linking,Text} from 'react-native';
|
||||
import {WebView} from 'react-native-webview';
|
||||
import Constants from 'expo-constants';
|
||||
import { TouchableOpacity } from 'react-native-gesture-handler';
|
||||
export default function tndView () {
|
||||
return (
|
||||
<View style={{backgroundColor: '#309AC3', height:"100%",paddingTop: Constants.statusBarHeight,}}>
|
||||
<WebView
|
||||
useWebKit={true}
|
||||
source={{uri: 'https://www.jr-shikoku.co.jp/info/'}}
|
||||
originWhitelist={['https://www.jr-shikoku.co.jp']}
|
||||
mixedContentMode={'compatibility'}
|
||||
javaScriptEnabled={true}
|
||||
injectedJavaScript={jsa}/>
|
||||
</View>
|
||||
);
|
||||
}
|
||||
const jsa = `
|
||||
document.querySelector('.sitettl').style.display = 'none';
|
||||
document.querySelector('.attention').style.display = 'none';
|
||||
`;
|
||||
|
12485
package-lock.json
generated
Normal file
38
package.json
Normal file
@ -0,0 +1,38 @@
|
||||
{
|
||||
"main": "node_modules/expo/AppEntry.js",
|
||||
"scripts": {
|
||||
"start": "expo start",
|
||||
"android": "expo start --android",
|
||||
"ios": "expo start --ios",
|
||||
"eject": "expo eject"
|
||||
},
|
||||
"dependencies": {
|
||||
"@expo/vector-icons": "^10.2.1",
|
||||
"@react-native-community/masked-view": "0.1.6",
|
||||
"@react-navigation/bottom-tabs": "^5.9.2",
|
||||
"@react-navigation/native": "^5.7.6",
|
||||
"@react-navigation/stack": "^5.9.3",
|
||||
"expo": "^37.0.12",
|
||||
"expo-font": "~8.1.0",
|
||||
"expo-updates": "~0.2.1",
|
||||
"firebase": "7.9.0",
|
||||
"native-base": "^2.13.14",
|
||||
"npm": "^6.14.8",
|
||||
"pushy-react-native": "^1.0.15",
|
||||
"react": "16.9.0",
|
||||
"react-native": "https://github.com/expo/react-native/archive/sdk-37.0.0.tar.gz",
|
||||
"react-native-elements": "^1.2.7",
|
||||
"react-native-gesture-handler": "~1.6.0",
|
||||
"react-native-reanimated": "~1.7.0",
|
||||
"react-native-responsive-screen": "^1.4.1",
|
||||
"react-native-router-flux": "^4.0.6",
|
||||
"react-native-safe-area-context": "0.7.3",
|
||||
"react-native-screens": "~2.2.0",
|
||||
"react-native-vector-icons": "^6.7.0",
|
||||
"react-native-webview": "8.1.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"babel-preset-expo": "^8.3.0"
|
||||
},
|
||||
"private": true
|
||||
}
|
14
register-service-worker.js
Normal file
@ -0,0 +1,14 @@
|
||||
/* eslint-env browser */
|
||||
|
||||
if ('serviceWorker' in navigator) {
|
||||
window.addEventListener('load', function() {
|
||||
navigator.serviceWorker
|
||||
.register('/expo-service-worker.js', { scope: '/' })
|
||||
.then(function(info) {
|
||||
// console.info('Registered service-worker', info);
|
||||
})
|
||||
.catch(function(error) {
|
||||
console.info('Failed to register service-worker', error);
|
||||
});
|
||||
});
|
||||
}
|
14
trainbaseview.js
Normal file
@ -0,0 +1,14 @@
|
||||
const WEBVIEW = "WEBVIEW";
|
||||
import React, { Component } from 'react';
|
||||
import { StatusBar,View} from 'react-native';
|
||||
import {WebView} from 'react-native-webview';
|
||||
export default function trainbase({route, navigation}) {
|
||||
const { info } = route.params;
|
||||
return (
|
||||
<View style={{height:"100%"}}>
|
||||
<WebView source={{uri: info}} useWebKit={true} originWhitelist={['https://train.jr-shikoku.co.jp']}injectedJavaScript={jss}/>
|
||||
</View>
|
||||
);
|
||||
}
|
||||
|
||||
const jss = `document.getElementById('Footer').style.display = 'none';`;
|
14
web-build/register-service-worker.js
Normal file
@ -0,0 +1,14 @@
|
||||
/* eslint-env browser */
|
||||
|
||||
if ('serviceWorker' in navigator) {
|
||||
window.addEventListener('load', function() {
|
||||
navigator.serviceWorker
|
||||
.register('/expo-service-worker.js', { scope: '/' })
|
||||
.then(function(info) {
|
||||
// console.info('Registered service-worker', info);
|
||||
})
|
||||
.catch(function(error) {
|
||||
console.info('Failed to register service-worker', error);
|
||||
});
|
||||
});
|
||||
}
|