23 Commits

Author SHA1 Message Date
harukin-OneMix4
4f540d89c7 LEDと看板のロジック変更 2023-03-02 19:42:46 +09:00
harukin-OneMix4
2e535c2685 locationAndFavoriteの位置変更 2023-03-02 18:53:08 +09:00
harukin-OneMix4
23927a3f16 menuの固定データを分割 2023-03-02 18:31:59 +09:00
harukin-OneMix4
d45b6aee0e fixed yarn.lock 2023-03-02 17:43:29 +09:00
harukin-OneMix4
abe8334b26 Merge commit '64538e33f317c6fe395859673922f63c2e3b0514' into develop 2023-03-02 17:42:01 +09:00
harukin-OneMix4
64538e33f3 coreシステムのアップグレード 2023-03-02 17:36:21 +09:00
harukin-OneMix4
942b90e6d2 Merge commit '9d751866913f6fb743ae3e43a580d7624b333864' into develop 2023-02-22 20:29:40 +09:00
harukin-OneMix4
9d75186691 iOSのLEDボトム文字列が変な場所にある問題を修正 2023-02-22 20:29:28 +09:00
harukin-OneMix4
9959fbe5c9 LEDの文字サイズ調整 2023-02-22 20:27:30 +09:00
harukin-OneMix4
0230f5409a iOSで→が真ん中に来なかった問題を修正 2023-02-22 20:13:16 +09:00
harukin-OneMix4
1c67d1d486 iosでもlottieアニメが動作するように修正 2023-02-22 20:03:39 +09:00
harukin-DeskMini
97d05571e5 Merge commit '655f174321ccfe35b1631adf568f590dc6286b03' into develop 2023-02-06 12:06:30 +09:00
harukin-DeskMini
655f174321 ふぁぼが空の時にクラッシュしていた問題を修正 2023-02-06 12:06:21 +09:00
harukin-DeskMini
3137d50e24 Merge commit 'a7347a18163dfd8c29f99d1583e5429f9625423a' into develop 2023-02-06 11:25:30 +09:00
harukin-DeskMini
74864da293 Merge commit '815734eb07186bf15c58a3befd9b190fd2839170' into develop 2023-02-06 11:24:48 +09:00
harukin-DeskMini
4e90ecf132 ios beta publish 2023-02-06 11:20:43 +09:00
harukin-DeskMini
a7347a1816 バスのある駅でデータを出すボタンを設置 2023-02-06 03:22:02 +09:00
harukin-DeskMini
815734eb07 路線色の定義 2023-02-06 03:14:08 +09:00
harukin-DeskMini
369ae557c7 駅リストの管理に情報を追加/DetailView側に路線概要表示機能を追加 2023-02-05 17:07:57 +09:00
harukin-DeskMini
4c47a1684c Merge commit 'c2ca832b804afb3b5817afece0c98b4e9e504020' into develop 2023-02-05 05:03:31 +09:00
harukin-DeskMini
c2ca832b80 駅名標に不要な要素が残るバグを修正 2023-02-05 04:56:24 +09:00
harukin-DeskMini
5867ad3aa8 不要なタイミングで駅情報が消去されるバグを修正 2023-02-01 21:49:57 +09:00
harukin-DeskMini
ece076ad48 Merge commit '58340bb608aca83f50ea018fcbdd4f7e4043952c' into develop 2023-02-01 20:46:14 +09:00
14 changed files with 3831 additions and 16716 deletions

50
App.js
View File

