From b6e24e08cb286396e43d6fe7170d8281a899ba01 Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Tue, 19 Mar 2024 09:38:20 +0000 Subject: [PATCH 1/9] =?UTF-8?q?Top=E3=81=AE=E3=83=AB=E3=83=BC=E3=83=86?= =?UTF-8?q?=E3=82=A3=E3=83=B3=E3=82=B0=E9=96=A2=E4=BF=82=E3=82=92=E6=9C=80?= =?UTF-8?q?=E9=81=A9=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Apps.js | 8 +++-- Top.js | 61 ++++++++++---------------------------- components/FavoriteList.js | 7 +++-- components/news.js | 7 ++--- components/trainMenu.js | 11 ++++--- 5 files changed, 33 insertions(+), 61 deletions(-) diff --git a/Apps.js b/Apps.js index 40720ea..fe2ddcf 100644 --- a/Apps.js +++ b/Apps.js @@ -23,14 +23,16 @@ import { useDeviceOrientationChange } from "./stateBox/useDeviceOrientationChang import { SheetManager } from "react-native-actions-sheet"; import TrainMenu from "./components/trainMenu"; import { EachTrainInfoCore } from "./components/ActionSheetComponents/EachTrainInfoCore"; + +import { useNavigation } from "@react-navigation/native"; /* import StatusbarDetect from './StatusbarDetect'; var Status = StatusbarDetect(); */ -export default function Apps({ navigation, webview, stationData }) { - const { currentTrain } = useCurrentTrain(); +export default function Apps({ stationData }) { + const { webview, currentTrain } = useCurrentTrain(); const { height, width } = useWindowDimensions(); - const { navigate } = navigation; + const { navigate } = useNavigation(); var urlcache = ""; const { favoriteStation } = useFavoriteStation(); const { isLandscape, setIsLandscape } = useDeviceOrientationChange(); diff --git a/Top.js b/Top.js index 1d36df5..9f9486f 100644 --- a/Top.js +++ b/Top.js @@ -10,14 +10,9 @@ import HowTo from "./howto"; import News from "./components/news.js"; import TrainMenu from "./components/trainMenu.js"; import FavoriteList from "./components/FavoriteList.js"; -import { useFavoriteStation } from "./stateBox/useFavoriteStation"; import { optionData } from "./lib/stackOption.js"; -import { useCurrentTrain } from "./stateBox/useCurrentTrain.js"; const Stack = createStackNavigator(); export const Top = ({ navigation }) => { - const { favoriteStation, setFavoriteStation } = useFavoriteStation(); - const { webview, getCurrentTrain } = useCurrentTrain(); - //地図用 const [mapsStationData, setMapsStationData] = useState(undefined); @@ -42,16 +37,8 @@ export const Top = ({ navigation }) => { gestureEnabled: true, headerTransparent: true, }} - > - {(props) => ( - - )} - + children={() => } + /> { gestureEnabled: true, ...TransitionPresets.SlideFromRightIOS, }} - > - {(props) => } - + component={TrainBase} + /> + + + + - {(props) => } - - - {(props) => } - - - {(props) => ( - - )} - + name="trainMenu" + options={optionData} + children={() => } + /> + - {(props) => ( - - )} - + children={() => } + /> ); }; diff --git a/components/FavoriteList.js b/components/FavoriteList.js index 4888e48..b61ff3d 100644 --- a/components/FavoriteList.js +++ b/components/FavoriteList.js @@ -3,9 +3,12 @@ import { View, Text, TouchableOpacity, ScrollView } from "react-native"; import { ListItem } from "native-base"; import Icon from "react-native-vector-icons/Entypo"; import { useFavoriteStation } from "../stateBox/useFavoriteStation"; -export default function FavoriteList({ navigation, webview, stationData }) { - const { navigate } = navigation; +import { useCurrentTrain } from "../stateBox/useCurrentTrain"; +import { useNavigation } from "@react-navigation/native"; +export default function FavoriteList({ stationData }) { const { favoriteStation } = useFavoriteStation(); + const { webview } = useCurrentTrain(); + const { navigate } = useNavigation(); return ( diff --git a/components/news.js b/components/news.js index 0b95e3b..f0ac12c 100644 --- a/components/news.js +++ b/components/news.js @@ -4,11 +4,10 @@ import { WebView } from "react-native-webview"; import StatusbarDetect from "../StatusbarDetect"; import { AS } from "../storageControl"; import { news } from "../config/newsUpdate"; +import { useNavigation } from "@react-navigation/native"; var Status = StatusbarDetect(); -export default function News(props) { - const { - navigation: { navigate }, - } = props; +export default function News() { + const { navigate } = useNavigation(); return ( Date: Tue, 19 Mar 2024 10:42:25 +0000 Subject: [PATCH 2/9] =?UTF-8?q?=E3=81=A1=E3=82=87=E3=81=A3=E3=81=A8?= =?UTF-8?q?=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- App.js | 11 +++-- MenuPage.js | 65 +++++++++--------------------- Top.js | 11 +++-- components/AllTrainDiagramView.js | 17 +++----- components/CurrentTrainListView.js | 4 +- components/settings.js | 5 +-- menu.js | 8 ++-- trainbaseview.js | 5 ++- 8 files changed, 47 insertions(+), 79 deletions(-) diff --git a/App.js b/App.js index 4041b6e..b7cbed9 100644 --- a/App.js +++ b/App.js @@ -72,9 +72,8 @@ export function AppContainer() { gestureEnabled: true, tabBarIcon: initIcon("barchart", "AntDesign"), }} - > - {(props) => } - + component={Top} + /> - {(props) => } - + component={MenuPage} + /> + { - const unsubscribe = navigation.addListener("tabPress", (e) => { + const unsubscribe = addListener("tabPress", (e) => { AS.getItem("favoriteStation") .then((d) => { const returnData = JSON.parse(d); @@ -41,57 +44,29 @@ export function MenuPage({ navigation }) { gestureEnabled: true, headerTransparent: true, }} - > - {(props) => } - - - {(props) => } - + children={() => } + /> + - {(props) => } - + options={{ ...optionData, gestureResponseDistance: { vertical: 300 } }} + children={(props) => } + /> - {(props) => } - + options={{ ...optionData, gestureResponseDistance: { vertical: 300 } }} + component={CurrentTrainListView} + /> - {(props) => } - + options={{ ...optionData, gestureEnabled: false }} + component={AllTrainDiagramView} + /> - {(props) => } - + options={optionData} + children={(props) => } + /> ); } diff --git a/Top.js b/Top.js index 9f9486f..631d139 100644 --- a/Top.js +++ b/Top.js @@ -11,8 +11,11 @@ import News from "./components/news.js"; import TrainMenu from "./components/trainMenu.js"; import FavoriteList from "./components/FavoriteList.js"; import { optionData } from "./lib/stackOption.js"; +import { useNavigation } from "@react-navigation/native"; const Stack = createStackNavigator(); -export const Top = ({ navigation }) => { +export const Top = () => { + const navigation = useNavigation(); + const { navigate, addListener } = navigation; //地図用 const [mapsStationData, setMapsStationData] = useState(undefined); @@ -21,9 +24,9 @@ export const Top = ({ navigation }) => { }, []); useEffect(() => { - const unsubscribe = navigation.addListener("tabLongPress", (e) => { - navigation.navigate("favoriteList"); - }); + const unsubscribe = addListener("tabLongPress", (e) => + navigate("favoriteList") + ); return unsubscribe; }, [navigation]); diff --git a/components/AllTrainDiagramView.js b/components/AllTrainDiagramView.js index 9b122d2..8c2583d 100644 --- a/components/AllTrainDiagramView.js +++ b/components/AllTrainDiagramView.js @@ -1,30 +1,23 @@ -import React, { useRef, useState, useEffect } from "react"; +import React, { useState, useEffect } from "react"; import { View, Text, TouchableOpacity, - Linking, - ScrollView, FlatList, KeyboardAvoidingView, TextInput, Platform, Keyboard, } from "react-native"; -import MapView, { Marker } from "react-native-maps"; -import { MaterialCommunityIcons } from "@expo/vector-icons"; -import { useCurrentTrain } from "../stateBox/useCurrentTrain"; -import { useAreaInfo } from "../stateBox/useAreaInfo"; import { useAllTrainDiagram } from "../stateBox/useAllTrainDiagram"; import { customTrainDataDetector } from "./custom-train-data"; -import { getStationList, lineList } from "../lib/getStationList"; +import { getStationList } from "../lib/getStationList"; import { getTrainType } from "../lib/getTrainType"; -import { checkDuplicateTrainData } from "../lib/checkDuplicateTrainData"; import { SheetManager } from "react-native-actions-sheet"; -export default function AllTrainDiagramView({ navigation: { navigate } }) { - const { currentTrain } = useCurrentTrain(); - const { areaInfo } = useAreaInfo(); +import { useNavigation } from "@react-navigation/native"; +export default function AllTrainDiagramView() { + const { navigate } = useNavigation(); const { allTrainDiagram } = useAllTrainDiagram(); const [originalStationList, setOriginalStationList] = useState(); // 第一要素 const [keyList, setKeyList] = useState(); // 第二要素 diff --git a/components/CurrentTrainListView.js b/components/CurrentTrainListView.js index cc5f880..72a6a1d 100644 --- a/components/CurrentTrainListView.js +++ b/components/CurrentTrainListView.js @@ -3,7 +3,9 @@ import { View, Text, TouchableOpacity, Linking } from "react-native"; import MapView, { Marker } from "react-native-maps"; import { MaterialCommunityIcons } from "@expo/vector-icons"; import { useCurrentTrain } from "../stateBox/useCurrentTrain"; -export default function CurrentTrainListView({ navigation: { navigate } }) { +import { useNavigation } from "@react-navigation/native"; +export default function CurrentTrainListView() { + const { navigate } = useNavigation(); const { currentTrain } = useCurrentTrain(); return ( diff --git a/components/settings.js b/components/settings.js index 3115201..181687b 100644 --- a/components/settings.js +++ b/components/settings.js @@ -7,10 +7,7 @@ import { AS } from "../storageControl"; var Status = StatusbarDetect(); import { Switch } from "react-native-elements"; -export default function Setting(props) { - const { - navigation: { navigate }, - } = props; +export default function Setting() { const [iconSetting, setIconSetting] = useState(false); const [mapSwitch, setMapSwitch] = useState(false); const [stationMenu, setStationMenu] = useState(false); diff --git a/menu.js b/menu.js index b5305e2..89a87f9 100644 --- a/menu.js +++ b/menu.js @@ -37,12 +37,10 @@ import { HeaderConfig } from "./lib/HeaderConfig"; import { useFavoriteStation } from "./stateBox/useFavoriteStation"; import { SheetManager } from "react-native-actions-sheet"; import { useTrainDelayData } from "./stateBox/useTrainDelayData"; +import { useNavigation } from "@react-navigation/native"; -export default function Menu(props) { - const { - navigation: { navigate }, - getCurrentTrain, - } = props; +export default function Menu({ getCurrentTrain }) { + const { navigate } = useNavigation(); const { favoriteStation } = useFavoriteStation(); //位置情報 diff --git a/trainbaseview.js b/trainbaseview.js index d024ee3..8b85031 100644 --- a/trainbaseview.js +++ b/trainbaseview.js @@ -8,10 +8,11 @@ import { } from "react-native"; import { WebView } from "react-native-webview"; import { Ionicons, MaterialCommunityIcons } from "@expo/vector-icons"; +import { useNavigation } from "@react-navigation/native"; -export default function TrainBase({ route, navigation }) { +export default function TrainBase({ route }) { const { info, from } = route.params; - const { navigate } = navigation; + const { navigate } = useNavigation(); const webview = useRef(); const jss = `document.getElementById('Footer').style.display = 'none'; ${ From 6842b2f724e30046c034546293bd58e8a82e597f Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Tue, 19 Mar 2024 11:55:31 +0000 Subject: [PATCH 3/9] =?UTF-8?q?menu=E8=A6=81=E7=B4=A0=E3=81=AE=E5=88=86?= =?UTF-8?q?=E9=9B=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/Menu/FixedContentBottom.js | 314 ++++++++++++++++++++++ components/Menu/TitleBar.js | 19 ++ menu.js | 370 +------------------------- ndView.js | 57 ++-- 4 files changed, 360 insertions(+), 400 deletions(-) create mode 100644 components/Menu/FixedContentBottom.js create mode 100644 components/Menu/TitleBar.js diff --git a/components/Menu/FixedContentBottom.js b/components/Menu/FixedContentBottom.js new file mode 100644 index 0000000..f7c2bc0 --- /dev/null +++ b/components/Menu/FixedContentBottom.js @@ -0,0 +1,314 @@ +import { Linking, Text, View, TouchableOpacity } from "react-native"; +import { + Foundation, + FontAwesome, + Ionicons, + MaterialCommunityIcons, +} from "@expo/vector-icons"; +import Icon from "react-native-vector-icons/Entypo"; +import { TextBox } from "../atom/TextBox"; +import { TicketBox } from "../atom/TicketBox"; +import { ListItem } from "native-base"; + +export const FixedContentBottom = (props) => { + return ( + <> + {props.children} + + + } + flex={1} + onPressButton={() => + Linking.openURL("https://www.jr-eki.com/ticket/brand") + } + > + トクトク切符 + + } + flex={1} + onPressButton={() => + Linking.openURL( + "https://www.jr-shikoku.co.jp/01_trainbus/event_train/sp/" + ) + } + > + 観光列車 + + } + flex={1} + onPressButton={() => + Linking.openURL("https://www.jr-eki.com/tour/brand") + } + > + 旅行ツアー + + + + Linking.openURL("https://www.jr-eki.com/smart-eki/index.html") + } + > + + スマートえきちゃん + + + JR四国のチケットレススマホアプリです。 + + + + Linking.openURL("https://www.jr-shikoku.co.jp/sp/index.html#menu-box") + } + > + + 臨時列車などのお知らせ + + + 区間縮小・計画運休・イベント・季節臨時列車など + + + + Linking.openURL("https://www.jr-shikoku.co.jp/03_news/press/") + } + > + + ニュースリリース + + + 公式プレス記事はこちら + + + + Linking.openURL("https://www.jr-shikoku.co.jp/teiki/") + } + > + + 定期運賃計算 + + + 通常/学生/快て〜き等はこちら + + + + Linking.openURL("https://www.jr-shikoku.co.jp/04_company/group/sp/") + } + > + + JR四国のお店・サービス + + + JR四国グループの施設をご案内 + + + + Linking.openURL("https://www.jr-odekake.net/smt/")} + > + + 時刻・運賃計算 + + + (マイ・ダイヤ) + + + + マイ・ダイヤはJR西日本提供のサービスです。 + + + Linking.openURL("tel:0570-00-4592")} + > + + JR四国案内センター + + + 0570-00-4592 + (8:00~20:00 年中無休) + (通話料がかかります) + + + + + + + JR四国公式Twitter一族 + + + + {[ + { + url: "https://twitter.com/jr_shikoku_info", + name: "JR四国列車運行情報", + }, + + { + 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/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_wkama", + name: "JR四国 ワープ高松支店【公式】", + }, + { + url: "https://twitter.com/JRshikoku_wkoch", + name: "JR四国 ワープ高知支店【公式】", + }, + { + url: "https://twitter.com/Yoakemonogatari", + name: "志国土佐 時代の夜明けのものがたり【公式】", + }, + { + url: "https://twitter.com/Smile_Eki_Chan", + name: "すまいるえきちゃん♡JR四国【公式】", + }, + { + url: "https://twitter.com/sper_ponchan", + name: "しこくたぬきのぽんちゃん 【四国家サポーターズクラブ】", + }, + ].map((d) => ( + Linking.openURL(d.url)}> + {d.name} + + + + ))} + + + 上級者向け機能 + props.navigate("AllTrainIDList")} + > + + 列番探索 + + + データベースに存在する全列車のダイヤを探索 + + + + このアプリについて + + + このアプリはXprocess(HARUKIN)が製作しているJR四国の完全非公式アシストアプリケーションです。このアプリに関することでのJR四国公式へ問合せすることはお控えください。以下のTwitterよりお願いします。 + + + + Linking.openURL("https://twitter.com/Xprocess_main") + } + > + + XprocessのTwitter + + + 制作運営のTwitterです。 + + + props.navigate("setting")} + > + + アプリの設定 + + + アプリの設定画面を表示します。 + + + {/* + */} + + ); +}; diff --git a/components/Menu/TitleBar.js b/components/Menu/TitleBar.js new file mode 100644 index 0000000..e8672a6 --- /dev/null +++ b/components/Menu/TitleBar.js @@ -0,0 +1,19 @@ +import { View, TouchableOpacity, Linking } from "react-native"; +import AutoHeightImage from "react-native-auto-height-image"; +import { widthPercentageToDP as wp } from "react-native-responsive-screen"; + +export const TitleBar = () => { + return ( + + Linking.openURL("https://www.jr-shikoku.co.jp")} + > + + + + ); +}; diff --git a/menu.js b/menu.js index 89a87f9..1606d78 100644 --- a/menu.js +++ b/menu.js @@ -1,4 +1,4 @@ -import React, { useRef, useState, useEffect, useLayoutEffect } from "react"; +import React, { useRef, useState, useEffect } from "react"; import Carousel from "react-native-snap-carousel"; import { Platform, @@ -9,28 +9,20 @@ import { TouchableOpacity, } from "react-native"; import Constants from "expo-constants"; -import { ListItem } from "native-base"; -import Icon from "react-native-vector-icons/Entypo"; import * as Location from "expo-location"; import StatusbarDetect from "./StatusbarDetect"; -import AutoHeightImage from "react-native-auto-height-image"; import { widthPercentageToDP as wp } from "react-native-responsive-screen"; -import { - FontAwesome, - Foundation, - Ionicons, - MaterialCommunityIcons, -} from "@expo/vector-icons"; +import { Ionicons } from "@expo/vector-icons"; import LottieView from "lottie-react-native"; import { parseAllTrainDiagram } from "./lib/parseAllTrainDiagram"; import trainList from "./assets/originData/trainList"; import LED_vision from "./components/発車時刻表/LED_vidion"; import Sign from "./components/駅名表/Sign"; +import { TitleBar } from "./components/Menu/TitleBar"; +import { FixedContentBottom } from "./components/Menu/FixedContentBottom"; import { UsefulBox } from "./components/atom/UsefulBox"; -import { TicketBox } from "./components/atom/TicketBox"; -import { TextBox } from "./components/atom/TextBox"; import { getStationList, lineList } from "./lib/getStationList"; import useInterval from "./lib/useInterval"; import { HeaderConfig } from "./lib/HeaderConfig"; @@ -146,30 +138,6 @@ export default function Menu({ getCurrentTrain }) { setTrainDiagram(trainList); }); }, []); - - const openStationACFromEachTrainInfo = () => { - // EachTrainInfoAsSR.current?.hide(); - // const findStationEachLine = (selectLine) => { - // let NearStation = selectLine.filter((d) => d.Station_JP == stationName); - // return NearStation; - // }; - // let returnDataBase = lineList - // .map((d) => findStationEachLine(originalStationList[d])) - // .filter((d) => d.length > 0) - // .reduce((pre, current) => { - // pre.push(...current); - // return pre; - // }, []); - // if (returnDataBase.length) { - // setStationBoardData(returnDataBase); - // sleep(30, function () { - // StationBoardAcSR.current?.show(); - // }); - // } else { - // setStationBoardData(undefined); - // StationBoardAcSR.current?.hide(); - // } - }; return ( - + {originalStationList.length != 0 && allStationData.length != 0 && ( {}} /> )} @@ -252,22 +220,6 @@ export default function Menu({ getCurrentTrain }) { ); } -const TitleBar = () => { - return ( - - Linking.openURL("https://www.jr-shikoku.co.jp")} - > - - - - ); -}; - const TopMenuButton = () => { const buttonList = [ { @@ -416,313 +368,3 @@ const JRSTraInfoBox = () => { ); }; - -const FixedContentTop = () => { - return ( - <> - - - ); -}; -const FixedContentBottom = (props) => { - return ( - <> - {props.children} - - - } - flex={1} - onPressButton={() => - Linking.openURL("https://www.jr-eki.com/ticket/brand") - } - > - トクトク切符 - - } - flex={1} - onPressButton={() => - Linking.openURL( - "https://www.jr-shikoku.co.jp/01_trainbus/event_train/sp/" - ) - } - > - 観光列車 - - } - flex={1} - onPressButton={() => - Linking.openURL("https://www.jr-eki.com/tour/brand") - } - > - 旅行ツアー - - - - Linking.openURL("https://www.jr-eki.com/smart-eki/index.html") - } - > - - スマートえきちゃん - - - JR四国のチケットレススマホアプリです。 - - - - Linking.openURL("https://www.jr-shikoku.co.jp/sp/index.html#menu-box") - } - > - - 臨時列車などのお知らせ - - - 区間縮小・計画運休・イベント・季節臨時列車など - - - - Linking.openURL("https://www.jr-shikoku.co.jp/03_news/press/") - } - > - - ニュースリリース - - - 公式プレス記事はこちら - - - - Linking.openURL("https://www.jr-shikoku.co.jp/teiki/") - } - > - - 定期運賃計算 - - - 通常/学生/快て〜き等はこちら - - - - Linking.openURL("https://www.jr-shikoku.co.jp/04_company/group/sp/") - } - > - - JR四国のお店・サービス - - - JR四国グループの施設をご案内 - - - - Linking.openURL("https://www.jr-odekake.net/smt/")} - > - - 時刻・運賃計算 - - - (マイ・ダイヤ) - - - - マイ・ダイヤはJR西日本提供のサービスです。 - - - Linking.openURL("tel:0570-00-4592")} - > - - JR四国案内センター - - - 0570-00-4592 - (8:00~20:00 年中無休) - (通話料がかかります) - - - - - - - JR四国公式Twitter一族 - - - - {[ - { - url: "https://twitter.com/jr_shikoku_info", - name: "JR四国列車運行情報", - }, - - { - 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/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_wkama", - name: "JR四国 ワープ高松支店【公式】", - }, - { - url: "https://twitter.com/JRshikoku_wkoch", - name: "JR四国 ワープ高知支店【公式】", - }, - { - url: "https://twitter.com/Yoakemonogatari", - name: "志国土佐 時代の夜明けのものがたり【公式】", - }, - { - url: "https://twitter.com/Smile_Eki_Chan", - name: "すまいるえきちゃん♡JR四国【公式】", - }, - { - url: "https://twitter.com/sper_ponchan", - name: "しこくたぬきのぽんちゃん 【四国家サポーターズクラブ】", - }, - ].map((d) => ( - Linking.openURL(d.url)}> - {d.name} - - - - ))} - - - 上級者向け機能 - props.navigate("AllTrainIDList")} - > - - 列番探索 - - - データベースに存在する全列車のダイヤを探索 - - - - このアプリについて - - - このアプリはXprocess(HARUKIN)が製作しているJR四国の完全非公式アシストアプリケーションです。このアプリに関することでのJR四国公式へ問合せすることはお控えください。以下のTwitterよりお願いします。 - - - - Linking.openURL("https://twitter.com/Xprocess_main") - } - > - - XprocessのTwitter - - - 制作運営のTwitterです。 - - - props.navigate("setting")} - > - - アプリの設定 - - - アプリの設定画面を表示します。 - - - {/* - */} - - ); -}; diff --git a/ndView.js b/ndView.js index 0010ba7..a492387 100644 --- a/ndView.js +++ b/ndView.js @@ -5,7 +5,10 @@ import Constants from "expo-constants"; import { Ionicons } from "@expo/vector-icons"; export default function tndView() { const webview = useRef(); - const [LoadError, setLoadError] = useState(false); + const jsa = ` + document.querySelector('.sitettl').style.display = 'none'; + document.querySelector('.attention').style.display = 'none'; + `; return ( { - //webViewの再読み込みを行う - this.webView.reload(); - }} + onError={() => this.webView?.reload()} /> webview.current.reload()} + onPress={() => webview.current?.reload()} top={Platform.OS == "ios" ? Constants.statusBarHeight : 0} - LoadError={LoadError} /> ); } -const jsa = ` -document.querySelector('.sitettl').style.display = 'none'; -document.querySelector('.attention').style.display = 'none'; -`; const ReloadButton = ({ onPress, top, mapSwitch, LoadError = false }) => { const styles = { - touch: { - position: "absolute", - top, - right: 10, - width: 50, - height: 50, - backgroundColor: LoadError ? "red" : "#0099CC", - borderColor: "white", - borderStyle: "solid", - borderWidth: 1, - borderRadius: 50, - alignContent: "center", - alignSelf: "center", - alignItems: "center", - display: mapSwitch, - }, - text: { - textAlign: "center", - width: "auto", - height: "auto", - textAlignVertical: "center", - fontWeight: "bold", - color: "white", - }, + position: "absolute", + top, + right: 10, + width: 50, + height: 50, + backgroundColor: LoadError ? "red" : "#0099CC", + borderColor: "white", + borderStyle: "solid", + borderWidth: 1, + borderRadius: 50, + alignContent: "center", + alignSelf: "center", + alignItems: "center", + display: mapSwitch, }; return ( - + From f98d0166b8cbcdcb6f5cd105c76ab7544f33f1cc Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Tue, 19 Mar 2024 13:30:44 +0000 Subject: [PATCH 4/9] =?UTF-8?q?SpecialTrainInfo=E3=82=92=E5=88=86=E5=B2=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../EachTrainInfo/ShowSpecialTrain.js | 36 ++++++++++ .../EachTrainInfoCore.js | 65 +++++-------------- components/DynamicHeaderScrollView.js | 35 +++++----- 3 files changed, 66 insertions(+), 70 deletions(-) create mode 100644 components/ActionSheetComponents/EachTrainInfo/ShowSpecialTrain.js diff --git a/components/ActionSheetComponents/EachTrainInfo/ShowSpecialTrain.js b/components/ActionSheetComponents/EachTrainInfo/ShowSpecialTrain.js new file mode 100644 index 0000000..c0a82f7 --- /dev/null +++ b/components/ActionSheetComponents/EachTrainInfo/ShowSpecialTrain.js @@ -0,0 +1,36 @@ +import { Text, TouchableOpacity } from "react-native"; +import React, { useState } from "react"; +export const ShowSpecialTrain = ({ + isTrainDataNothing, + setTrainData, + trainList, + trueTrainID, +}) => { + const replaceSpecialTrainDetail = (trainNum) => { + let TD = trainList[trainNum]; + if (!TD) return; + setTrainData(TD.split("#").filter((d) => d != "")); + }; + return ( + <> + {isTrainDataNothing && trueTrainID && ( + replaceSpecialTrainDetail(trueTrainID)} + style={{ + padding: 10, + flexDirection: "row", + borderColor: "blue", + borderWidth: 1, + margin: 10, + borderRadius: 5, + alignItems: "center", + }} + > + + 本来の列車情報を表示 + + + )} + + ); +}; diff --git a/components/ActionSheetComponents/EachTrainInfoCore.js b/components/ActionSheetComponents/EachTrainInfoCore.js index 0752178..84956a1 100644 --- a/components/ActionSheetComponents/EachTrainInfoCore.js +++ b/components/ActionSheetComponents/EachTrainInfoCore.js @@ -31,6 +31,7 @@ import { migrateTrainName } from "../../lib/eachTrainInfoCoreLib/migrateTrainNam import { getType } from "../../lib/eachTrainInfoCoreLib/getType"; import { searchSpecialTrain } from "../../lib/eachTrainInfoCoreLib/searchSpecialTrain"; import { openBackTrainInfo } from "../../lib/eachTrainInfoCoreLib/openBackTrainInfo"; +import { ShowSpecialTrain } from "./EachTrainInfo/ShowSpecialTrain"; export const EachTrainInfoCore = ({ actionSheetRef, @@ -69,7 +70,6 @@ export const EachTrainInfoCore = ({ ); return () => backHandler.remove(); }, []); - //bconst insets = useSafeAreaInsets(); const [headStation, setHeadStation] = useState([]); const [tailStation, setTailStation] = useState([]); @@ -184,12 +184,6 @@ export const EachTrainInfoCore = ({ } }, [currentTrainData]); - const replaceSpecialTrainDetail = (trainNum) => { - let TD = trainList[trainNum]; - if (!TD) return; - setTrainData(TD.split("#").filter((d) => d != "")); - }; - useEffect(() => { //列車現在地アイコン表示スイッチ AS.getItem("trainPositionSwitch") @@ -229,6 +223,10 @@ export const EachTrainInfoCore = ({ }); } }; + const viewHeader = + from == "AllTrainDiagramView" || + from == "NearTrainDiagramView" || + from == "LED2"; return ( ) : ( ) : ( ) )} - {/* - ほげほげふがふが */} - {trainData.length == 0 && trueTrainID && ( - replaceSpecialTrainDetail(trueTrainID)} - style={{ - padding: 10, - flexDirection: "row", - borderColor: "blue", - borderWidth: 1, - margin: 10, - borderRadius: 5, - alignItems: "center", - }} - > - - 本来の列車情報を表示 - - - )} + {trainData.map((i, index) => i.split(",")[1] == "提" ? ( diff --git a/components/DynamicHeaderScrollView.js b/components/DynamicHeaderScrollView.js index 82b9353..6845a69 100644 --- a/components/DynamicHeaderScrollView.js +++ b/components/DynamicHeaderScrollView.js @@ -15,8 +15,6 @@ export const DynamicHeaderScrollView = (props) => { } = props; const Scroll_Distance = Max_Header_Height - Min_Header_Height; - - const [headerVisible, setHeaderVisible] = useState(false); const shotHeaderStyle = { on: { height: Min_Header_Height, @@ -67,6 +65,18 @@ export const DynamicHeaderScrollView = (props) => { }, }; + const [headerVisible, setHeaderVisible] = useState(false); + + const onScroll = (event) => { + const scrollY = event.nativeEvent.contentOffset.y; + if (Scroll_Distance < scrollY == headerVisible) return; + LayoutAnimation.configureNext({ + duration: 100, + update: { type: "easeOut" }, + }); + setHeaderVisible(Scroll_Distance < scrollY); + }; + return ( @@ -92,27 +102,12 @@ export const DynamicHeaderScrollView = (props) => { { - const scrollY = event.nativeEvent.contentOffset.y; - LayoutAnimation.configureNext({ - duration: 100, - update: { type: "easeOut" }, - }); - setHeaderVisible(Scroll_Distance < scrollY); - }} + onScroll={onScroll} > - + {topStickyContent && ( Date: Sun, 24 Mar 2024 14:17:27 +0000 Subject: [PATCH 5/9] =?UTF-8?q?=E3=82=A6=E3=82=A3=E3=82=B8=E3=82=A7?= =?UTF-8?q?=E3=83=83=E3=83=88=E3=83=87=E3=82=B6=E3=82=A4=E3=83=B3=E8=AA=BF?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/AndroidWidget/TraInfoEXWidget.jsx | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/components/AndroidWidget/TraInfoEXWidget.jsx b/components/AndroidWidget/TraInfoEXWidget.jsx index 46cd4e8..d55cb43 100644 --- a/components/AndroidWidget/TraInfoEXWidget.jsx +++ b/components/AndroidWidget/TraInfoEXWidget.jsx @@ -23,9 +23,10 @@ export function TraInfoEXWidget({ time, delayString }) { justifyContent: "center", alignItems: "center", backgroundColor: "#0099CC", - width: "match_parent", + width: "100%", flexDirection: "row", - padding: 10, + paddingTop: 10, + paddingBottom: 10, }} > From f263dde61c6c125275dca0169cf214ad800f6ff6 Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Sun, 24 Mar 2024 17:23:20 +0000 Subject: [PATCH 6/9] =?UTF-8?q?=E5=8F=AF=E8=AA=AD=E6=80=A7=E3=82=92?= =?UTF-8?q?=E4=B8=8A=E3=81=92=E3=82=8B=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../EachTrainInfoCore.js | 85 +++++++++---------- components/DynamicHeaderScrollView.js | 33 +++++-- 2 files changed, 67 insertions(+), 51 deletions(-) diff --git a/components/ActionSheetComponents/EachTrainInfoCore.js b/components/ActionSheetComponents/EachTrainInfoCore.js index 84956a1..3c49f66 100644 --- a/components/ActionSheetComponents/EachTrainInfoCore.js +++ b/components/ActionSheetComponents/EachTrainInfoCore.js @@ -1,4 +1,4 @@ -import React, { useEffect, useState } from "react"; +import React, { useEffect, useMemo, useState } from "react"; import { View, LayoutAnimation, @@ -9,7 +9,7 @@ import { BackHandler, } from "react-native"; import { Ionicons } from "@expo/vector-icons"; -import { SheetManager, useScrollHandlers } from "react-native-actions-sheet"; +import { SheetManager } from "react-native-actions-sheet"; import { AS } from "../../storageControl"; import trainList from "../../assets/originData/trainList"; import { lineList } from "../../lib/getStationList"; @@ -50,7 +50,6 @@ export const EachTrainInfoCore = ({ // const [actionSheetHorizonalScroll, setActionSheetHorizonalScroll] = useState(false); useEffect(() => { - console.log(currentTrain.length); if (!currentTrain.length) return; setCurrentTrainData( checkDuplicateTrainData( @@ -80,9 +79,6 @@ export const EachTrainInfoCore = ({ const [trainPositionSwitch, setTrainPositionSwitch] = useState("false"); const [currentPosition, setCurrentPosition] = useState([]); const [trainData, setTrainData] = useState([]); - const scrollHandlers = actionSheetRef - ? useScrollHandlers("scrollview-1", actionSheetRef) - : null; const stationList = originalStationList && @@ -112,6 +108,28 @@ export const EachTrainInfoCore = ({ trainPositionSwitch == "true" ? findReversalPoints(currentPosition, stopStationIDList) : []; + const trainName = useMemo(() => { + if (!data.limited) return ""; + const limitedArray = data.limited.split(":"); + const type = getTrainType(limitedArray[0]); + + switch (true) { + case limitedArray[1]: + // 特急の場合は、列車名を取得 + return type + migrateTrainName(limitedArray[1]); + case trainData.length == 0: + // 特急以外の場合は、列車番号を取得 + return type; + default: + // 行先がある場合は、行先を取得 + return ( + type + + migrateTrainName( + trainData[trainData.length - 1].split(",")[0] + "行き" + ) + ); + } + }, [data.limited, trainData]); const { height, width } = useWindowDimensions(); const { isLandscape } = useDeviceOrientationChange(); @@ -223,10 +241,6 @@ export const EachTrainInfoCore = ({ }); } }; - const viewHeader = - from == "AllTrainDiagramView" || - from == "NearTrainDiagramView" || - from == "LED2"; return ( - {data.limited - ? getType(data.limited.split(":")[0]) + - migrateTrainName( - data.limited.split(":")[1] || - (trainData.length > 0 - ? trainData[trainData.length - 1].split(",")[0] + "行き" - : " ") - ) - : ""} + {trainName} @@ -289,40 +295,31 @@ export const EachTrainInfoCore = ({ )} - ) : ( - - ) + } longHeader={ - viewHeader ? ( - <> - ) : ( - - ) + } topStickyContent={ diff --git a/components/DynamicHeaderScrollView.js b/components/DynamicHeaderScrollView.js index 6845a69..e6f652b 100644 --- a/components/DynamicHeaderScrollView.js +++ b/components/DynamicHeaderScrollView.js @@ -1,20 +1,39 @@ import { ScrollView, View, Animated, LayoutAnimation } from "react-native"; -import React, { useState } from "react"; +import React, { useMemo, useState } from "react"; +import { useScrollHandlers } from "react-native-actions-sheet"; export const DynamicHeaderScrollView = (props) => { const { - Max_Header_Height = 200, - Min_Header_Height = 80, children, - scrollViewProps = {}, + actionSheetRef = {}, containerProps = {}, shortHeader = <>, longHeader = <>, topStickyContent, styles, + from, } = props; + const viewHeader = useMemo(() => { + switch (from) { + case "AllTrainDiagramView": + case "NearTrainDiagramView": + case "LED2": + return true; + default: + return false; + } + }, [from]); + + const Max_Header_Height = viewHeader ? 0 : 200; + const Min_Header_Height = viewHeader ? 0 : 80; + const Scroll_Distance = Max_Header_Height - Min_Header_Height; + + const scrollHandlers = actionSheetRef + ? useScrollHandlers("scrollview-1", actionSheetRef) + : null; + const shotHeaderStyle = { on: { height: Min_Header_Height, @@ -86,7 +105,7 @@ export const DynamicHeaderScrollView = (props) => { headerVisible ? shotHeaderStyle.on : shotHeaderStyle.off, ]} > - {shortHeader} + {viewHeader ? <> : shortHeader} { headerVisible ? longHeaderStyle.off : longHeaderStyle.on, ]} > - {longHeader} + {viewHeader ? <> : longHeader} {topStickyContent} Date: Sun, 24 Mar 2024 17:48:07 +0000 Subject: [PATCH 7/9] =?UTF-8?q?=E4=B8=8D=E8=A6=81=E3=81=AAnavigate?= =?UTF-8?q?=E3=82=92=E7=A7=BB=E5=8B=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Apps.js | 1 - .../ActionSheetComponents/EachTrainInfo/LongHeader.js | 2 -- .../ActionSheetComponents/EachTrainInfo/ShortHeader.js | 2 -- .../EachTrainInfo/TrainDataView.js | 10 +++++++--- components/ActionSheetComponents/EachTrainInfoCore.js | 6 ++---- 5 files changed, 9 insertions(+), 12 deletions(-) diff --git a/Apps.js b/Apps.js index fe2ddcf..f06b756 100644 --- a/Apps.js +++ b/Apps.js @@ -311,7 +311,6 @@ export default function Apps({ stationData }) { { return ( ); diff --git a/components/ActionSheetComponents/EachTrainInfo/ShortHeader.js b/components/ActionSheetComponents/EachTrainInfo/ShortHeader.js index 1f68b85..a289e24 100644 --- a/components/ActionSheetComponents/EachTrainInfo/ShortHeader.js +++ b/components/ActionSheetComponents/EachTrainInfo/ShortHeader.js @@ -7,7 +7,6 @@ export const ShortHeader = ({ currentPosition, nearTrainIDList, openTrainInfo, - navigate, }) => { return ( ); diff --git a/components/ActionSheetComponents/EachTrainInfo/TrainDataView.js b/components/ActionSheetComponents/EachTrainInfo/TrainDataView.js index 1f22c43..aba8784 100644 --- a/components/ActionSheetComponents/EachTrainInfo/TrainDataView.js +++ b/components/ActionSheetComponents/EachTrainInfo/TrainDataView.js @@ -5,6 +5,7 @@ import { useDeviceOrientationChange } from "../../../stateBox/useDeviceOrientati import { getStationList2 } from "../../../lib/getStationList2"; import { useCurrentTrain } from "../../../stateBox/useCurrentTrain"; import { SheetManager } from "react-native-actions-sheet"; +import { useNavigation } from "@react-navigation/native"; export const TrainDataView = ({ currentTrainData, @@ -12,8 +13,8 @@ export const TrainDataView = ({ nearTrainIDList, openTrainInfo, mode = 0, - navigate, }) => { + const { navigate } = useNavigation(); const { width, height } = useWindowDimensions(); const { isLandscape } = useDeviceOrientationChange(); const { webview, getCurrentTrain } = useCurrentTrain(); @@ -42,8 +43,11 @@ export const TrainDataView = ({ if (x.StationNumber == currentPosition[0]) test.push({ line: d, station: x }); }); - if(currentPosition[0]== "M12"){ - test.push({ line: "seto", station: {Station_JP: "児島", MyStation: "0"}}); + if (currentPosition[0] == "M12") { + test.push({ + line: "seto", + station: { Station_JP: "児島", MyStation: "0" }, + }); } }); if (!test.length) return; diff --git a/components/ActionSheetComponents/EachTrainInfoCore.js b/components/ActionSheetComponents/EachTrainInfoCore.js index 3c49f66..a35b7dc 100644 --- a/components/ActionSheetComponents/EachTrainInfoCore.js +++ b/components/ActionSheetComponents/EachTrainInfoCore.js @@ -32,18 +32,18 @@ import { getType } from "../../lib/eachTrainInfoCoreLib/getType"; import { searchSpecialTrain } from "../../lib/eachTrainInfoCoreLib/searchSpecialTrain"; import { openBackTrainInfo } from "../../lib/eachTrainInfoCoreLib/openBackTrainInfo"; import { ShowSpecialTrain } from "./EachTrainInfo/ShowSpecialTrain"; +import { useNavigation } from "@react-navigation/native"; export const EachTrainInfoCore = ({ actionSheetRef, data, - navigate, originalStationList, openStationACFromEachTrainInfo, from, setTrainInfo, }) => { // const [actionSheetHorizonalScroll, setActionSheetHorizonalScroll] = useState(false); - + const { navigate } = useNavigation(); const { currentTrain } = useCurrentTrain(); const [currentTrainData, setCurrentTrainData] = useState(); @@ -309,7 +309,6 @@ export const EachTrainInfoCore = ({ currentPosition={currentPosition} nearTrainIDList={nearTrainIDList} openTrainInfo={openTrainInfo} - navigate={navigate} /> } longHeader={ @@ -318,7 +317,6 @@ export const EachTrainInfoCore = ({ currentPosition={currentPosition} nearTrainIDList={nearTrainIDList} openTrainInfo={openTrainInfo} - navigate={navigate} /> } topStickyContent={ From c30d593838271dceff6887366962866c55478c9f Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Mon, 25 Mar 2024 00:22:23 +0000 Subject: [PATCH 8/9] =?UTF-8?q?=E3=82=AF=E3=83=A9=E3=83=83=E3=82=B7?= =?UTF-8?q?=E3=83=A5=E3=83=90=E3=82=B0=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Apps.js | 1 + .../ActionSheetComponents/EachTrainInfo/LongHeader.js | 2 ++ .../ActionSheetComponents/EachTrainInfo/ShortHeader.js | 2 ++ .../ActionSheetComponents/EachTrainInfo/TrainDataView.js | 2 +- components/ActionSheetComponents/EachTrainInfoCore.js | 6 ++++-- 5 files changed, 10 insertions(+), 3 deletions(-) diff --git a/Apps.js b/Apps.js index f06b756..ffc568d 100644 --- a/Apps.js +++ b/Apps.js @@ -315,6 +315,7 @@ export default function Apps({ stationData }) { openStationACFromEachTrainInfo, from: "Train", setTrainInfo, + navigate, }} /> diff --git a/components/ActionSheetComponents/EachTrainInfo/LongHeader.js b/components/ActionSheetComponents/EachTrainInfo/LongHeader.js index 95f23f9..0410b53 100644 --- a/components/ActionSheetComponents/EachTrainInfo/LongHeader.js +++ b/components/ActionSheetComponents/EachTrainInfo/LongHeader.js @@ -7,6 +7,7 @@ export const LongHeader = ({ currentPosition, nearTrainIDList, openTrainInfo, + navigate, }) => { return ( ); diff --git a/components/ActionSheetComponents/EachTrainInfo/ShortHeader.js b/components/ActionSheetComponents/EachTrainInfo/ShortHeader.js index a289e24..1f68b85 100644 --- a/components/ActionSheetComponents/EachTrainInfo/ShortHeader.js +++ b/components/ActionSheetComponents/EachTrainInfo/ShortHeader.js @@ -7,6 +7,7 @@ export const ShortHeader = ({ currentPosition, nearTrainIDList, openTrainInfo, + navigate, }) => { return ( ); diff --git a/components/ActionSheetComponents/EachTrainInfo/TrainDataView.js b/components/ActionSheetComponents/EachTrainInfo/TrainDataView.js index aba8784..05b2662 100644 --- a/components/ActionSheetComponents/EachTrainInfo/TrainDataView.js +++ b/components/ActionSheetComponents/EachTrainInfo/TrainDataView.js @@ -13,8 +13,8 @@ export const TrainDataView = ({ nearTrainIDList, openTrainInfo, mode = 0, + navigate, }) => { - const { navigate } = useNavigation(); const { width, height } = useWindowDimensions(); const { isLandscape } = useDeviceOrientationChange(); const { webview, getCurrentTrain } = useCurrentTrain(); diff --git a/components/ActionSheetComponents/EachTrainInfoCore.js b/components/ActionSheetComponents/EachTrainInfoCore.js index a35b7dc..4275a4a 100644 --- a/components/ActionSheetComponents/EachTrainInfoCore.js +++ b/components/ActionSheetComponents/EachTrainInfoCore.js @@ -41,9 +41,9 @@ export const EachTrainInfoCore = ({ openStationACFromEachTrainInfo, from, setTrainInfo, + navigate, }) => { // const [actionSheetHorizonalScroll, setActionSheetHorizonalScroll] = useState(false); - const { navigate } = useNavigation(); const { currentTrain } = useCurrentTrain(); const [currentTrainData, setCurrentTrainData] = useState(); @@ -111,7 +111,7 @@ export const EachTrainInfoCore = ({ const trainName = useMemo(() => { if (!data.limited) return ""; const limitedArray = data.limited.split(":"); - const type = getTrainType(limitedArray[0]); + const type = getType(limitedArray[0]); switch (true) { case limitedArray[1]: @@ -309,6 +309,7 @@ export const EachTrainInfoCore = ({ currentPosition={currentPosition} nearTrainIDList={nearTrainIDList} openTrainInfo={openTrainInfo} + navigate={navigate} /> } longHeader={ @@ -317,6 +318,7 @@ export const EachTrainInfoCore = ({ currentPosition={currentPosition} nearTrainIDList={nearTrainIDList} openTrainInfo={openTrainInfo} + navigate={navigate} /> } topStickyContent={ From 736f9a65e92257237f347bbe2d02fe88f0e409d6 Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Tue, 26 Mar 2024 12:54:21 +0000 Subject: [PATCH 9/9] 5.0.3.1 --- components/settings.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/settings.js b/components/settings.js index 181687b..1224d96 100644 --- a/components/settings.js +++ b/components/settings.js @@ -171,7 +171,7 @@ export default function Setting() { textAlignVertical: "center", }} > - 内部バージョン: 5.0.3 + 内部バージョン: 5.0.3.1