ふぁぼりすとを作成

This commit is contained in:
harukin-DeskMini 2023-01-29 06:37:52 +09:00
parent 2040d829fe
commit c996b31dad
3 changed files with 122 additions and 4 deletions

6
App.js
View File

@ -16,6 +16,7 @@ import menu from "./menu";
import News from "./components/news.js"; import News from "./components/news.js";
import Setting from "./components/settings.js"; import Setting from "./components/settings.js";
import trainMenu from "./components/trainMenu.js"; import trainMenu from "./components/trainMenu.js";
import FavoriteList from "./components/FavoriteList.js";
const Stack = createStackNavigator(); const Stack = createStackNavigator();
const Tab = createBottomTabNavigator(); const Tab = createBottomTabNavigator();
if (Platform.OS === "android") { if (Platform.OS === "android") {
@ -95,6 +96,11 @@ const top = () => (
/> />
<Stack.Screen name="news" component={News} options={optionData} /> <Stack.Screen name="news" component={News} options={optionData} />
<Stack.Screen name="trainMenu" component={trainMenu} options={optionData} /> <Stack.Screen name="trainMenu" component={trainMenu} options={optionData} />
<Stack.Screen
name="favoriteList"
component={FavoriteList}
options={{ ...optionData, gestureEnabled: false }}
/>
</Stack.Navigator> </Stack.Navigator>
); );
function menuPage() { function menuPage() {

115
components/FavoriteList.js Normal file
View File

@ -0,0 +1,115 @@
import React, { Component, useRef, useState, useEffect } from "react";
import { View, Text, TouchableOpacity, ScrollView } from "react-native";
import { WebView } from "react-native-webview";
import { ListItem } from "native-base";
import Icon from "react-native-vector-icons/Entypo";
import StatusbarDetect from "../StatusbarDetect";
import { AS } from "../storageControl";
import { news } from "../config/newsUpdate";
import { getStationList, lineList } from "../lib/getStationList";
var Status = StatusbarDetect();
export default function FavoriteList(props) {
const {
route: {
params: { webview, stationData },
},
navigation: { navigate },
} = props;
const [favoriteStation, setFavoriteStation] = useState([]);
useEffect(() => {
AS.getItem("favoriteStation")
.then((d) => {
console.log(d);
const returnData = JSON.parse(d);
console.log(returnData);
setFavoriteStation(returnData);
})
.catch((d) => console.log(d));
}, []);
return (
<View style={{ height: "100%", backgroundColor: "#0099CC" }}>
<ScrollView style={{ height: "100%", backgroundColor: "white" }}>
{favoriteStation
.filter((d) => d[0].StationMap)
.map((currentStation) => {
console.log(currentStation);
return (
<ListItem
onPress={() => {
const getStationLine = (now) => {
const returnData = Object.keys(stationData).filter((d) => {
const cache = stationData[d].findIndex(
(data) => data.Station_JP == now.Station_JP
);
return cache != -1;
});
return returnData[0];
};
const lineName = getStationLine(currentStation[0]);
webview.current?.injectJavaScript(
`MoveDisplayStation('${lineName}_${currentStation[0].MyStation}_${currentStation[0].Station_JP}')`
);
navigate("Apps");
}}
>
<Text style={{ fontSize: 20, flex: 2 }}>
{currentStation
.map((d) => d.StationNumber)
.filter((d) => d !== null)
.join("/")}
</Text>
<Text style={{ fontSize: 20, flex: 3 }}>
{currentStation[0].Station_JP}
</Text>
<View
style={{
flex: 2,
flexDirection: "row",
alignContent: "center",
alignItems: "center",
}}
>
<View style={{ flex: 1 }} />
<Text style={{ fontSize: 20 }}>移動する</Text>
<Icon name="chevron-right" size={20} />
</View>
</ListItem>
);
})}
</ScrollView>
<Text
style={{
backgroundColor: "white",
borderWidth: 1,
borderStyle: "solid",
}}
>
お気に入り登録した駅のうち位置情報システムで移動可能な駅が表示されていますタップすることで位置情報システムの当該の駅に移動します
</Text>
<TouchableOpacity
style={{
padding: 10,
flexDirection: "row",
borderColor: "white",
borderWidth: 1,
margin: 10,
borderRadius: 5,
alignItems: "center",
}}
onPress={() => {
navigate("trainMenu");
}}
>
<View style={{ flex: 1 }} />
<Text style={{ fontSize: 25, fontWeight: "bold", color: "white" }}>
閉じる
</Text>
<View style={{ flex: 1 }} />
</TouchableOpacity>
</View>
);
}

View File

@ -68,10 +68,7 @@ export default function trainMenu({
icon="star" icon="star"
flex={1} flex={1}
onPressButton={() => onPressButton={() =>
/* Linking.openURL( navigate("favoriteList", { webview, stationData })
"https://www.jr-shikoku.co.jp/01_trainbus/jikoku/sp/#mainprice-box"
) */
alert("お気に入り駅登録機能は現在開発中です!レイアウト募集中!")
} }
> >
お気に入り お気に入り