@@ -46,10 +46,28 @@ export default function App() {
})
.catch((d) => console.log(d));
}, []);
const [busAndTrainData, setBusAndTrainData] = useState([]);
useEffect(() => {
AS.getItem("busAndTrain")
.then((d) => {
const returnData = JSON.parse(d);
setBusAndTrainData(returnData);
})
.catch((d) => {
fetch(
"https://script.google.com/macros/s/AKfycbw0UW6ZeCDgUYFRP0zxpc_Oqfy-91dBdbWv-cM8n3narKp14IyCd2wy5HW7taXcW7E/exec"
)
.then((d) => d.json())
.then((d) => {
setBusAndTrainData(d);
AS.setItem("busAndTrain", JSON.stringify(d));
});
});
}, []);
return (
<NavigationContainer name="Root" style={{ flex: 1 }}>
<Tab.Navigator>
<Tab.Navigator detachInactiveScreens={false}>
<Tab.Screen
name="login"
options={{
@@ -64,6 +82,7 @@ export default function App() {
{...props}
favoriteStation={favoriteStation}
setFavoriteStation={setFavoriteStation}
busAndTrainData={busAndTrainData}
/>
)}
</Tab.Screen>
@@ -81,6 +100,7 @@ export default function App() {
{...props}
favoriteStation={favoriteStation}
setFavoriteStation={setFavoriteStation}
busAndTrainData={busAndTrainData}
/>
)}
</Tab.Screen>
@@ -117,7 +137,12 @@ const initIcon = (name, type) => {
}
};
const Top = ({ navigation, favoriteStation, setFavoriteStation }) => {
const Top = ({
navigation,
favoriteStation,
setFavoriteStation,
busAndTrainData,
}) => {
const webview = useRef();
//地図用
@@ -151,6 +176,7 @@ const Top = ({ navigation, favoriteStation, setFavoriteStation }) => {
webview={webview}
favoriteStation={favoriteStation}
setFavoriteStation={setFavoriteStation}
busAndTrainData={busAndTrainData}
/>
)}
</Stack.Screen>
@@ -202,7 +228,24 @@ const Top = ({ navigation, favoriteStation, setFavoriteStation }) => {
</Stack.Navigator>
);
};
function MenuPage({ favoriteStation, setFavoriteStation }) {
function MenuPage({
navigation,
favoriteStation,
setFavoriteStation,
busAndTrainData,
}) {
useEffect(() => {
const unsubscribe = navigation.addListener("tabPress", (e) => {
AS.getItem("favoriteStation")
.then((d) => {
const returnData = JSON.parse(d);
setFavoriteStation(returnData);
})
.catch((d) => console.log(d));
});
return unsubscribe;
}, [navigation]);
return (
<Stack.Navigator>
<Stack.Screen
@@ -218,6 +261,7 @@ function MenuPage({ favoriteStation, setFavoriteStation }) {
{...props}
favoriteStation={favoriteStation}
setFavoriteStation={setFavoriteStation}
busAndTrainData={busAndTrainData}
/>
)}
</Stack.Screen>

View File

@@ -24,6 +24,7 @@ export default function Apps({
webview,
favoriteStation,
setFavoriteStation,
busAndTrainData,
}) {
const { navigate } = navigation;
var urlcache = "";
@@ -199,6 +200,7 @@ export default function Apps({
originalStationList={originalStationList}
favoriteStation={favoriteStation}
setFavoriteStation={setFavoriteStation}
busAndTrainData={busAndTrainData}
/>
</View>
);

View File

@@ -3,7 +3,10 @@
"name": "JR四国運行状況",
"slug": "jrshikoku",
"privacy": "public",
"platforms": ["ios", "android"],
"platforms": [
"ios",
"android"
],
"version": "4.5",
"orientation": "portrait",
"icon": "./assets/icon.png",
@@ -15,9 +18,11 @@
"updates": {
"fallbackToCacheTimeout": 0
},
"assetBundlePatterns": ["**/*"],
"assetBundlePatterns": [
"**/*"
],
"ios": {
"buildNumber": "23",
"buildNumber": "24",
"supportsTablet": true,
"bundleIdentifier": "jrshikokuinfo.xprocess.hrkn",
"config": {
@@ -27,13 +32,20 @@
"android": {
"package": "jrshikokuinfo.xprocess.hrkn",
"versionCode": 16,
"permissions": ["ACCESS_FINE_LOCATION"],
"permissions": [
"ACCESS_FINE_LOCATION"
],
"googleServicesFile": "./google-services.json",
"config": {
"googleMaps": {
"apiKey": "AIzaSyAmFb-Yj033bXZWlSzNrfq_0jc1PgRrWcE"
}
}
},
"extra": {
"eas": {
"projectId": "398abf60-57a7-11e9-970c-8f04356d08bf"
}
}
}
}

View File

@@ -0,0 +1,11 @@
export default {
Y: "#F5AC13",
U: "#F5AC13",
S: "#9AA7D7",
D: "#DC4586",
K: "#DC4586",
B: "#366481",
N: "#881F61",
T: "#87CA3B",
M: "#0071be",
};

View File

@@ -1,14 +1,24 @@
import React from "react";
import { View, Linking } from "react-native";
import React, { useState, useEffect } from "react";
import {
StatusBar,
View,
LayoutAnimation,
ScrollView,
Linking,
Text,
TouchableOpacity,
} from "react-native";
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";
export const StationDeteilView = (props) => {
const {
@@ -17,7 +27,19 @@ export const StationDeteilView = (props) => {
originalStationList,
favoriteStation,
setFavoriteStation,
busAndTrainData,
} = 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]);
return (
<ActionSheet
@@ -63,6 +85,15 @@ export const StationDeteilView = (props) => {
/>
</View>
)}
{currentStation &&
currentStation.map((d) => (
<NexPreStationLine
currentStation={d}
originalStationList={originalStationList}
favoriteStation={favoriteStation}
setFavoriteStation={setFavoriteStation}
/>
))}
{currentStation && (
<View style={{ flexDirection: "row" }}>
{!currentStation[0].JrHpUrl || (
@@ -98,7 +129,17 @@ export const StationDeteilView = (props) => {
Linking.openURL(currentStation[0].StationMap)
}
>
GoogleMap
Map
</TicketBox>
)}
{!trainBus || (
<TicketBox
backgroundColor={"#CE5C00"}
icon={<Ionicons name="bus" color="white" size={50} />}
flex={1}
onPressButton={() => Linking.openURL(trainBus.address)}
>
平行バス
</TicketBox>
)}
</View>
@@ -108,3 +149,226 @@ export const StationDeteilView = (props) => {
</ActionSheet>
);
};
const StationName = (props) => {
const { stringData, ss } = props;
return (
<View style={ss}>
<Text style={styleSheet.下枠駅名}>{stringData.Station_JP}</Text>
<Text style={styleSheet.下枠駅名}>{stringData.Station_EN}</Text>
</View>
);
};
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 (
<View
style={{
height: 50,
backgroundColor: lineName
? lineColorList[lineName.split("[")[1].replace("]", "")]
: "red",
flexDirection: "row",
alignContent: "center",
alignItems: "center",
}}
>
<View style={styleSheet.下枠フレーム}>
{preStation ? (
<>
<Text style={styleSheet.下枠左右マーク}></Text>
{preStation.StationNumber ? (
<View style={styleSheet.下枠駅ナンバー}>
<View style={{ flex: 1 }} />
<Text
style={{
fontSize: parseInt("10%"),
color: "white",
}}
>
{preStation.StationNumber}
</Text>
<View style={{ flex: 1 }} />
</View>
) : (
<></>
)}
<StationName
stringData={preStation}
ss={{ flex: 1, alignItems: "flex-start" }}
/>
</>
) : (
<></>
)}
</View>
<Text
style={{
fontSize: parseInt("10%"),
color: "white",
textAlign: "center",
}}
>
{lineName &&
lineName
.split("(")
.map((d, index) => (index == 1 ? "(" + d : d))
.join("\n")}
</Text>
<View style={styleSheet.下枠フレーム}>
{nexStation ? (
<>
<StationName
stringData={nexStation}
ss={{ flex: 1, alignItems: "flex-end" }}
/>
{nexStation.StationNumber ? (
<View style={styleSheet.下枠駅ナンバー}>
<View style={{ flex: 1 }} />
<Text style={{ fontSize: parseInt("15%"), color: "white" }}>
{nexStation.StationNumber}
</Text>
<View style={{ flex: 1 }} />
</View>
) : (
<></>
)}
<Text style={styleSheet.下枠左右マーク}></Text>
</>
) : (
<></>
)}
</View>
</View>
);
};
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",
},
};

View File

@@ -34,7 +34,6 @@ export default function FavoriteList({
{favoriteStation
.filter((d) => d[0].StationMap)
.map((currentStation) => {
console.log(currentStation);
return (
<ListItem
onPress={() => {

View File

@@ -138,7 +138,6 @@ export default function LED_vision(props) {
});
return { train: d, time: a.time, lastStation: a.lastStation };
});
console.log(returnData);
return returnData.sort((a, b) => {
switch (true) {
case parseInt(a.time.split(":")[0]) < parseInt(b.time.split(":")[0]):
@@ -280,7 +279,7 @@ const Footer = ({
setFinalSwitch,
}) => {
return (
<View style={{ flexDirection: "row", padding: 10 }}>
<View style={{ flexDirection: "row", padding: 10, alignItems: "center" }}>
<Text
style={{
alignItems: "center",
@@ -404,7 +403,7 @@ const TrainName = ({ train, trainIDSwitch, d, getTrainType }) => {
<View style={{ flex: 9 }}>
<Text
style={{
fontSize: trainName.length > 6 ? 15 : 20,
fontSize: trainName.length > 6 ? parseInt("13%") : parseInt("18%"),
color: getTrainType.color,
fontWeight: "bold",
}}
@@ -422,7 +421,8 @@ const LastStation = ({ d }) => {
<View style={{ flex: 4, flexDirection: "row" }}>
<Text
style={{
fontSize: d.lastStation.length > 4 ? 15 : 20,
fontSize:
d.lastStation.length > 4 ? parseInt("13%") : parseInt("18%"),
color: "white",
fontWeight: "bold",
}}
@@ -437,7 +437,7 @@ const DependTime = ({ d }) => {
<View style={{ flex: 3 }}>
<Text
style={{
fontSize: 20,
fontSize: parseInt("18%"),
color: "white",
fontWeight: "bold",
}}
@@ -486,9 +486,10 @@ const StatusAndDelay = ({ currentTrain, d, props, trainDescriptionSwitch }) => {
<View style={{ flex: 4 }}>
<Text
style={{
fontSize: 20,
fontSize: parseInt("18%"),
color: "white",
fontWeight: "bold",
paddingLeft: 1,
}}
>
{status}
@@ -512,7 +513,7 @@ const Description = ({ train }) => {
<View style={{ flex: 4 }}>
<Text
style={{
fontSize: 20,
fontSize: parseInt("18%"),
color: "green",
fontWeight: "bold",
}}

View File

@@ -65,15 +65,15 @@ export default function Sign(props) {
}, [nexPrePosition]);
const getPreNextStation = (now) => {
const lineList = [
"予讃線",
"松宇線",
"伊予灘線",
"土讃線",
"窪川線",
"高徳線",
"徳島線",
"鳴門線",
"瀬戸大橋線",
"予讃線(高松-松山間)[Y]",
"予讃線(松山-宇和島間)[U]",
"予讃線/愛ある伊予灘線(向井原-伊予大洲間)[S]",
"土讃線(多度津-高知間)[D]",
"土讃線(高知-窪川間)[K]",
"高徳線(高松-徳島間)[T]",
"徳島線(徳島-阿波池田)[B]",
"鳴門線(池谷-鳴門間)[N]",
"瀬戸大橋線(宇多津-児島間)[M]",
];
let returnData;
lineList.forEach((d) => {
@@ -99,7 +99,6 @@ export default function Sign(props) {
style={{ position: "absolute", right: -15, top: -20 }}
onPress={() => {
if (testButtonStatus) {
lottieRef.current.play(35, 7);
const otherData = favoriteStation.filter((d) => {
const compare = JSON.stringify(d);
const current = JSON.stringify(currentStation);
@@ -112,9 +111,7 @@ export default function Sign(props) {
AS.setItem("favoriteStation", JSON.stringify(otherData));
setFavoriteStation(otherData);
} else {
lottieRef.current.play(7, 35);
let ret = favoriteStation;
console.log(currentStation);
ret.push(currentStation);
AS.setItem("favoriteStation", JSON.stringify(ret));
setFavoriteStation(ret);
@@ -122,12 +119,12 @@ export default function Sign(props) {
setTestButtonStatus(!testButtonStatus);
}}
>
<LottieView
<LottieDelayView
progress={testButtonStatus ? 1 : 0}
speed={1.4}
style={{ width: 80, height: 80 }}
source={require("../../assets/939-star.json")}
ref={lottieRef}
lottieRef={lottieRef}
loop={false}
/>
</TouchableOpacity>
@@ -141,14 +138,44 @@ export default function Sign(props) {
);
}
const LottieDelayView = ({
progress,
speed,
style,
source,
lottieRef,
loop,
}) => {
const [progressState, setProgressState] = useState(undefined);
useEffect(() => {
if (progress == 0) {
lottieRef.current.play(progressState !== undefined ? 35 : 7, 7);
} else {
lottieRef.current.play(progressState !== undefined ? 7 : 35, 35);
}
}, [progress]);
return (
<LottieView
progress={progressState}
speed={speed}
style={style}
source={source}
ref={lottieRef}
loop={loop}
onAnimationFinish={(isCanceled) => {
setProgressState(progress);
}}
/>
);
};
const NexPreStationLine = ({ nexStation, preStation }) => {
return (
<View style={styleSheet.下枠フレーム}>
<View style={styleSheet.下枠フレーム}>
{preStation && (
{preStation ? (
<>
<Text style={styleSheet.下枠左右マーク}></Text>
{preStation.StationNumber && (
{preStation.StationNumber ? (
<View style={styleSheet.下枠駅ナンバー}>
<View style={{ flex: 1 }} />
<Text
@@ -161,22 +188,26 @@ const NexPreStationLine = ({ nexStation, preStation }) => {
</Text>
<View style={{ flex: 1 }} />
</View>
) : (
<></>
)}
<StationName
stringData={preStation}
ss={{ flex: 1, alignItems: "flex-start" }}
/>
</>
) : (
<></>
)}
</View>
<View style={styleSheet.下枠フレーム}>
{nexStation && (
{nexStation ? (
<>
<StationName
stringData={nexStation}
ss={{ flex: 1, alignItems: "flex-end" }}
/>
{nexStation.StationNumber && (
{nexStation.StationNumber ? (
<View style={styleSheet.下枠駅ナンバー}>
<View style={{ flex: 1 }} />
<Text style={{ fontSize: parseInt("10%"), color: "white" }}>
@@ -184,9 +215,13 @@ const NexPreStationLine = ({ nexStation, preStation }) => {
</Text>
<View style={{ flex: 1 }} />
</View>
) : (
<></>
)}
<Text style={styleSheet.下枠左右マーク}></Text>
</>
) : (
<></>
)}
</View>
</View>
@@ -305,6 +340,7 @@ const styleSheet = {
flex: 1,
flexDirection: "row",
alignContent: "center",
alignItems: "center",
},
下枠左右マーク: {
fontWeight: "bold",

View File

@@ -19,15 +19,15 @@ import train_lang from "../assets/originData/train_lang";
let status = undefined;
export const lineList = [
"予讃線",
"松宇線",
"伊予灘線",
"土讃線",
"窪川線",
"高徳線",
"徳島線",
"鳴門線",
"瀬戸大橋線",
"予讃線(高松-松山間)[Y]",
"予讃線(松山-宇和島間)[U]",
"予讃線/愛ある伊予灘線(向井原-伊予大洲間)[S]",
"土讃線(多度津-高知間)[D]",
"土讃線(高知-窪川間)[K]",
"高徳線(高松-徳島間)[T]",
"徳島線(徳島-阿波池田)[B]",
"鳴門線(池谷-鳴門間)[N]",
"瀬戸大橋線(宇多津-児島間)[M]",
];
export const getStationList = async (props) => {
@@ -53,15 +53,15 @@ export const getStationList = async (props) => {
]).then((values) => {
let stationList = {};
[
stationList.予讃線,
stationList.松宇線,
stationList.伊予灘線,
stationList.土讃線,
stationList.窪川線,
stationList.高徳線,
stationList.徳島線,
stationList.鳴門線,
stationList.瀬戸大橋線,
stationList["予讃線(高松-松山間)[Y]"],
stationList["予讃線(松山-宇和島間)[U]"],
stationList["予讃線/愛ある伊予灘線(向井原-伊予大洲間)[S]"],
stationList["土讃線(多度津-高知間)[D]"],
stationList["土讃線(高知-窪川間)[K]"],
stationList["高徳線(高松-徳島間)[T]"],
stationList["徳島線(徳島-阿波池田)[B]"],
stationList["鳴門線(池谷-鳴門間)[N]"],
stationList["瀬戸大橋線(宇多津-児島間)[M]"],
stationList.駅間リスト,
stationList.日英対応表,
] = values;
@@ -115,52 +115,55 @@ export const getStationList = async (props) => {
return data;
});
};
stationList.予讃線 = addStationPosition(
concatBetweenStations(stationList.予讃線),
stationList["予讃線(高松-松山間)[Y]"] = addStationPosition(
concatBetweenStations(stationList["予讃線(高松-松山間)[Y]"]),
予讃線,
stationList.日英対応表
);
stationList.松宇線 = addStationPosition(
concatBetweenStations(stationList.松宇線),
stationList["予讃線(松山-宇和島間)[U]"] = addStationPosition(
concatBetweenStations(stationList["予讃線(松山-宇和島間)[U]"]),
予讃線,
stationList.日英対応表
);
stationList.伊予灘線 = addStationPosition(
concatBetweenStations(stationList.伊予灘線),
予讃線,
stationList.日英対応表
);
stationList.土讃線 = addStationPosition(
concatBetweenStations(stationList.土讃線),
stationList["予讃線/愛ある伊予灘線(向井原-伊予大洲間)[S]"] =
addStationPosition(
concatBetweenStations(
stationList["予讃線/愛ある伊予灘線(向井原-伊予大洲間)[S]"]
),
予讃線,
stationList.日英対応表
);
stationList["土讃線(多度津-高知間)[D]"] = addStationPosition(
concatBetweenStations(stationList["土讃線(多度津-高知間)[D]"]),
土讃線,
stationList.日英対応表
);
stationList.窪川線 = addStationPosition(
concatBetweenStations(stationList.窪川線),
stationList["土讃線(高知-窪川間)[K]"] = addStationPosition(
concatBetweenStations(stationList["土讃線(高知-窪川間)[K]"]),
土讃線,
stationList.日英対応表
);
stationList.高徳線 = addStationPosition(
concatBetweenStations(stationList.高徳線),
stationList["高徳線(高松-徳島間)[T]"] = addStationPosition(
concatBetweenStations(stationList["高徳線(高松-徳島間)[T]"]),
高徳線,
stationList.日英対応表
);
stationList.鳴門線 = addStationPosition(
concatBetweenStations(stationList.鳴門線),
stationList["鳴門線(池谷-鳴門間)[N]"] = addStationPosition(
concatBetweenStations(stationList["鳴門線(池谷-鳴門間)[N]"]),
鳴門線,
stationList.日英対応表
);
const tokushimaCurrent = addStationPosition(
concatBetweenStations(stationList.徳島線),
concatBetweenStations(stationList["徳島線(徳島-阿波池田)[B]"]),
徳島線,
stationList.日英対応表
);
stationList.徳島線 = [
stationList["徳島線(徳島-阿波池田)[B]"] = [
tokushimaCurrent[tokushimaCurrent.length - 1],
...tokushimaCurrent,
];
stationList.徳島線.pop();
stationList.瀬戸大橋線 = [
stationList["徳島線(徳島-阿波池田)[B]"].pop();
stationList["瀬戸大橋線(宇多津-児島間)[M]"] = [
{
Station_JP: "坂出",
Station_EN: "Sakaide",

690
menu.js
View File

@@ -1,4 +1,4 @@
import React, { useRef, useState, useEffect } from "react";
import React, { useRef, useState, useEffect, useMemo } from "react";
import Carousel from "react-native-snap-carousel";
import {
Platform,
@@ -41,12 +41,13 @@ export default function Menu(props) {
navigation: { navigate },
favoriteStation,
setFavoriteStation,
busAndTrainData,
} = props;
const JRSTraInfoEXAcSR = useRef(null);
const StationBoardAcSR = useRef(null);
const navigation = useNavigation();
//位置情報
//ここから位置情報
const [location, setLocation] = useState(null);
const [locationStatus, setLocationStatus] = useState(null);
useEffect(() => {
@@ -69,30 +70,16 @@ export default function Menu(props) {
if (locationStatus !== "granted") return () => {};
getCurrentPosition();
}, 5000);
//ここまで位置情報
//基礎駅情報取得
const [originalStationList, setOriginalStationList] = useState();
useEffect(() => {
getStationList().then(setOriginalStationList);
}, []);
const [locationAndFavorite, setLocationAndFavorite] = useState([]);
useEffect(() => {
if (!favoriteStation) return () => {};
const data = favoriteStation.filter((d) =>
JSON.stringify(d) === JSON.stringify(currentStation) ? false : true
);
setLocationAndFavorite(data);
}, [currentStation, favoriteStation]);
useEffect(() => {
if (!(selectedCurrentStation < favoriteStation.length)) {
setSelectedCurrentStation(favoriteStation.length - 1);
carouselRef.current.snapToItem(favoriteStation.length - 1);
}
}, [favoriteStation]);
const [stationName, setStationName] = useState(undefined);
const [currentStation, setCurrentStation] = useState(undefined);
//ここから現在地付近の駅情報整理
const [currentAreaStation, setCurrentAreaStation] = useState([]);
useEffect(() => {
if (!location) return () => {};
if (!originalStationList) return () => {};
@@ -122,16 +109,43 @@ export default function Menu(props) {
}, []);
LayoutAnimation.easeInEaseOut();
if (returnDataBase.length) {
let currentStation = currentStation == undefined ? [] : currentStation;
if (currentStation.toString() != returnDataBase.toString()) {
setCurrentStation(returnDataBase);
if (currentAreaStation.toString() != returnDataBase.toString()) {
setCurrentAreaStation(returnDataBase);
}
} else {
setCurrentStation(undefined);
StationBoardAcSR.current?.hide();
setCurrentAreaStation([]);
}
}, [location, originalStationList]);
//Favoriteから現在地を排除し現在地を最初に持ってくるバージョン
//const [locationAndFavorite, setLocationAndFavorite] = useState([]);
const locationAndFavorite = useMemo(() => {
const data = favoriteStation.filter((d) =>
JSON.stringify(d) === JSON.stringify(currentAreaStation) ? false : true
);
return [...currentAreaStation, ...data];
}, [currentAreaStation, favoriteStation]);
// useEffect(() => {
// if (!favoriteStation) return () => {};
// const data = favoriteStation.filter((d) =>
// JSON.stringify(d) === JSON.stringify(currentAreaStation) ? false : true
// );
// setLocationAndFavorite([...currentAreaStation, ...data]);
// }, [currentAreaStation, favoriteStation]);
const [selectedCurrentStation, setSelectedCurrentStation] = useState(0);
useEffect(() => {
console.log(selectedCurrentStation > locationAndFavorite.length);
if (locationAndFavorite.length == 0) {
//carouselRef.current.snapToItem(0);
setSelectedCurrentStation(0);
}
if (selectedCurrentStation > locationAndFavorite.length - 1) {
//carouselRef.current.snapToItem(locationAndFavorite.length - 1);
setSelectedCurrentStation(locationAndFavorite.length - 1);
}
}, [locationAndFavorite]);
const [count, setCount] = useState(0);
const [delayData, setDelayData] = useState(undefined);
const [getTime, setGetTime] = useState(new Date());
@@ -139,7 +153,6 @@ export default function Menu(props) {
const carouselRef = useRef();
const scrollRef = useRef();
const [isScroll, setIsScroll] = useState(true);
const [selectedCurrentStation, setSelectedCurrentStation] = useState(0);
useEffect(() => {
fetch(
@@ -162,33 +175,15 @@ export default function Menu(props) {
>
<StatusbarDetect />
<TitleBar />
<ScrollView ref={scrollRef} scrollEnabled={isScroll}>
<TopMenuButton />
<TextBox
backgroundColor="#0099CC"
flex={1}
onPressButton={() =>
Linking.openURL(
"https://www.jr-shikoku.co.jp/02_information/suspension/sp/"
)
}
>
<Text style={{ color: "white", fontWeight: "bold", fontSize: 18 }}>
新型コロナウイルスに関するお知らせ
</Text>
<Text style={{ color: "white", fontSize: 15 }}>
列車の運行計画混雑状況感染症対策への取り組み
</Text>
</TextBox>
<FixedContent
scrollRef={scrollRef}
isScroll={isScroll}
navigate={navigate}
>
<Carousel
ref={carouselRef}
layout={"default"}
data={
originalStationList &&
(currentStation
? [currentStation, ...locationAndFavorite]
: locationAndFavorite)
}
data={originalStationList && locationAndFavorite}
sliderWidth={wp("100%")}
itemWidth={wp("80%")}
enableMomentum
@@ -211,13 +206,11 @@ export default function Menu(props) {
);
}}
/>
{(currentStation || originalStationList) && (
{originalStationList && locationAndFavorite[selectedCurrentStation] && (
<LED_vision
station={
originalStationList &&
(currentStation
? [currentStation, ...locationAndFavorite]
: locationAndFavorite)[selectedCurrentStation][0]
locationAndFavorite[selectedCurrentStation][0]
}
navigate={navigate}
/>
@@ -229,297 +222,16 @@ export default function Menu(props) {
loadingDelayData={loadingDelayData}
delayData={delayData}
/>
<View style={{ flexDirection: "row" }}>
<TicketBox
backgroundColor={"#AD7FA8"}
icon={<Foundation name="ticket" color="white" size={50} />}
flex={1}
onPressButton={() =>
Linking.openURL("https://www.jr-eki.com/ticket/brand")
}
>
トクトク切符
</TicketBox>
<TicketBox
backgroundColor={"#8F5902"}
icon={<FontAwesome name="first-order" color="white" size={50} />}
flex={1}
onPressButton={() =>
Linking.openURL(
"https://www.jr-shikoku.co.jp/01_trainbus/event_train/sp/"
)
}
>
観光列車
</TicketBox>
<TicketBox
backgroundColor={"#888A85"}
icon={<Ionicons name="flag" color="white" size={50} />}
flex={1}
onPressButton={() =>
Linking.openURL("https://www.jr-eki.com/tour/brand")
}
>
旅行ツアー
</TicketBox>
</View>
<TextBox
backgroundColor="#0099CC"
flex={1}
onPressButton={() =>
Linking.openURL("https://www.jr-eki.com/smart-eki/index.html")
}
>
<Text style={{ color: "white", fontWeight: "bold", fontSize: 20 }}>
スマートえきちゃん
</Text>
<Text style={{ color: "white", fontSize: 18 }}>
JR四国のチケットレススマホアプリです
</Text>
</TextBox>
<TextBox
backgroundColor="#0099CC"
flex={1}
onPressButton={() =>
Linking.openURL(
"https://www.jr-shikoku.co.jp/sp/index.html#menu-box"
)
}
>
<Text style={{ color: "white", fontWeight: "bold", fontSize: 20 }}>
臨時列車などのお知らせ
</Text>
<Text style={{ color: "white", fontSize: 18 }}>
区間縮小計画運休イベント季節臨時列車など
</Text>
</TextBox>
<TextBox
backgroundColor="#0099CC"
flex={1}
onPressButton={() =>
Linking.openURL("https://www.jr-shikoku.co.jp/03_news/press/")
}
>
<Text style={{ color: "white", fontWeight: "bold", fontSize: 20 }}>
ニュースリリース
</Text>
<Text style={{ color: "white", fontSize: 18 }}>
公式プレス記事はこちら
</Text>
</TextBox>
<TextBox
backgroundColor="#0099CC"
flex={1}
onPressButton={() =>
Linking.openURL("https://www.jr-shikoku.co.jp/teiki/")
}
>
<Text style={{ color: "white", fontWeight: "bold", fontSize: 20 }}>
定期運賃計算
</Text>
<Text style={{ color: "white", fontSize: 18 }}>
通常/学生/快てき等はこちら
</Text>
</TextBox>
<TextBox
backgroundColor="#0099CC"
flex={1}
onPressButton={() =>
Linking.openURL("https://www.jr-shikoku.co.jp/04_company/group/sp/")
}
>
<Text style={{ color: "white", fontWeight: "bold", fontSize: 20 }}>
JR四国のお店サービス
</Text>
<Text style={{ color: "white", fontSize: 18 }}>
JR四国グループの施設をご案内
</Text>
</TextBox>
<View style={{ flexDirection: "row" }}>
<TouchableOpacity
style={{
flex: 1,
backgroundColor: "#729FCF",
borderColor: "#0099CC",
padding: 10,
borderWidth: 1,
margin: 2,
alignItems: "center",
}}
onPress={() => Linking.openURL("https://www.jr-odekake.net/smt/")}
>
<Text style={{ color: "white", fontWeight: "bold", fontSize: 20 }}>
時刻運賃計算
</Text>
<Text style={{ color: "white", fontWeight: "bold", fontSize: 18 }}>
(マイダイヤ)
</Text>
<Foundation name="yen" color="white" size={50} />
<Text style={{ color: "white" }}>
マイダイヤはJR西日本提供のサービスです
</Text>
</TouchableOpacity>
<TouchableOpacity
style={{
flex: 1,
backgroundColor: "#8AE234",
borderColor: "#0099CC",
padding: 10,
borderWidth: 1,
margin: 2,
alignItems: "center",
}}
onPress={() => Linking.openURL("tel:0570-00-4592")}
>
<Text style={{ color: "white", fontWeight: "bold", fontSize: 20 }}>
JR四国案内センター
</Text>
<Foundation name="telephone" color="white" size={50} />
<Text style={{ color: "white" }}>0570-00-4592</Text>
<Text style={{ color: "white" }}>(8:00~20:00 年中無休)</Text>
<Text style={{ color: "white" }}>(通話料がかかります)</Text>
</TouchableOpacity>
</View>
<View
style={{
backgroundColor: "#0099CC",
borderRadius: 10,
margin: 10,
borderColor: "black",
borderWidth: 2,
}}
>
<View
style={{ padding: 10, flexDirection: "row", alignItems: "center" }}
>
<MaterialCommunityIcons
name="twitter"
style={{ padding: 5 }}
color="white"
size={30}
/>
<Text style={{ fontSize: 30, fontWeight: "bold", color: "white" }}>
JR四国公式Twitter一族
</Text>
</View>
<View
style={{
padding: 10,
backgroundColor: "white",
borderBottomLeftRadius: 10,
borderBottomRightRadius: 10,
}}
>
{((data) =>
data.map((d) => (
<ListItem onPress={() => Linking.openURL(d.url)}>
<Text>{d.name}</Text>
<View style={{ flex: 1 }} />
<Icon name="chevron-right" size={20} />
</ListItem>
)))([
{
url: "https://twitter.com/JRshikoku_eigyo",
name: "JR四国営業部【公式】",
},
{
url: "https://twitter.com/JRshikoku_tokyo",
name: "JR四国 東京営業情報【公式】",
},
{
url: "https://twitter.com/JRshikoku_osaka",
name: "JR四国 大阪営業部【公式】",
},
{
url: "https://twitter.com/jr_shikoku_info",
name: "JR四国列車運行情報【公式】",
},
{
url: "https://twitter.com/Smile_Eki_Chan",
name: "すまいるえきちゃん♡JR四国【公式】",
},
{
url: "https://twitter.com/jrs_matsuyama",
name: "JR四国 松山駅 【公式】",
},
{
url: "https://twitter.com/jrshikoku_kochi",
name: "JR四国 高知駅【公式】",
},
{
url: "https://twitter.com/jr_tokust",
name: "JR四国 徳島駅【公式】",
},
{
url: "https://twitter.com/jrshikoku_uwjm",
name: "JR四国 宇和島駅【公式】",
},
{
url: "https://twitter.com/JRshikoku_wkoch",
name: "JR四国 ワープ高知支店【公式】",
},
{
url: "https://twitter.com/jrshikoku_nihaw",
name: "JR四国 ワープ新居浜営業所【公式】",
},
{
url: "https://twitter.com/Yoakemonogatari",
name: "志国土佐 時代の夜明けのものがたり【公式】",
},
])}
</View>
</View>
<Text style={{ fontWeight: "bold", fontSize: 20 }}>
このアプリについて
</Text>
<Text>
このアプリはXprocess(HARUKIN)が製作しているJR四国の完全非公式アシストアプリケーションですこのアプリに関することでのJR四国公式へ問合せすることはお控えください以下のTwitterよりお願いします
</Text>
<TextBox
backgroundColor="#CC0000"
flex={1}
onPressButton={() =>
Linking.openURL("https://twitter.com/Xprocess_main")
}
>
<Text style={{ color: "white", fontWeight: "bold", fontSize: 20 }}>
XprocessのTwitter
</Text>
<Text style={{ color: "white", fontSize: 18 }}>
制作運営のTwitterです
</Text>
</TextBox>
<TextBox
backgroundColor="black"
flex={1}
onPressButton={() => navigate("setting")}
>
<Text style={{ color: "white", fontWeight: "bold", fontSize: 20 }}>
アプリの設定
</Text>
<Text style={{ color: "white", fontSize: 18 }}>
アプリの設定画面を表示します
</Text>
</TextBox>
{/*
<SvgUri
width="200"
height="200"
source={require("./assets/トレインビジョン関係/1.svg")}
/> */}
</ScrollView>
</FixedContent>
<StationDeteilView
StationBoardAcSR={StationBoardAcSR}
currentStation={
originalStationList &&
(currentStation
? [currentStation, ...locationAndFavorite]
: locationAndFavorite)[selectedCurrentStation]
originalStationList && locationAndFavorite[selectedCurrentStation]
}
originalStationList={originalStationList}
favoriteStation={favoriteStation}
setFavoriteStation={setFavoriteStation}
busAndTrainData={busAndTrainData}
/>
<JRSTraInfo
JRSTraInfoEXAcSR={JRSTraInfoEXAcSR}
@@ -696,3 +408,305 @@ const JRSTraInfoBox = (props) => {
</TouchableOpacity>
);
};
const FixedContent = (props) => (
<>
<ScrollView ref={props.scrollRef} scrollEnabled={props.isScroll}>
<TopMenuButton />
<TextBox
backgroundColor="#0099CC"
flex={1}
onPressButton={() =>
Linking.openURL(
"https://www.jr-shikoku.co.jp/02_information/suspension/sp/"
)
}
>
<Text style={{ color: "white", fontWeight: "bold", fontSize: 18 }}>
新型コロナウイルスに関するお知らせ
</Text>
<Text style={{ color: "white", fontSize: 15 }}>
列車の運行計画混雑状況感染症対策への取り組み
</Text>
</TextBox>
{props.children}
<View style={{ flexDirection: "row" }}>
<TicketBox
backgroundColor={"#AD7FA8"}
icon={<Foundation name="ticket" color="white" size={50} />}
flex={1}
onPressButton={() =>
Linking.openURL("https://www.jr-eki.com/ticket/brand")
}
>
トクトク切符
</TicketBox>
<TicketBox
backgroundColor={"#8F5902"}
icon={<FontAwesome name="first-order" color="white" size={50} />}
flex={1}
onPressButton={() =>
Linking.openURL(
"https://www.jr-shikoku.co.jp/01_trainbus/event_train/sp/"
)
}
>
観光列車
</TicketBox>
<TicketBox
backgroundColor={"#888A85"}
icon={<Ionicons name="flag" color="white" size={50} />}
flex={1}
onPressButton={() =>
Linking.openURL("https://www.jr-eki.com/tour/brand")
}
>
旅行ツアー
</TicketBox>
</View>
<TextBox
backgroundColor="#0099CC"
flex={1}
onPressButton={() =>
Linking.openURL("https://www.jr-eki.com/smart-eki/index.html")
}
>
<Text style={{ color: "white", fontWeight: "bold", fontSize: 20 }}>
スマートえきちゃん
</Text>
<Text style={{ color: "white", fontSize: 18 }}>
JR四国のチケットレススマホアプリです
</Text>
</TextBox>
<TextBox
backgroundColor="#0099CC"
flex={1}
onPressButton={() =>
Linking.openURL("https://www.jr-shikoku.co.jp/sp/index.html#menu-box")
}
>
<Text style={{ color: "white", fontWeight: "bold", fontSize: 20 }}>
臨時列車などのお知らせ
</Text>
<Text style={{ color: "white", fontSize: 18 }}>
区間縮小計画運休イベント季節臨時列車など
</Text>
</TextBox>
<TextBox
backgroundColor="#0099CC"
flex={1}
onPressButton={() =>
Linking.openURL("https://www.jr-shikoku.co.jp/03_news/press/")
}
>
<Text style={{ color: "white", fontWeight: "bold", fontSize: 20 }}>
ニュースリリース
</Text>
<Text style={{ color: "white", fontSize: 18 }}>
公式プレス記事はこちら
</Text>
</TextBox>
<TextBox
backgroundColor="#0099CC"
flex={1}
onPressButton={() =>
Linking.openURL("https://www.jr-shikoku.co.jp/teiki/")
}
>
<Text style={{ color: "white", fontWeight: "bold", fontSize: 20 }}>
定期運賃計算
</Text>
<Text style={{ color: "white", fontSize: 18 }}>
通常/学生/快てき等はこちら
</Text>
</TextBox>
<TextBox
backgroundColor="#0099CC"
flex={1}
onPressButton={() =>
Linking.openURL("https://www.jr-shikoku.co.jp/04_company/group/sp/")
}
>
<Text style={{ color: "white", fontWeight: "bold", fontSize: 20 }}>
JR四国のお店サービス
</Text>
<Text style={{ color: "white", fontSize: 18 }}>
JR四国グループの施設をご案内
</Text>
</TextBox>
<View style={{ flexDirection: "row" }}>
<TouchableOpacity
style={{
flex: 1,
backgroundColor: "#729FCF",
borderColor: "#0099CC",
padding: 10,
borderWidth: 1,
margin: 2,
alignItems: "center",
}}
onPress={() => Linking.openURL("https://www.jr-odekake.net/smt/")}
>
<Text style={{ color: "white", fontWeight: "bold", fontSize: 20 }}>
時刻運賃計算
</Text>
<Text style={{ color: "white", fontWeight: "bold", fontSize: 18 }}>
(マイダイヤ)
</Text>
<Foundation name="yen" color="white" size={50} />
<Text style={{ color: "white" }}>
マイダイヤはJR西日本提供のサービスです
</Text>
</TouchableOpacity>
<TouchableOpacity
style={{
flex: 1,
backgroundColor: "#8AE234",
borderColor: "#0099CC",
padding: 10,
borderWidth: 1,
margin: 2,
alignItems: "center",
}}
onPress={() => Linking.openURL("tel:0570-00-4592")}
>
<Text style={{ color: "white", fontWeight: "bold", fontSize: 20 }}>
JR四国案内センター
</Text>
<Foundation name="telephone" color="white" size={50} />
<Text style={{ color: "white" }}>0570-00-4592</Text>
<Text style={{ color: "white" }}>(8:00~20:00 年中無休)</Text>
<Text style={{ color: "white" }}>(通話料がかかります)</Text>
</TouchableOpacity>
</View>
<View
style={{
backgroundColor: "#0099CC",
borderRadius: 10,
margin: 10,
borderColor: "black",
borderWidth: 2,
}}
>
<View
style={{ padding: 10, flexDirection: "row", alignItems: "center" }}
>
<MaterialCommunityIcons
name="twitter"
style={{ padding: 5 }}
color="white"
size={30}
/>
<Text style={{ fontSize: 30, fontWeight: "bold", color: "white" }}>
JR四国公式Twitter一族
</Text>
</View>
<View
style={{
padding: 10,
backgroundColor: "white",
borderBottomLeftRadius: 10,
borderBottomRightRadius: 10,
}}
>
{((data) =>
data.map((d) => (
<ListItem onPress={() => Linking.openURL(d.url)}>
<Text>{d.name}</Text>
<View style={{ flex: 1 }} />
<Icon name="chevron-right" size={20} />
</ListItem>
)))([
{
url: "https://twitter.com/JRshikoku_eigyo",
name: "JR四国営業部【公式】",
},
{
url: "https://twitter.com/JRshikoku_tokyo",
name: "JR四国 東京営業情報【公式】",
},
{
url: "https://twitter.com/JRshikoku_osaka",
name: "JR四国 大阪営業部【公式】",
},
{
url: "https://twitter.com/jr_shikoku_info",
name: "JR四国列車運行情報【公式】",
},
{
url: "https://twitter.com/Smile_Eki_Chan",
name: "すまいるえきちゃん♡JR四国【公式】",
},
{
url: "https://twitter.com/jrs_matsuyama",
name: "JR四国 松山駅 【公式】",
},
{
url: "https://twitter.com/jrshikoku_kochi",
name: "JR四国 高知駅【公式】",
},
{
url: "https://twitter.com/jr_tokust",
name: "JR四国 徳島駅【公式】",
},
{
url: "https://twitter.com/jrshikoku_uwjm",
name: "JR四国 宇和島駅【公式】",
},
{
url: "https://twitter.com/JRshikoku_wkoch",
name: "JR四国 ワープ高知支店【公式】",
},
{
url: "https://twitter.com/jrshikoku_nihaw",
name: "JR四国 ワープ新居浜営業所【公式】",
},
{
url: "https://twitter.com/Yoakemonogatari",
name: "志国土佐 時代の夜明けのものがたり【公式】",
},
])}
</View>
</View>
<Text style={{ fontWeight: "bold", fontSize: 20 }}>
このアプリについて
</Text>
<Text>
このアプリはXprocess(HARUKIN)が製作しているJR四国の完全非公式アシストアプリケーションですこのアプリに関することでのJR四国公式へ問合せすることはお控えください以下のTwitterよりお願いします
</Text>
<TextBox
backgroundColor="#CC0000"
flex={1}
onPressButton={() =>
Linking.openURL("https://twitter.com/Xprocess_main")
}
>
<Text style={{ color: "white", fontWeight: "bold", fontSize: 20 }}>
XprocessのTwitter
</Text>
<Text style={{ color: "white", fontSize: 18 }}>
制作運営のTwitterです
</Text>
</TextBox>
<TextBox
backgroundColor="black"
flex={1}
onPressButton={() => props.navigate("setting")}
>
<Text style={{ color: "white", fontWeight: "bold", fontSize: 20 }}>
アプリの設定
</Text>
<Text style={{ color: "white", fontSize: 18 }}>
アプリの設定画面を表示します
</Text>
</TextBox>
{/*
<SvgUri
width="200"
height="200"
source={require("./assets/トレインビジョン関係/1.svg")}
/> */}
</ScrollView>
</>
);

12485
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -8,43 +8,43 @@
},
"dependencies": {
"@expo/vector-icons": "^13.0.0",
"@react-native-async-storage/async-storage": "~1.17.3",
"@react-native-async-storage/async-storage": "1.17.11",
"@react-native-community/masked-view": "0.1.10",
"@react-navigation/bottom-tabs": "^5.11.11",
"@react-navigation/native": "^5.9.4",
"@react-navigation/stack": "^5.14.5",
"expo": "^45.0.0",
"expo-font": "~10.1.0",
"expo-location": "~14.2.2",
"expo-updates": "~0.13.4",
"expo-web-browser": "~10.2.1",
"expo": "^48.0.0",
"expo-font": "~11.1.1",
"expo-location": "~15.1.1",
"expo-updates": "~0.16.3",
"expo-web-browser": "~12.1.1",
"firebase": "8.2.3",
"lottie-react-native": "5.0.1",
"lottie-react-native": "5.1.4",
"native-base": "^2.15.2",
"npm": "^7.18.1",
"pushy-react-native": "^1.0.18",
"react": "17.0.2",
"react-native": "0.68.2",
"react": "18.2.0",
"react-native": "0.71.3",
"react-native-actions-sheet": "^0.4.9",
"react-native-auto-height-image": "^3.2.4",
"react-native-elements": "^3.4.2",
"react-native-gesture-handler": "~2.2.1",
"react-native-maps": "0.30.2",
"react-native-reanimated": "~2.8.0",
"react-native-gesture-handler": "~2.9.0",
"react-native-maps": "1.3.2",
"react-native-reanimated": "~2.14.4",
"react-native-remote-svg": "^2.0.6",
"react-native-responsive-screen": "^1.4.2",
"react-native-router-flux": "^4.3.1",
"react-native-safe-area-context": "4.2.4",
"react-native-screens": "~3.11.1",
"react-native-safe-area-context": "4.5.0",
"react-native-screens": "~3.20.0",
"react-native-snap-carousel": "^3.9.1",
"react-native-storage": "^1.0.1",
"react-native-svg": "12.3.0",
"react-native-svg": "13.4.0",
"react-native-svg-uri": "^1.2.3",
"react-native-vector-icons": "^8.1.0",
"react-native-webview": "11.18.1"
"react-native-webview": "11.26.0"
},
"devDependencies": {
"babel-preset-expo": "~9.1.0"
"babel-preset-expo": "^9.3.0"
},
"private": true
}

View File

@@ -12,7 +12,6 @@ import { Ionicons, MaterialCommunityIcons } from "@expo/vector-icons";
export default function TrainBase({ route, navigation }) {
const { info, from } = route.params;
const { navigate } = navigation;
console.log(info);
const webview = useRef();
const jss = `document.getElementById('Footer').style.display = 'none';
${

6815
yarn.lock

File diff suppressed because it is too large Load Diff