Merge commit '8c75e06ac18e33588b5bf200d7fccf05d3c34c22'
This commit is contained in:
commit
390acdeab7
3
Apps.js
3
Apps.js
@ -27,15 +27,16 @@ export function AppContainer() {
|
|||||||
const [fontLoaded, error] = useFonts({
|
const [fontLoaded, error] = useFonts({
|
||||||
"JR-Nishi": require("./assets/fonts/jr-nishi.otf"),
|
"JR-Nishi": require("./assets/fonts/jr-nishi.otf"),
|
||||||
Zou: require("./assets/fonts/DelaGothicOne-Regular.ttf"),
|
Zou: require("./assets/fonts/DelaGothicOne-Regular.ttf"),
|
||||||
|
"JNR-font": require("./assets/fonts/JNRfont_pict.ttf"),
|
||||||
});
|
});
|
||||||
return (
|
return (
|
||||||
<NavigationContainer ref={navigationRef}>
|
<NavigationContainer ref={navigationRef}>
|
||||||
<Tab.Navigator
|
<Tab.Navigator
|
||||||
tabBarOptions={{ keyboardHidesTabBar: Platform.OS === "android" }}
|
|
||||||
initialRouteName="topMenu"
|
initialRouteName="topMenu"
|
||||||
screenOptions={{
|
screenOptions={{
|
||||||
lazy: false,
|
lazy: false,
|
||||||
animation: "shift",
|
animation: "shift",
|
||||||
|
tabBarHideOnKeyboard: Platform.OS === "android",
|
||||||
}}
|
}}
|
||||||
detachInactiveScreens={false}
|
detachInactiveScreens={false}
|
||||||
lazy={false}
|
lazy={false}
|
||||||
|
2
Top.js
2
Top.js
@ -6,7 +6,7 @@ import TrainBase from "./components/trainbaseview";
|
|||||||
import HowTo from "./howto";
|
import HowTo from "./howto";
|
||||||
import News from "./components/news";
|
import News from "./components/news";
|
||||||
import TrainMenu from "./components/trainMenu";
|
import TrainMenu from "./components/trainMenu";
|
||||||
import FavoriteList from "./components/FavoriteList";
|
import { FavoriteList } from "./components/FavoriteList";
|
||||||
import { optionData } from "./lib/stackOption";
|
import { optionData } from "./lib/stackOption";
|
||||||
import { useCurrentTrain } from "./stateBox/useCurrentTrain";
|
import { useCurrentTrain } from "./stateBox/useCurrentTrain";
|
||||||
import { useTrainMenu } from "./stateBox/useTrainMenu";
|
import { useTrainMenu } from "./stateBox/useTrainMenu";
|
||||||
|
BIN
assets/fonts/JNRfont_pict.ttf
Normal file
BIN
assets/fonts/JNRfont_pict.ttf
Normal file
Binary file not shown.
94
assets/fonts/JNRfont_readme.txt
Normal file
94
assets/fonts/JNRfont_readme.txt
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
◆国鉄っぽいフォント(ぽいフォント)ピクトfor Win(xp)
|
||||||
|
かつて日本国有鉄道(国鉄)の吊り下げ式駅名標や駅の案内で使用されていたもピクトグラム
|
||||||
|
(プラスアルファ)を搭載したフォントです。
|
||||||
|
東海地方~四国で広く使用されていたものを見本としています。
|
||||||
|
|
||||||
|
◆作成ソフト
|
||||||
|
TTEditにより作成しています。
|
||||||
|
|
||||||
|
◆インストールの方法
|
||||||
|
「スタート」から設定、コントロールパネルを開き、さらに「フォント」フォルダを開きます。
|
||||||
|
ファイルメニューから「新しいフォントのインストール」で、フォントを選択のうえインストール
|
||||||
|
してください。
|
||||||
|
また、フォントファイルを適宜の場所に解凍し、上記「フォント」フォルダを開いたうえで、
|
||||||
|
ドラッグアンドドロップする方法でもインストールできます。
|
||||||
|
|
||||||
|
◆収録文字・記号一覧
|
||||||
|
左側が入力文字、右側が表示されるピクト類です。
|
||||||
|
0…公衆電話
|
||||||
|
1…エスカレーター(のぼり)
|
||||||
|
2…エスカレーター(くだり)
|
||||||
|
3…階段(おり)
|
||||||
|
4…階段(のぼり)
|
||||||
|
B…国鉄バスつばめマーク(つばめ左向き)
|
||||||
|
C…国鉄バスつばめマーク(つばめ右向き)
|
||||||
|
G…グリーン車マーク
|
||||||
|
J…国鉄「JNR」ロゴ
|
||||||
|
L…L特急マーク
|
||||||
|
M…公衆便所(男性)
|
||||||
|
S…シルバーシート
|
||||||
|
W…公衆便所(女性)
|
||||||
|
い…手荷物一時預かり
|
||||||
|
お…大阪市内の駅マーク
|
||||||
|
き…京都市内の駅マーク
|
||||||
|
く…北九州市内の駅マーク
|
||||||
|
け…禁煙マーク
|
||||||
|
こ…神戸市内の駅マーク
|
||||||
|
さ…札幌市内の駅マーク
|
||||||
|
し…新幹線
|
||||||
|
せ…仙台市内の駅マーク
|
||||||
|
た…タクシー
|
||||||
|
つ…つばめマーク(つばめ左向き)
|
||||||
|
ツ…つばめマーク(つばめ右向き)
|
||||||
|
て…手荷物預かり
|
||||||
|
で…国電
|
||||||
|
と…東京都区内の駅マーク
|
||||||
|
な…名古屋市内の駅マーク
|
||||||
|
は…国鉄ハイウェイバス
|
||||||
|
ば…路線バス
|
||||||
|
ひ…広島市内の駅マーク
|
||||||
|
ふ…福岡市内の駅マーク
|
||||||
|
ぶ…寝台急行マーク
|
||||||
|
ブ…寝台特急マーク
|
||||||
|
や…東京山手線内の駅マーク
|
||||||
|
ゆ…温泉マーク
|
||||||
|
よ…横浜市内の駅マーク
|
||||||
|
れ…レール
|
||||||
|
ろ…コインロッカー
|
||||||
|
←…矢印(左向き)
|
||||||
|
→…矢印(右向き)
|
||||||
|
↑…矢印(上向き)
|
||||||
|
↓…矢印(下向き)
|
||||||
|
|
||||||
|
◆ご使用に当たってのお願い
|
||||||
|
フォントは無料にて配布しています。商用利用には耐えられない出来だと思いますが、ご自身
|
||||||
|
の責任においてご自由にお使いください。
|
||||||
|
インストール及び使用にあたっても、ご自身の責任においてご使用ください。インストールや
|
||||||
|
使用によって蒙る損害については、当方は一切責任を負いかねます。
|
||||||
|
|
||||||
|
◆Windows Vistaをお使いの方へ
|
||||||
|
Windows Vistaをお使いの方で、フォントのエッジ(縁)を滑らかにしたい方は、スクリーンフ
|
||||||
|
ォントの縁を滑らかにする方法を「標準」にしてください。Clear Typeだと滑らかに表示されない
|
||||||
|
場合があります。
|
||||||
|
・標準への変更方法
|
||||||
|
1.ウィンドウ上で右クリックをします。
|
||||||
|
2.現れたメニュー中の「個人設定」を選択。
|
||||||
|
3.続いて「ウィンドウの色とデザイン」を選択。
|
||||||
|
4.一番下の「「デザイン」プロパティを開きます」をクリックします。
|
||||||
|
5.現れた別ウィンドウの「効果」ボタンをクリック。
|
||||||
|
6.「次の方法でスクリーンフォントの縁を滑らかにする」のところを「Clear Type」から「標
|
||||||
|
準」にします。
|
||||||
|
※これでこのフォントについてはより滑らかに表示されますが、他のフォントが滑らかに表示さ
|
||||||
|
れない場合が多くなります。
|
||||||
|
|
||||||
|
◆フォント自体についての若干のご説明
|
||||||
|
このフォントは、前述のとおり、国鉄において東海地区から四国地区の吊り下げ式駅名標や各種
|
||||||
|
案内表示で使用されたものを見本としています。もともとは、「鉄道掲示基準規程」という通達に
|
||||||
|
定められているピクトグラムです。
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
--------------------------------------
|
||||||
|
作成者:Yokochan
|
||||||
|
ホームページ:「旅と鉄の盲腸」http://travelcecum.xsrv.jp/font.htm
|
||||||
|
連絡先:travel_cecum@yahoo.co.jp
|
@ -923,7 +923,7 @@
|
|||||||
"585D":"徳島,発,22:55#阿波富田,発,22:58#二軒屋,発,23:01#文化の森,発,23:03#地蔵橋,発,23:07#中田,発,23:11#南小松島,発,23:15#阿波赤石,発,23:19#立江,発,23:22#羽ノ浦,発,23:26#西原,発,23:29#阿波中島,発,23:32#阿南,着,23:36#",
|
"585D":"徳島,発,22:55#阿波富田,発,22:58#二軒屋,発,23:01#文化の森,発,23:03#地蔵橋,発,23:07#中田,発,23:11#南小松島,発,23:15#阿波赤石,発,23:19#立江,発,23:22#羽ノ浦,発,23:26#西原,発,23:29#阿波中島,発,23:32#阿南,着,23:36#",
|
||||||
|
|
||||||
// 臨時列車
|
// 臨時列車
|
||||||
"9395D":"高松,発,22:10#昭和町,発,22:12#栗林公園北口,発,22:15#栗林,発,22:18#木太町,発,22:22#屋島,発,22:26#古高松南,発,22:38#八栗口,発,22:41#讃岐牟礼,発,22:44#志度,発,22:48#オレンジタウン,発,22:52#造田,発,22:56#神前,発,22:59#讃岐津田,発,23:05#鶴羽,発,23:09#丹生,発,23:14#三本松,着,23:18#WEST LIVE TOUR 2025臨/三本松,提,https://www.jr-shikoku.co.jp/03_news/pdf/20250228_20250323_west-live-tour-2025.pdf#普通 三本松行,提,https://www.jr-shikoku.co.jp/03_news/pdf/20250228_20250323_west-live-tour-2025.pdf#",
|
"9395D":"WEST LIVE TOUR 2025臨,提,https://www.jr-shikoku.co.jp/03_news/pdf/20250228_20250323_west-live-tour-2025.pdf#高松,発,22:10#昭和町,発,22:12#栗林公園北口,発,22:15#栗林,発,22:18#木太町,発,22:22#屋島,発,22:26#古高松南,発,22:38#八栗口,発,22:41#讃岐牟礼,発,22:44#志度,発,22:48#オレンジタウン,発,22:52#造田,発,22:56#神前,発,22:59#讃岐津田,発,23:05#鶴羽,発,23:09#丹生,発,23:14#三本松,着,23:18#",
|
||||||
"9174M":"高松,発,22:00#坂出,発,22:16#児島,発,22:39#茶屋町,発,22:55#早島,発,22:59#妹尾,発,23:03#岡山,着,23:12#WEST LIVE TOUR 2025臨,提,https://www.jr-shikoku.co.jp/03_news/pdf/20250228_20250323_west-live-tour-2025.pdf#快速マリンライナー94号 岡山行,提,https://www.jr-shikoku.co.jp/03_news/pdf/20250228_20250323_west-live-tour-2025.pdf#",
|
"9174M":"WEST LIVE TOUR 2025臨,提,https://www.jr-shikoku.co.jp/03_news/pdf/20250228_20250323_west-live-tour-2025.pdf#高松,発,22:00#坂出,発,22:16#児島,発,22:39#茶屋町,発,22:55#早島,発,22:59#妹尾,発,23:03#岡山,着,23:12#",
|
||||||
|
|
||||||
}
|
}
|
@ -189,7 +189,8 @@ export const EachTrainInfoCore = ({
|
|||||||
const count = position * 44 - 50;
|
const count = position * 44 - 50;
|
||||||
// 0.5秒待機してからスクロール
|
// 0.5秒待機してからスクロール
|
||||||
setTimeout(
|
setTimeout(
|
||||||
() => scrollHandlers.ref.current?.scrollTo({ y: count, animated: true }),
|
() =>
|
||||||
|
scrollHandlers.ref.current?.scrollTo({ y: count, animated: true }),
|
||||||
400
|
400
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -291,7 +292,7 @@ export const EachTrainInfoCore = ({
|
|||||||
} else if (pos[1] == "児島" && pos[0] == "宇多津") {
|
} else if (pos[1] == "児島" && pos[0] == "宇多津") {
|
||||||
setCurrentPosition(["Y09", "M12"]);
|
setCurrentPosition(["Y09", "M12"]);
|
||||||
return;
|
return;
|
||||||
}else if (pos[0] == "伊予若宮" && pos[1] == "伊予白滝") {
|
} else if (pos[0] == "伊予若宮" && pos[1] == "伊予白滝") {
|
||||||
setCurrentPosition(["S18", "S14"]);
|
setCurrentPosition(["S18", "S14"]);
|
||||||
return;
|
return;
|
||||||
} else if (pos[0] == "伊予白滝" && pos[1] == "伊予若宮") {
|
} else if (pos[0] == "伊予白滝" && pos[1] == "伊予若宮") {
|
||||||
@ -380,13 +381,6 @@ export const EachTrainInfoCore = ({
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const headerItem = {
|
|
||||||
currentTrainData,
|
|
||||||
currentPosition,
|
|
||||||
nearTrainIDList,
|
|
||||||
openTrainInfo,
|
|
||||||
navigate,
|
|
||||||
};
|
|
||||||
return (
|
return (
|
||||||
<View
|
<View
|
||||||
style={{
|
style={{
|
||||||
@ -419,6 +413,7 @@ export const EachTrainInfoCore = ({
|
|||||||
tailStation={tailStation}
|
tailStation={tailStation}
|
||||||
navigate={navigate}
|
navigate={navigate}
|
||||||
from={from}
|
from={from}
|
||||||
|
scrollHandlers={scrollHandlers}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<DynamicHeaderScrollView
|
<DynamicHeaderScrollView
|
||||||
@ -431,8 +426,28 @@ export const EachTrainInfoCore = ({
|
|||||||
maxHeight: isLandscape ? height - 94 : (height / 100) * 70,
|
maxHeight: isLandscape ? height - 94 : (height / 100) * 70,
|
||||||
},
|
},
|
||||||
}}
|
}}
|
||||||
shortHeader={<ShortHeader {...headerItem} />}
|
shortHeader={
|
||||||
longHeader={<LongHeader {...headerItem} />}
|
<ShortHeader
|
||||||
|
{...{
|
||||||
|
currentTrainData,
|
||||||
|
currentPosition,
|
||||||
|
nearTrainIDList,
|
||||||
|
openTrainInfo,
|
||||||
|
navigate,
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
}
|
||||||
|
longHeader={
|
||||||
|
<LongHeader
|
||||||
|
{...{
|
||||||
|
currentTrainData,
|
||||||
|
currentPosition,
|
||||||
|
nearTrainIDList,
|
||||||
|
openTrainInfo,
|
||||||
|
navigate,
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
}
|
||||||
topStickyContent={
|
topStickyContent={
|
||||||
<ScrollStickyContent
|
<ScrollStickyContent
|
||||||
{...{ currentTrainData, showThrew, setShowThrew, haveThrough }}
|
{...{ currentTrainData, showThrew, setShowThrew, haveThrough }}
|
||||||
|
@ -7,6 +7,8 @@ import { migrateTrainName } from "../../../lib/eachTrainInfoCoreLib/migrateTrain
|
|||||||
import { TrainIconStatus } from "./trainIconStatus";
|
import { TrainIconStatus } from "./trainIconStatus";
|
||||||
import { TrainViewIcon } from "./trainViewIcon";
|
import { TrainViewIcon } from "./trainViewIcon";
|
||||||
import { OneManText } from "./HeaderTextParts/OneManText";
|
import { OneManText } from "./HeaderTextParts/OneManText";
|
||||||
|
import { customTrainDataDetector } from "@/components/custom-train-data";
|
||||||
|
import { InfogramText } from "@/components/ActionSheetComponents/EachTrainInfoCore/HeaderTextParts/InfogramText";
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
data: { trainNum: string; limited: string };
|
data: { trainNum: string; limited: string };
|
||||||
@ -18,10 +20,11 @@ type Props = {
|
|||||||
navigate: any;
|
navigate: any;
|
||||||
from: string;
|
from: string;
|
||||||
fontLoaded: boolean;
|
fontLoaded: boolean;
|
||||||
|
scrollHandlers: any;
|
||||||
};
|
};
|
||||||
|
|
||||||
const textConfig: TextStyle = {
|
const textConfig: TextStyle = {
|
||||||
fontSize: 18,
|
fontSize: 17,
|
||||||
fontWeight: "bold",
|
fontWeight: "bold",
|
||||||
color: "white",
|
color: "white",
|
||||||
};
|
};
|
||||||
@ -35,105 +38,87 @@ export const HeaderText: FC<Props> = ({
|
|||||||
tailStation,
|
tailStation,
|
||||||
navigate,
|
navigate,
|
||||||
from,
|
from,
|
||||||
|
scrollHandlers
|
||||||
}) => {
|
}) => {
|
||||||
const { limited, trainNum } = data;
|
const { limited, trainNum } = data;
|
||||||
|
|
||||||
// 貨物の判定
|
|
||||||
const freightDetect = (num:string)=>{
|
|
||||||
switch(num){
|
|
||||||
case "71":
|
|
||||||
return "貨物 東京(タ)→高松(タ)";
|
|
||||||
case "73":
|
|
||||||
case "75":
|
|
||||||
return "貨物 大阪(タ)→高松(タ)";
|
|
||||||
case "3079":
|
|
||||||
return "貨物 高松(タ)→伊予三島";
|
|
||||||
case "3071":
|
|
||||||
case "3077":
|
|
||||||
return "貨物 高松(タ)→新居浜";
|
|
||||||
case "3073":
|
|
||||||
return "貨物 高松(タ)→松山貨物";
|
|
||||||
case "70":
|
|
||||||
return "貨物 高松(タ)→東京(タ)";
|
|
||||||
case "74":
|
|
||||||
case "76":
|
|
||||||
return "貨物 高松(タ)→大阪(タ)";
|
|
||||||
case "3078":
|
|
||||||
return "貨物 伊予三島→高松(タ)";
|
|
||||||
case "3070":
|
|
||||||
return "貨物 新居浜→高松(タ)";
|
|
||||||
case "3076":
|
|
||||||
return "貨物 新居浜→高松(タ)";
|
|
||||||
case "3072":
|
|
||||||
return "貨物 松山貨物→高松(タ)";
|
|
||||||
case "9070":
|
|
||||||
return "貨物 臨時";
|
|
||||||
default:
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 列車名、種別、フォントの取得
|
// 列車名、種別、フォントの取得
|
||||||
const [typeName, trainName, fontAvailable] = useMemo(() => {
|
const [typeName, trainName, fontAvailable, isOneMan, infogram] =
|
||||||
if (!limited) return "";
|
useMemo(() => {
|
||||||
const limitedArray = limited.split(":");
|
const customTrainData = customTrainDataDetector(trainNum);
|
||||||
const [type, fontAvailable] = (() => {
|
const [type, fontAvailable, isOneMan] = (() => {
|
||||||
const d = getType(limitedArray[0]);
|
switch (customTrainData.type) {
|
||||||
|
case "LTDEXP":
|
||||||
|
return ["特急", true, false];
|
||||||
|
case "Rapid":
|
||||||
|
return ["快速", true, false];
|
||||||
|
case "Normal":
|
||||||
|
return ["普通", true, false];
|
||||||
|
case "OneManRapid":
|
||||||
|
return ["快速", true, true];
|
||||||
|
case "OneMan":
|
||||||
|
return ["普通", true, true];
|
||||||
|
case "NightLTDEXP":
|
||||||
|
return ["特急", true, false];
|
||||||
|
case "SPCL":
|
||||||
|
return ["臨時", false, false];
|
||||||
|
case "SPCL_EXP":
|
||||||
|
return ["臨時特急", false, false];
|
||||||
|
case "SPCL_Rapid":
|
||||||
|
return ["臨時快速", true, false];
|
||||||
|
case "SPCL_Normal":
|
||||||
|
return ["臨時", true, false];
|
||||||
|
case "Freight":
|
||||||
|
return ["貨物", false, false];
|
||||||
|
case "Other":
|
||||||
|
switch (true) {
|
||||||
|
case !!trainNum.includes("T"):
|
||||||
|
return ["単機回送", false, false];
|
||||||
|
case !!trainNum.includes("R"):
|
||||||
|
case !!trainNum.includes("E"):
|
||||||
|
case !!trainNum.includes("L"):
|
||||||
|
case !!trainNum.includes("A"):
|
||||||
|
case !!trainNum.includes("B"):
|
||||||
|
return ["回送", false, false];
|
||||||
|
case !!trainNum.includes("H"):
|
||||||
|
return ["試運転", false, false];
|
||||||
|
}
|
||||||
|
return ["", false, false];
|
||||||
|
}
|
||||||
|
})();
|
||||||
switch (true) {
|
switch (true) {
|
||||||
case !!d:
|
case customTrainData.trainName !== "":
|
||||||
return [d, true];
|
// 特急の場合は、列車名を取得
|
||||||
case !!trainNum.includes("T"):
|
// 列番対称データがある場合はそれから列車番号を取得
|
||||||
return ["単機回送", false];
|
const distance = customTrainData.trainNumDistance;
|
||||||
case !!trainNum.includes("R"):
|
const number =
|
||||||
case !!trainNum.includes("E"):
|
distance !== null ? ` ${parseInt(trainNum) - distance}号` : "";
|
||||||
case !!trainNum.includes("L"):
|
const trainName = customTrainData.trainName + number;
|
||||||
case !!trainNum.includes("A"):
|
return [
|
||||||
case !!trainNum.includes("B"):
|
type,
|
||||||
return ["回送", false];
|
trainName,
|
||||||
case !!trainNum.includes("H"):
|
fontAvailable,
|
||||||
return ["試運転", false];
|
isOneMan,
|
||||||
case !!trainNum.match("D"):
|
customTrainData.infogram,
|
||||||
case !!trainNum.match("M"):
|
];
|
||||||
return ["普通", true];
|
case trainData[trainData.length - 1] === undefined:
|
||||||
case !!freightDetect(trainNum):
|
return [type, "", fontAvailable, isOneMan, customTrainData.infogram];
|
||||||
return [freightDetect(trainNum), false];
|
|
||||||
default:
|
default:
|
||||||
return ["", false];
|
// 行先がある場合は、行先を取得
|
||||||
|
return [
|
||||||
|
type,
|
||||||
|
migrateTrainName(
|
||||||
|
trainData[trainData.length - 1].split(",")[0] + "行き"
|
||||||
|
),
|
||||||
|
fontAvailable,
|
||||||
|
isOneMan,
|
||||||
|
customTrainData.infogram,
|
||||||
|
];
|
||||||
}
|
}
|
||||||
})();
|
}, [trainData]);
|
||||||
switch (true) {
|
|
||||||
case !!limitedArray[1]:
|
|
||||||
// 特急の場合は、列車名を取得
|
|
||||||
return [type, migrateTrainName(limitedArray[1]), fontAvailable];
|
|
||||||
case trainData.length == 0:
|
|
||||||
// 特急以外の場合は、列車番号を取得
|
|
||||||
|
|
||||||
return [type, "", fontAvailable];
|
|
||||||
default:
|
|
||||||
// 行先がある場合は、行先を取得
|
|
||||||
return [
|
|
||||||
type,
|
|
||||||
migrateTrainName(
|
|
||||||
trainData[trainData.length - 1].split(",")[0] + "行き"
|
|
||||||
),
|
|
||||||
fontAvailable,
|
|
||||||
];
|
|
||||||
}
|
|
||||||
}, [limited, trainData]);
|
|
||||||
|
|
||||||
// 1人運転の判定
|
|
||||||
const isOneMan = useMemo(() => {
|
|
||||||
const OneManRegex = new RegExp(/^4[1-9]\d\d[DM]$/);
|
|
||||||
const OneManRegex2 = new RegExp(/^5[1-7]\d\d[DM]$/);
|
|
||||||
return !!(
|
|
||||||
OneManRegex.test(trainNum) ||
|
|
||||||
OneManRegex2.test(trainNum) ||
|
|
||||||
trainNum === "3621D"
|
|
||||||
);
|
|
||||||
}, [trainNum]);
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<View style={{ padding: 10, flexDirection: "row", alignItems: "center" }}>
|
<View style={{ padding: 10, flexDirection: "row", alignItems: "center" }} onTouchStart={()=>scrollHandlers.ref.current?.scrollTo({ y: 0, animated: true })}>
|
||||||
<TrainIconStatus {...{ data, navigate, from }} />
|
<TrainIconStatus {...{ data, navigate, from }} />
|
||||||
<View
|
<View
|
||||||
style={{ borderRadius: 5, flexDirection: "row", alignItems: "center" }}
|
style={{ borderRadius: 5, flexDirection: "row", alignItems: "center" }}
|
||||||
@ -143,7 +128,7 @@ export const HeaderText: FC<Props> = ({
|
|||||||
fontSize: 20,
|
fontSize: 20,
|
||||||
color: "white",
|
color: "white",
|
||||||
fontFamily: fontAvailable ? "JR-Nishi" : undefined,
|
fontFamily: fontAvailable ? "JR-Nishi" : undefined,
|
||||||
fontWeight: !fontAvailable ?"bold":undefined,
|
fontWeight: !fontAvailable ? "bold" : undefined,
|
||||||
marginRight: 5,
|
marginRight: 5,
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
@ -151,6 +136,7 @@ export const HeaderText: FC<Props> = ({
|
|||||||
</Text>
|
</Text>
|
||||||
{isOneMan && <OneManText />}
|
{isOneMan && <OneManText />}
|
||||||
<Text style={textConfig}>{trainName}</Text>
|
<Text style={textConfig}>{trainName}</Text>
|
||||||
|
<InfogramText infogram={infogram} />
|
||||||
</View>
|
</View>
|
||||||
|
|
||||||
<View style={{ flex: 1 }} />
|
<View style={{ flex: 1 }} />
|
||||||
|
@ -0,0 +1,18 @@
|
|||||||
|
import React, { FC } from "react";
|
||||||
|
import { Text } from "react-native";
|
||||||
|
type props = {
|
||||||
|
infogram: string;
|
||||||
|
}
|
||||||
|
export const InfogramText: FC<props> = ({infogram}) => {
|
||||||
|
return (
|
||||||
|
<Text
|
||||||
|
style={{
|
||||||
|
fontSize: 20,
|
||||||
|
color: "white",
|
||||||
|
fontFamily: "JNR-font",
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{infogram}
|
||||||
|
</Text>
|
||||||
|
);
|
||||||
|
};
|
@ -49,6 +49,11 @@ export const AppsWebView = ({ openStationACFromEachTrainInfo }) => {
|
|||||||
|
|
||||||
const onMessage = (event) => {
|
const onMessage = (event) => {
|
||||||
const { data } = event.nativeEvent;
|
const { data } = event.nativeEvent;
|
||||||
|
/**
|
||||||
|
* {type,trainNum,limited}
|
||||||
|
* {type,currentLines}
|
||||||
|
* {type,event,id,name,pdf,map,url,chk}
|
||||||
|
*/
|
||||||
if (data.includes("train.html")) {
|
if (data.includes("train.html")) {
|
||||||
navigate("trainbase", { info: data, from: "Train" });
|
navigate("trainbase", { info: data, from: "Train" });
|
||||||
return;
|
return;
|
||||||
|
@ -17,7 +17,7 @@ import { SwitchArea } from "../atom/SwitchArea";
|
|||||||
import { useNotification } from "../../stateBox/useNotifications";
|
import { useNotification } from "../../stateBox/useNotifications";
|
||||||
import { SheetHeaderItem } from "@/components/atom/SheetHeaderItem";
|
import { SheetHeaderItem } from "@/components/atom/SheetHeaderItem";
|
||||||
|
|
||||||
const versionCode = "6.0";
|
const versionCode = "6.0.1";
|
||||||
|
|
||||||
export const SettingTopPage = ({
|
export const SettingTopPage = ({
|
||||||
testNFC,
|
testNFC,
|
||||||
|
@ -28,6 +28,7 @@ export const customTrainDataDetector = (TrainNumber: string) => {
|
|||||||
"http://jr-shikoku.co.jp/01_trainbus/vehicle-info/shiokaze.html",
|
"http://jr-shikoku.co.jp/01_trainbus/vehicle-info/shiokaze.html",
|
||||||
trainNumDistance: 0,
|
trainNumDistance: 0,
|
||||||
info: "いしづちと併結 / 8000系で運転",
|
info: "いしづちと併結 / 8000系で運転",
|
||||||
|
infogram: "G"
|
||||||
};
|
};
|
||||||
case "2M":
|
case "2M":
|
||||||
return {
|
return {
|
||||||
@ -38,6 +39,7 @@ export const customTrainDataDetector = (TrainNumber: string) => {
|
|||||||
"http://jr-shikoku.co.jp/01_trainbus/vehicle-info/shiokaze.html",
|
"http://jr-shikoku.co.jp/01_trainbus/vehicle-info/shiokaze.html",
|
||||||
trainNumDistance: 0,
|
trainNumDistance: 0,
|
||||||
info: "8000系で運転",
|
info: "8000系で運転",
|
||||||
|
infogram: "G"
|
||||||
};
|
};
|
||||||
//8000 アンパン
|
//8000 アンパン
|
||||||
case "10M":
|
case "10M":
|
||||||
@ -51,6 +53,7 @@ export const customTrainDataDetector = (TrainNumber: string) => {
|
|||||||
infoUrl: "https://www.jr-eki.com/aptrain/naani/yosan/train.html",
|
infoUrl: "https://www.jr-eki.com/aptrain/naani/yosan/train.html",
|
||||||
trainNumDistance: 0,
|
trainNumDistance: 0,
|
||||||
info: "いしづちと併結 / アンパンマン列車で運転",
|
info: "いしづちと併結 / アンパンマン列車で運転",
|
||||||
|
infogram: "G"
|
||||||
};
|
};
|
||||||
//8600
|
//8600
|
||||||
case "8M":
|
case "8M":
|
||||||
@ -69,6 +72,7 @@ export const customTrainDataDetector = (TrainNumber: string) => {
|
|||||||
"http://jr-shikoku.co.jp/01_trainbus/vehicle-info/shiokaze.html",
|
"http://jr-shikoku.co.jp/01_trainbus/vehicle-info/shiokaze.html",
|
||||||
trainNumDistance: 0,
|
trainNumDistance: 0,
|
||||||
info: "いしづちと併結 / 8600系で運転",
|
info: "いしづちと併結 / 8600系で運転",
|
||||||
|
infogram: "G"
|
||||||
};
|
};
|
||||||
|
|
||||||
//いしづちメイン
|
//いしづちメイン
|
||||||
@ -99,6 +103,7 @@ export const customTrainDataDetector = (TrainNumber: string) => {
|
|||||||
"http://jr-shikoku.co.jp/01_trainbus/vehicle-info/ishizuchi.html",
|
"http://jr-shikoku.co.jp/01_trainbus/vehicle-info/ishizuchi.html",
|
||||||
trainNumDistance: 1000,
|
trainNumDistance: 1000,
|
||||||
info: "しおかぜと併結 / 8000系で運転",
|
info: "しおかぜと併結 / 8000系で運転",
|
||||||
|
infogram: ""
|
||||||
};
|
};
|
||||||
|
|
||||||
//8000 アンパン
|
//8000 アンパン
|
||||||
@ -113,6 +118,7 @@ export const customTrainDataDetector = (TrainNumber: string) => {
|
|||||||
infoUrl: "https://www.jr-eki.com/aptrain/naani/yosan/train.html",
|
infoUrl: "https://www.jr-eki.com/aptrain/naani/yosan/train.html",
|
||||||
trainNumDistance: 1000,
|
trainNumDistance: 1000,
|
||||||
info: "しおかぜと併結 / アンパンマン列車で運転",
|
info: "しおかぜと併結 / アンパンマン列車で運転",
|
||||||
|
infogram: ""
|
||||||
};
|
};
|
||||||
|
|
||||||
//8600
|
//8600
|
||||||
@ -132,6 +138,7 @@ export const customTrainDataDetector = (TrainNumber: string) => {
|
|||||||
"http://jr-shikoku.co.jp/01_trainbus/vehicle-info/ishizuchi.html",
|
"http://jr-shikoku.co.jp/01_trainbus/vehicle-info/ishizuchi.html",
|
||||||
trainNumDistance: 1000,
|
trainNumDistance: 1000,
|
||||||
info: "しおかぜと併結 / 8600系で運転",
|
info: "しおかぜと併結 / 8600系で運転",
|
||||||
|
infogram: ""
|
||||||
};
|
};
|
||||||
|
|
||||||
//MEXP
|
//MEXP
|
||||||
@ -145,6 +152,7 @@ export const customTrainDataDetector = (TrainNumber: string) => {
|
|||||||
"http://jr-shikoku.co.jp/01_trainbus/vehicle-info/morning.html",
|
"http://jr-shikoku.co.jp/01_trainbus/vehicle-info/morning.html",
|
||||||
trainNumDistance: null,
|
trainNumDistance: null,
|
||||||
info: "8000系で運転",
|
info: "8000系で運転",
|
||||||
|
infogram: "G"
|
||||||
};
|
};
|
||||||
//8600
|
//8600
|
||||||
case "1091M":
|
case "1091M":
|
||||||
@ -156,6 +164,7 @@ export const customTrainDataDetector = (TrainNumber: string) => {
|
|||||||
"http://jr-shikoku.co.jp/01_trainbus/vehicle-info/morning.html",
|
"http://jr-shikoku.co.jp/01_trainbus/vehicle-info/morning.html",
|
||||||
trainNumDistance: null,
|
trainNumDistance: null,
|
||||||
info: "8600系で運転",
|
info: "8600系で運転",
|
||||||
|
infogram: "G"
|
||||||
};
|
};
|
||||||
//三桁いしづち
|
//三桁いしづち
|
||||||
//8000 アンパン
|
//8000 アンパン
|
||||||
@ -168,10 +177,21 @@ export const customTrainDataDetector = (TrainNumber: string) => {
|
|||||||
infoUrl: "https://www.jr-eki.com/aptrain/naani/yosan/train.html",
|
infoUrl: "https://www.jr-eki.com/aptrain/naani/yosan/train.html",
|
||||||
trainNumDistance: 940,
|
trainNumDistance: 940,
|
||||||
info: "アンパンマン列車で運転",
|
info: "アンパンマン列車で運転",
|
||||||
|
infogram: "G"
|
||||||
};
|
};
|
||||||
//8600
|
//8600
|
||||||
case "1043M":
|
case "1043M":
|
||||||
case "1042M":
|
case "1042M":
|
||||||
|
return {
|
||||||
|
type: "LTDEXP",
|
||||||
|
trainName: "いしづち",
|
||||||
|
trainIcon: "https://storage.haruk.in/s8600_isz.png",
|
||||||
|
infoUrl:
|
||||||
|
"http://jr-shikoku.co.jp/01_trainbus/vehicle-info/ishizuchi.html",
|
||||||
|
trainNumDistance: 940,
|
||||||
|
info: "8600系で運転",
|
||||||
|
infogram: ""
|
||||||
|
};
|
||||||
case "1046M":
|
case "1046M":
|
||||||
return {
|
return {
|
||||||
type: "LTDEXP",
|
type: "LTDEXP",
|
||||||
@ -181,6 +201,7 @@ export const customTrainDataDetector = (TrainNumber: string) => {
|
|||||||
"http://jr-shikoku.co.jp/01_trainbus/vehicle-info/ishizuchi.html",
|
"http://jr-shikoku.co.jp/01_trainbus/vehicle-info/ishizuchi.html",
|
||||||
trainNumDistance: 940,
|
trainNumDistance: 940,
|
||||||
info: "8600系で運転",
|
info: "8600系で運転",
|
||||||
|
infogram: "G"
|
||||||
};
|
};
|
||||||
|
|
||||||
//南風 2700ノーマル
|
//南風 2700ノーマル
|
||||||
@ -209,6 +230,7 @@ export const customTrainDataDetector = (TrainNumber: string) => {
|
|||||||
infoUrl: "http://jr-shikoku.co.jp/01_trainbus/vehicle-info/nanpu.html",
|
infoUrl: "http://jr-shikoku.co.jp/01_trainbus/vehicle-info/nanpu.html",
|
||||||
trainNumDistance: 30,
|
trainNumDistance: 30,
|
||||||
info: "2700系で運転",
|
info: "2700系で運転",
|
||||||
|
infogram: "G"
|
||||||
};
|
};
|
||||||
|
|
||||||
//2700アンパン
|
//2700アンパン
|
||||||
@ -231,6 +253,7 @@ export const customTrainDataDetector = (TrainNumber: string) => {
|
|||||||
infoUrl: "https://www.jr-eki.com/aptrain/naani/dosan/train.html",
|
infoUrl: "https://www.jr-eki.com/aptrain/naani/dosan/train.html",
|
||||||
trainNumDistance: 30,
|
trainNumDistance: 30,
|
||||||
info: "アンパンマン列車で運転",
|
info: "アンパンマン列車で運転",
|
||||||
|
infogram: "G"
|
||||||
};
|
};
|
||||||
|
|
||||||
//うずしお
|
//うずしお
|
||||||
@ -256,6 +279,7 @@ export const customTrainDataDetector = (TrainNumber: string) => {
|
|||||||
"http://jr-shikoku.co.jp/01_trainbus/vehicle-info/uzushio.html",
|
"http://jr-shikoku.co.jp/01_trainbus/vehicle-info/uzushio.html",
|
||||||
trainNumDistance: 3000,
|
trainNumDistance: 3000,
|
||||||
info: "2700系で運転",
|
info: "2700系で運転",
|
||||||
|
infogram: ""
|
||||||
};
|
};
|
||||||
|
|
||||||
//2700 二両編成
|
//2700 二両編成
|
||||||
@ -277,6 +301,7 @@ export const customTrainDataDetector = (TrainNumber: string) => {
|
|||||||
"http://jr-shikoku.co.jp/01_trainbus/vehicle-info/uzushio.html",
|
"http://jr-shikoku.co.jp/01_trainbus/vehicle-info/uzushio.html",
|
||||||
trainNumDistance: 3000,
|
trainNumDistance: 3000,
|
||||||
info: "2700系で運転",
|
info: "2700系で運転",
|
||||||
|
infogram: ""
|
||||||
};
|
};
|
||||||
|
|
||||||
//2600
|
//2600
|
||||||
@ -298,6 +323,7 @@ export const customTrainDataDetector = (TrainNumber: string) => {
|
|||||||
"http://jr-shikoku.co.jp/01_trainbus/vehicle-info/uzushio.html",
|
"http://jr-shikoku.co.jp/01_trainbus/vehicle-info/uzushio.html",
|
||||||
trainNumDistance: 3000,
|
trainNumDistance: 3000,
|
||||||
info: "2600系で運転",
|
info: "2600系で運転",
|
||||||
|
infogram: ""
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -377,6 +403,7 @@ export const customTrainDataDetector = (TrainNumber: string) => {
|
|||||||
infoUrl: "http://jr-shikoku.co.jp/01_trainbus/vehicle-info/marine.html",
|
infoUrl: "http://jr-shikoku.co.jp/01_trainbus/vehicle-info/marine.html",
|
||||||
trainNumDistance: 3100,
|
trainNumDistance: 3100,
|
||||||
info: "",
|
info: "",
|
||||||
|
infogram: "G"
|
||||||
};
|
};
|
||||||
case "3102M":
|
case "3102M":
|
||||||
case "3101M":
|
case "3101M":
|
||||||
@ -390,6 +417,103 @@ export const customTrainDataDetector = (TrainNumber: string) => {
|
|||||||
infoUrl: "http://jr-shikoku.co.jp/01_trainbus/vehicle-info/marine.html",
|
infoUrl: "http://jr-shikoku.co.jp/01_trainbus/vehicle-info/marine.html",
|
||||||
trainNumDistance: 3100,
|
trainNumDistance: 3100,
|
||||||
info: "",
|
info: "",
|
||||||
|
infogram: ""
|
||||||
|
};
|
||||||
|
//下りサンポート
|
||||||
|
case "1219M":
|
||||||
|
return {
|
||||||
|
type: "Normal",
|
||||||
|
trainName: "南風リレー",
|
||||||
|
trainIcon: "",
|
||||||
|
infoUrl: "",
|
||||||
|
trainNumDistance: null,
|
||||||
|
info: " 土曜・休日は多度津-琴平間運休",
|
||||||
|
infogram: ""
|
||||||
|
};
|
||||||
|
|
||||||
|
case "111M":
|
||||||
|
case "115M":
|
||||||
|
case "117M":
|
||||||
|
case "121M":
|
||||||
|
case "123M":
|
||||||
|
case "127M":
|
||||||
|
case "131M":
|
||||||
|
case "139M":
|
||||||
|
case "147M":
|
||||||
|
case "151M":
|
||||||
|
return {
|
||||||
|
type: "Rapid",
|
||||||
|
trainName: "サンポート南風リレー",
|
||||||
|
trainIcon: null,
|
||||||
|
infoUrl: null,
|
||||||
|
trainNumDistance: null,
|
||||||
|
info: null,
|
||||||
|
infogram: ""
|
||||||
|
};
|
||||||
|
case "5109M":
|
||||||
|
case "5135M":
|
||||||
|
case "5251M":
|
||||||
|
return {
|
||||||
|
type: "OneManRapid",
|
||||||
|
trainName: "サンポート南風リレー",
|
||||||
|
trainIcon: null,
|
||||||
|
infoUrl: null,
|
||||||
|
trainNumDistance: null,
|
||||||
|
info: null,
|
||||||
|
infogram: ""
|
||||||
|
};
|
||||||
|
case "137M":
|
||||||
|
return {
|
||||||
|
type: "Rapid",
|
||||||
|
trainName: "サンポート",
|
||||||
|
trainIcon: null,
|
||||||
|
infoUrl: null,
|
||||||
|
trainNumDistance: null,
|
||||||
|
info: "土曜・休日運休",
|
||||||
|
infogram: ""
|
||||||
|
};
|
||||||
|
//上りサンポート
|
||||||
|
case "116M":
|
||||||
|
return {
|
||||||
|
type: "Normal",
|
||||||
|
trainName: "南風リレー",
|
||||||
|
trainIcon: null,
|
||||||
|
infoUrl: null,
|
||||||
|
trainNumDistance: null,
|
||||||
|
info: null,
|
||||||
|
infogram: ""
|
||||||
|
};
|
||||||
|
|
||||||
|
case "130M":
|
||||||
|
case "132M":
|
||||||
|
case "136M":
|
||||||
|
case "140M":
|
||||||
|
case "144M":
|
||||||
|
case "146M":
|
||||||
|
case "150M":
|
||||||
|
case "156M":
|
||||||
|
return {
|
||||||
|
type: "Rapid",
|
||||||
|
trainName: "サンポート南風リレー",
|
||||||
|
trainIcon: "",
|
||||||
|
infoUrl: "",
|
||||||
|
trainNumDistance: null,
|
||||||
|
info: "",
|
||||||
|
infogram: ""
|
||||||
|
};
|
||||||
|
case "5118M":
|
||||||
|
case "5120M":
|
||||||
|
case "5124M":
|
||||||
|
case "5126M":
|
||||||
|
case "5252M":
|
||||||
|
return {
|
||||||
|
type: "OneManRapid",
|
||||||
|
trainName: "サンポート南風リレー",
|
||||||
|
trainIcon: null,
|
||||||
|
infoUrl: null,
|
||||||
|
trainNumDistance: null,
|
||||||
|
info: null,
|
||||||
|
infogram: ""
|
||||||
};
|
};
|
||||||
|
|
||||||
//サンライズ瀬戸
|
//サンライズ瀬戸
|
||||||
@ -403,6 +527,7 @@ export const customTrainDataDetector = (TrainNumber: string) => {
|
|||||||
"https://www.jr-odekake.net/train/sunriseseto_izumo/index.html",
|
"https://www.jr-odekake.net/train/sunriseseto_izumo/index.html",
|
||||||
trainNumDistance: null,
|
trainNumDistance: null,
|
||||||
info: "",
|
info: "",
|
||||||
|
infogram: "ブ"
|
||||||
};
|
};
|
||||||
case "8041M": //琴平延長高松迄
|
case "8041M": //琴平延長高松迄
|
||||||
case "8031M": //琴平延長高松以降
|
case "8031M": //琴平延長高松以降
|
||||||
@ -414,6 +539,7 @@ export const customTrainDataDetector = (TrainNumber: string) => {
|
|||||||
"https://www.jr-odekake.net/train/sunriseseto_izumo/index.html",
|
"https://www.jr-odekake.net/train/sunriseseto_izumo/index.html",
|
||||||
trainNumDistance: null,
|
trainNumDistance: null,
|
||||||
info: "琴平延長運転日",
|
info: "琴平延長運転日",
|
||||||
|
infogram: "ブ"
|
||||||
};
|
};
|
||||||
|
|
||||||
//宇和海
|
//宇和海
|
||||||
@ -451,6 +577,7 @@ export const customTrainDataDetector = (TrainNumber: string) => {
|
|||||||
infoUrl: "http://jr-shikoku.co.jp/01_trainbus/vehicle-info/uwakai.html",
|
infoUrl: "http://jr-shikoku.co.jp/01_trainbus/vehicle-info/uwakai.html",
|
||||||
trainNumDistance: 1050,
|
trainNumDistance: 1050,
|
||||||
info: "2000系で運転",
|
info: "2000系で運転",
|
||||||
|
infogram: ""
|
||||||
};
|
};
|
||||||
//2000 アンパン込み
|
//2000 アンパン込み
|
||||||
case "1058D":
|
case "1058D":
|
||||||
@ -466,6 +593,7 @@ export const customTrainDataDetector = (TrainNumber: string) => {
|
|||||||
infoUrl: "https://www.jr-eki.com/aptrain/naani/yosan/train.html",
|
infoUrl: "https://www.jr-eki.com/aptrain/naani/yosan/train.html",
|
||||||
trainNumDistance: 1050,
|
trainNumDistance: 1050,
|
||||||
info: "アンパン列車で運転",
|
info: "アンパン列車で運転",
|
||||||
|
infogram: ""
|
||||||
};
|
};
|
||||||
//しまんと
|
//しまんと
|
||||||
case "2002D":
|
case "2002D":
|
||||||
@ -480,6 +608,7 @@ export const customTrainDataDetector = (TrainNumber: string) => {
|
|||||||
"http://jr-shikoku.co.jp/01_trainbus/vehicle-info/shimanto.html",
|
"http://jr-shikoku.co.jp/01_trainbus/vehicle-info/shimanto.html",
|
||||||
trainNumDistance: 2000,
|
trainNumDistance: 2000,
|
||||||
info: "2700系で運転",
|
info: "2700系で運転",
|
||||||
|
infogram: ""
|
||||||
};
|
};
|
||||||
|
|
||||||
//あしずり 2000
|
//あしずり 2000
|
||||||
@ -499,14 +628,25 @@ export const customTrainDataDetector = (TrainNumber: string) => {
|
|||||||
"http://jr-shikoku.co.jp/01_trainbus/vehicle-info/ashizuri.html",
|
"http://jr-shikoku.co.jp/01_trainbus/vehicle-info/ashizuri.html",
|
||||||
trainNumDistance: 2070,
|
trainNumDistance: 2070,
|
||||||
info: "2000系で運転",
|
info: "2000系で運転",
|
||||||
|
infogram: ""
|
||||||
};
|
};
|
||||||
|
|
||||||
//あしずり 2700
|
//あしずり 2700
|
||||||
case "2072D":
|
|
||||||
case "2078D":
|
case "2078D":
|
||||||
case "2084D":
|
case "2084D":
|
||||||
case "2075D":
|
case "2075D":
|
||||||
case "2077D":
|
case "2077D":
|
||||||
|
return {
|
||||||
|
type: "LTDEXP",
|
||||||
|
trainName: "あしずり",
|
||||||
|
trainIcon: "https://storage.haruk.in/s2700_asi.png",
|
||||||
|
infoUrl:
|
||||||
|
"http://jr-shikoku.co.jp/01_trainbus/vehicle-info/ashizuri.html",
|
||||||
|
trainNumDistance: 2070,
|
||||||
|
info: "2700系で運転",
|
||||||
|
infogram: ""
|
||||||
|
};
|
||||||
|
case "2072D":
|
||||||
case "2083D":
|
case "2083D":
|
||||||
return {
|
return {
|
||||||
type: "LTDEXP",
|
type: "LTDEXP",
|
||||||
@ -516,6 +656,7 @@ export const customTrainDataDetector = (TrainNumber: string) => {
|
|||||||
"http://jr-shikoku.co.jp/01_trainbus/vehicle-info/ashizuri.html",
|
"http://jr-shikoku.co.jp/01_trainbus/vehicle-info/ashizuri.html",
|
||||||
trainNumDistance: 2070,
|
trainNumDistance: 2070,
|
||||||
info: "2700系で運転",
|
info: "2700系で運転",
|
||||||
|
infogram: "G"
|
||||||
};
|
};
|
||||||
|
|
||||||
//剣山
|
//剣山
|
||||||
@ -534,6 +675,7 @@ export const customTrainDataDetector = (TrainNumber: string) => {
|
|||||||
"http://jr-shikoku.co.jp/01_trainbus/vehicle-info/tsurugisan.html",
|
"http://jr-shikoku.co.jp/01_trainbus/vehicle-info/tsurugisan.html",
|
||||||
trainNumDistance: 4000,
|
trainNumDistance: 4000,
|
||||||
info: "キハ185系で運転",
|
info: "キハ185系で運転",
|
||||||
|
infogram: ""
|
||||||
};
|
};
|
||||||
|
|
||||||
//よしのがわトロッコ
|
//よしのがわトロッコ
|
||||||
@ -547,6 +689,7 @@ export const customTrainDataDetector = (TrainNumber: string) => {
|
|||||||
"http://jr-shikoku.co.jp/01_trainbus/event_train/yoshino_torokko.html",
|
"http://jr-shikoku.co.jp/01_trainbus/event_train/yoshino_torokko.html",
|
||||||
trainNumDistance: null,
|
trainNumDistance: null,
|
||||||
info: "",
|
info: "",
|
||||||
|
infogram: ""
|
||||||
};
|
};
|
||||||
|
|
||||||
//岡山高松アントロ
|
//岡山高松アントロ
|
||||||
@ -563,6 +706,7 @@ export const customTrainDataDetector = (TrainNumber: string) => {
|
|||||||
"https://www.jr-eki.com/aptrain/naani/torokko_seto/jikoku.html",
|
"https://www.jr-eki.com/aptrain/naani/torokko_seto/jikoku.html",
|
||||||
trainNumDistance: null,
|
trainNumDistance: null,
|
||||||
info: "",
|
info: "",
|
||||||
|
infogram: "G"
|
||||||
};
|
};
|
||||||
|
|
||||||
//伊予灘ものがたり
|
//伊予灘ものがたり
|
||||||
@ -575,6 +719,7 @@ export const customTrainDataDetector = (TrainNumber: string) => {
|
|||||||
infoUrl: "https://iyonadamonogatari.com/",
|
infoUrl: "https://iyonadamonogatari.com/",
|
||||||
trainNumDistance: null,
|
trainNumDistance: null,
|
||||||
info: "",
|
info: "",
|
||||||
|
infogram: "G"
|
||||||
};
|
};
|
||||||
case "8092D":
|
case "8092D":
|
||||||
case "8094D":
|
case "8094D":
|
||||||
@ -585,6 +730,7 @@ export const customTrainDataDetector = (TrainNumber: string) => {
|
|||||||
infoUrl: "https://iyonadamonogatari.com/",
|
infoUrl: "https://iyonadamonogatari.com/",
|
||||||
trainNumDistance: null,
|
trainNumDistance: null,
|
||||||
info: "",
|
info: "",
|
||||||
|
infogram: "G"
|
||||||
};
|
};
|
||||||
|
|
||||||
//千年ものがたり
|
//千年ものがたり
|
||||||
@ -597,6 +743,7 @@ export const customTrainDataDetector = (TrainNumber: string) => {
|
|||||||
infoUrl: "https://www.jr-shikoku.co.jp/sennenmonogatari/",
|
infoUrl: "https://www.jr-shikoku.co.jp/sennenmonogatari/",
|
||||||
trainNumDistance: null,
|
trainNumDistance: null,
|
||||||
info: "",
|
info: "",
|
||||||
|
infogram: "G"
|
||||||
};
|
};
|
||||||
|
|
||||||
//夜明けものがたり
|
//夜明けものがたり
|
||||||
@ -611,27 +758,41 @@ export const customTrainDataDetector = (TrainNumber: string) => {
|
|||||||
infoUrl: "https://www.jr-shikoku.co.jp/yoakenomonogatari/index.html",
|
infoUrl: "https://www.jr-shikoku.co.jp/yoakenomonogatari/index.html",
|
||||||
trainNumDistance: null,
|
trainNumDistance: null,
|
||||||
info: "",
|
info: "",
|
||||||
|
infogram: "G"
|
||||||
};
|
};
|
||||||
case "9174M":
|
case "9174M":
|
||||||
return {
|
return {
|
||||||
type: "SPCL",
|
type: "SPCL_Rapid",
|
||||||
trainName: "[快速]マリンライナー94号",
|
trainName: "マリンライナー94号",
|
||||||
trainIcon: "https://storage.haruk.in/s5001.png",
|
trainIcon: "https://storage.haruk.in/s5001.png",
|
||||||
infoUrl: "http://jr-shikoku.co.jp/01_trainbus/vehicle-info/marine.html",
|
infoUrl: "http://jr-shikoku.co.jp/01_trainbus/vehicle-info/marine.html",
|
||||||
trainNumDistance: null,
|
trainNumDistance: null,
|
||||||
info: "WEST LIVE TOUR 2025臨 3/21,22のみ運転",
|
info: "WEST LIVE TOUR 2025臨 3/21,22のみ運転",
|
||||||
|
infogram: "G"
|
||||||
};
|
};
|
||||||
case "9395D":
|
case "9395D":
|
||||||
return {
|
return {
|
||||||
type: "SPCL",
|
type: "SPCL_Normal",
|
||||||
trainName: "普通列車",
|
trainName: "",
|
||||||
trainIcon: "",
|
trainIcon: null,
|
||||||
infoUrl: "",
|
infoUrl: null,
|
||||||
trainNumDistance: null,
|
trainNumDistance: null,
|
||||||
info: "WEST LIVE TOUR 2025臨 3/21,22のみ運転",
|
info: "WEST LIVE TOUR 2025臨 3/21,22のみ運転",
|
||||||
|
infogram: ""
|
||||||
};
|
};
|
||||||
default:
|
default:
|
||||||
if (
|
if(getJRF(TrainNumber) !== null){
|
||||||
|
return {
|
||||||
|
type: "Freight",
|
||||||
|
trainName: getJRF(TrainNumber),
|
||||||
|
trainIcon: "https://storage.haruk.in/ef210a.png",
|
||||||
|
infoUrl: null,
|
||||||
|
trainNumDistance: null,
|
||||||
|
info: "",
|
||||||
|
infogram: "",
|
||||||
|
};
|
||||||
|
}
|
||||||
|
else if (
|
||||||
new RegExp(/^4[1-9]\d\d[DM]$/).test(TrainNumber) ||
|
new RegExp(/^4[1-9]\d\d[DM]$/).test(TrainNumber) ||
|
||||||
new RegExp(/^5[1-7]\d\d[DM]$/).test(TrainNumber) ||
|
new RegExp(/^5[1-7]\d\d[DM]$/).test(TrainNumber) ||
|
||||||
new RegExp(/^3[2-9]\d\d[DM]$/).test(TrainNumber)
|
new RegExp(/^3[2-9]\d\d[DM]$/).test(TrainNumber)
|
||||||
@ -643,48 +804,64 @@ export const customTrainDataDetector = (TrainNumber: string) => {
|
|||||||
infoUrl: null,
|
infoUrl: null,
|
||||||
trainNumDistance: null,
|
trainNumDistance: null,
|
||||||
info: null,
|
info: null,
|
||||||
|
infogram: ""
|
||||||
};
|
};
|
||||||
else
|
else if (
|
||||||
return {
|
new RegExp(/^[1-9]\d\d[DM]$/).test(TrainNumber) ||
|
||||||
type: "Normal",
|
new RegExp(/^1[26]\d\d[DM]$/).test(TrainNumber) ||
|
||||||
trainName: "",
|
new RegExp(/^6\d\d\d[DM]$/).test(TrainNumber)
|
||||||
trainIcon: null,
|
){
|
||||||
infoUrl: null,
|
return {
|
||||||
trainNumDistance: null,
|
type: "Normal",
|
||||||
info: null,
|
trainName: "",
|
||||||
};
|
trainIcon: null,
|
||||||
break;
|
infoUrl: null,
|
||||||
|
trainNumDistance: null,
|
||||||
|
info: null,
|
||||||
|
infogram: ""
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
return {
|
||||||
|
type: "Other",
|
||||||
|
trainName: "",
|
||||||
|
trainIcon: null,
|
||||||
|
infoUrl: null,
|
||||||
|
trainNumDistance: null,
|
||||||
|
info: null,
|
||||||
|
infogram: ""
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
export const getJRF = (num: string) => {
|
export const getJRF = (num: string) => {
|
||||||
switch (num) {
|
switch (num) {
|
||||||
case "71":
|
case "71":
|
||||||
return "東京(タ)→高松(タ)\\n";
|
return "東京(タ)→高松(タ)";
|
||||||
case "73":
|
case "73":
|
||||||
case "75":
|
case "75":
|
||||||
return "大阪(タ)→高松(タ)\\n";
|
return "大阪(タ)→高松(タ)";
|
||||||
case "3079":
|
case "3079":
|
||||||
return "高松(タ)→伊予三島\\n";
|
return "高松(タ)→伊予三島";
|
||||||
case "3071":
|
case "3071":
|
||||||
case "3077":
|
case "3077":
|
||||||
return "高松(タ)→新居浜\\n";
|
return "高松(タ)→新居浜";
|
||||||
case "3073":
|
case "3073":
|
||||||
return "高松(タ)→松山貨物\\n";
|
return "高松(タ)→松山貨物";
|
||||||
case "70":
|
case "70":
|
||||||
return "高松(タ)→東京(タ)\\n";
|
return "高松(タ)→東京(タ)";
|
||||||
case "74":
|
case "74":
|
||||||
case "76":
|
case "76":
|
||||||
return "高松(タ)→大阪(タ)\\n";
|
return "高松(タ)→大阪(タ)";
|
||||||
case "3078":
|
case "3078":
|
||||||
return "伊予三島→高松(タ)\\n";
|
return "伊予三島→高松(タ)";
|
||||||
case "3070":
|
case "3070":
|
||||||
return "新居浜→高松(タ)\\n";
|
return "新居浜→高松(タ)";
|
||||||
case "3076":
|
case "3076":
|
||||||
return "新居浜→高松(タ)\\n";
|
return "新居浜→高松(タ)";
|
||||||
case "3072":
|
case "3072":
|
||||||
return "松山貨物→高松(タ)\\n";
|
return "松山貨物→高松(タ)";
|
||||||
case "9070":
|
case "9070":
|
||||||
return "臨時貨物\\n";
|
return "臨時";
|
||||||
default:
|
default:
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -23,12 +23,16 @@ type getTrainType = (d: nameString) => {
|
|||||||
export const getTrainType: getTrainType = (nameString) => {
|
export const getTrainType: getTrainType = (nameString) => {
|
||||||
switch (nameString) {
|
switch (nameString) {
|
||||||
case "Rapid":
|
case "Rapid":
|
||||||
|
case "OneManRapid":
|
||||||
return { color: "aqua", name: "快速", data: "rapid" };
|
return { color: "aqua", name: "快速", data: "rapid" };
|
||||||
case "LTDEXP":
|
case "LTDEXP":
|
||||||
return { color: "red", name: "特急", data: "express" };
|
return { color: "red", name: "特急", data: "express" };
|
||||||
case "NightLTDEXP":
|
case "NightLTDEXP":
|
||||||
return { color: "red", name: "寝台特急", data: "express" };
|
return { color: "red", name: "寝台特急", data: "express" };
|
||||||
case "SPCL":
|
case "SPCL":
|
||||||
|
case "SPCL_Rapid":
|
||||||
|
case "SPCL_EXP":
|
||||||
|
case "SPCL_Normal":
|
||||||
return { color: "#297bff", name: "臨時", data: "normal" };
|
return { color: "#297bff", name: "臨時", data: "normal" };
|
||||||
case "OneMan":
|
case "OneMan":
|
||||||
return { color: "white", name: "普通列車(ワンマン)", data: "normal" };
|
return { color: "white", name: "普通列車(ワンマン)", data: "normal" };
|
||||||
|
@ -902,97 +902,89 @@ export const injectJavascriptData: InjectJavascriptData = (
|
|||||||
// case "8094D":
|
// case "8094D":
|
||||||
// setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s185iyoy.png');
|
// setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s185iyoy.png');
|
||||||
// break;
|
// break;
|
||||||
// // 高徳線、徳島線、牟岐線、鳴門線普通列車系統
|
|
||||||
// // キハ40・47
|
// 高徳線、徳島線、牟岐線、鳴門線普通列車系統
|
||||||
// case "4303D":
|
// キハ40・47
|
||||||
// case "363D":
|
case "4303D":
|
||||||
// case "369D":
|
case "371D":
|
||||||
// case "314D":
|
case "316D":
|
||||||
// case "316D":
|
case "362D":
|
||||||
// case "368D":
|
case "4376D":
|
||||||
// case "4382D":
|
case "951D":
|
||||||
// case "951D":
|
case "953D":
|
||||||
// case "953D":
|
case "955D":
|
||||||
// case "955D":
|
case "973D":
|
||||||
// case "973D":
|
case "975D":
|
||||||
// case "975D":
|
case "977D":
|
||||||
// case "977D":
|
case "979D":
|
||||||
// case "979D":
|
case "981D":
|
||||||
// case "981D":
|
case "950D":
|
||||||
// case "950D":
|
case "968D":
|
||||||
// case "968D":
|
case "970D":
|
||||||
// case "970D":
|
case "972D":
|
||||||
// case "972D":
|
case "974D":
|
||||||
// case "974D":
|
case "976D":
|
||||||
// case "976D":
|
case "980D":
|
||||||
// case "980D":
|
case "982D":
|
||||||
// case "982D":
|
setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s40.png');
|
||||||
// setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s40.png');
|
break;
|
||||||
// break;
|
// 1000形
|
||||||
// // 1000形
|
case "4311D":
|
||||||
// case "4309D":
|
case "363D":
|
||||||
// case "4311D":
|
case "356D":
|
||||||
// case "371D":
|
case "4374D":
|
||||||
// case "4318D":
|
case "433D":
|
||||||
// case "358D":
|
case "4447D":
|
||||||
// case "4380D":
|
case "451D":
|
||||||
// case "433D":
|
case "450D":
|
||||||
// case "473D":
|
case "4458D":
|
||||||
// case "450D":
|
case "474D":
|
||||||
// case "480D":
|
setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s1000.png');
|
||||||
// setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s1000.png');
|
break;
|
||||||
// break;
|
// 1200形
|
||||||
// // 1200形
|
case "4301D":
|
||||||
// case "4301D":
|
case "4327D":
|
||||||
// case "4327D":
|
case "4329D":
|
||||||
// case "4329D":
|
case "4343D":
|
||||||
// case "4343D":
|
case "353D":
|
||||||
// case "351D":
|
case "355D":
|
||||||
// case "353D":
|
case "367D":
|
||||||
// case "355D":
|
case "310D":
|
||||||
// case "4355D":
|
case "4326D":
|
||||||
// case "4361D":
|
case "4334D":
|
||||||
// case "367D":
|
case "4342D":
|
||||||
// case "4330D":
|
case "358D":
|
||||||
// case "4336D":
|
case "364D":
|
||||||
// case "4346D":
|
case "4453D":
|
||||||
// case "360D":
|
case "4455D":
|
||||||
// case "362D":
|
case "4457D":
|
||||||
// case "4370D":
|
case "463D":
|
||||||
// case "374D":
|
case "475D":
|
||||||
// case "4378D":
|
case "477D":
|
||||||
// case "451D":
|
case "485D":
|
||||||
// case "4453D":
|
case "4430D":
|
||||||
// case "4455D":
|
case "434D":
|
||||||
// case "4459D":
|
case "438D":
|
||||||
// case "471D":
|
case "4460D":
|
||||||
// case "475D":
|
case "4464D":
|
||||||
// case "485D":
|
case "4466D":
|
||||||
// case "4430D":
|
case "478D":
|
||||||
// case "434D":
|
case "484D":
|
||||||
// case "438D":
|
case "957D":
|
||||||
// case "4460D":
|
case "4959D":
|
||||||
// case "4466D":
|
case "4963D":
|
||||||
// case "4470D":
|
case "4967D":
|
||||||
// case "474D":
|
case "4971D":
|
||||||
// case "484D":
|
case "952D":
|
||||||
// case "957D":
|
case "4954D":
|
||||||
// case "4959D":
|
case "4958D":
|
||||||
// case "4963D":
|
case "4962D":
|
||||||
// case "4967D":
|
case "4966D":
|
||||||
// case "4971D":
|
setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s1200n.png');
|
||||||
// case "4983D":
|
break;
|
||||||
// case "952D":
|
|
||||||
// case "4954D":
|
|
||||||
// case "4958D":
|
|
||||||
// case "4962D":
|
|
||||||
// case "4966D":
|
|
||||||
// case "4978D":
|
|
||||||
// setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s1200n.png');
|
|
||||||
// break;
|
|
||||||
|
|
||||||
|
|
||||||
// default: //指定車両でなく、Regexでの指定に移動
|
default: //指定車両でなく、Regexでの指定に移動
|
||||||
// // 琴平直通系普通電車
|
// // 琴平直通系普通電車
|
||||||
// if(new RegExp(/^(1|4|5)2\\d\\dM$/).test(列番データ)){
|
// if(new RegExp(/^(1|4|5)2\\d\\dM$/).test(列番データ)){
|
||||||
// setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s7200.png');
|
// setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s7200.png');
|
||||||
@ -1006,30 +998,31 @@ export const injectJavascriptData: InjectJavascriptData = (
|
|||||||
// setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s7000.png');
|
// setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s7000.png');
|
||||||
// break;
|
// break;
|
||||||
// }// 高徳線 普通列車系統
|
// }// 高徳線 普通列車系統
|
||||||
// else if(new RegExp(/^(4|5)3\\d\\dD$/).test(列番データ)){
|
// else
|
||||||
// setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s1500.png');
|
if(new RegExp(/^(4|5)3\\d\\dD$/).test(列番データ)){
|
||||||
// break;
|
setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s1500.png');
|
||||||
// }
|
break;
|
||||||
// else if(new RegExp(/^3\\d\\dD$/).test(列番データ)){
|
}
|
||||||
// setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s1500.png');
|
else if(new RegExp(/^3\\d\\dD$/).test(列番データ)){
|
||||||
// break;
|
setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s1500.png');
|
||||||
// }// 徳島線 普通列車系統
|
break;
|
||||||
// else if(new RegExp(/^(4|5)4\\d\\dD$/).test(列番データ)){
|
}// 徳島線 普通列車系統
|
||||||
// setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s1500.png');
|
else if(new RegExp(/^(4|5)4\\d\\dD$/).test(列番データ)){
|
||||||
// break;
|
setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s1500.png');
|
||||||
// }
|
break;
|
||||||
// else if(new RegExp(/^4\\d\\dD$/).test(列番データ)){
|
}
|
||||||
// setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s1500.png');
|
else if(new RegExp(/^4\\d\\dD$/).test(列番データ)){
|
||||||
// break;
|
setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s1500.png');
|
||||||
// }// 鳴門線普通列車系統
|
break;
|
||||||
// else if(new RegExp(/^(4|5)9(5|6|7|8)\\dD$/).test(列番データ)){
|
}// 鳴門線普通列車系統
|
||||||
// setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s1500.png');
|
else if(new RegExp(/^(4|5)9(5|6|7|8)\\dD$/).test(列番データ)){
|
||||||
// break;
|
setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s1500.png');
|
||||||
// }
|
break;
|
||||||
// else if(new RegExp(/^9(5|6|7|8)\\dD$/).test(列番データ)){
|
}
|
||||||
// setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s1500.png');
|
else if(new RegExp(/^9(5|6|7|8)\\dD$/).test(列番データ)){
|
||||||
// break;
|
setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s1500.png');
|
||||||
// }
|
break;
|
||||||
|
}
|
||||||
// 牟岐線普通列車系統 一旦閉鎖
|
// 牟岐線普通列車系統 一旦閉鎖
|
||||||
// else if(new RegExp(/^(4|5)5\\d\\dD$/).test(列番データ)){
|
// else if(new RegExp(/^(4|5)5\\d\\dD$/).test(列番データ)){
|
||||||
// setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s7200.png');
|
// setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s7200.png');
|
||||||
|
@ -16,8 +16,8 @@ export const AllTrainDiagramProvider = ({ children }) => {
|
|||||||
[allTrainDiagram]
|
[allTrainDiagram]
|
||||||
);
|
);
|
||||||
const customData = {
|
const customData = {
|
||||||
"9395D":"高松,発,22:10#昭和町,発,22:12#栗林公園北口,発,22:15#栗林,発,22:18#木太町,発,22:22#屋島,発,22:26#古高松南,発,22:38#八栗口,発,22:41#讃岐牟礼,発,22:44#志度,発,22:48#オレンジタウン,発,22:52#造田,発,22:56#神前,発,22:59#讃岐津田,発,23:05#鶴羽,発,23:09#丹生,発,23:14#三本松,着,23:18#WEST LIVE TOUR 2025臨/三本松,提,https://www.jr-shikoku.co.jp/03_news/pdf/20250228_20250323_west-live-tour-2025.pdf#普通 三本松行,提,https://www.jr-shikoku.co.jp/03_news/pdf/20250228_20250323_west-live-tour-2025.pdf#",
|
"9395D":"WEST LIVE TOUR 2025臨,提,https://www.jr-shikoku.co.jp/03_news/pdf/20250228_20250323_west-live-tour-2025.pdf#高松,発,22:10#昭和町,発,22:12#栗林公園北口,発,22:15#栗林,発,22:18#木太町,発,22:22#屋島,発,22:26#古高松南,発,22:38#八栗口,発,22:41#讃岐牟礼,発,22:44#志度,発,22:48#オレンジタウン,発,22:52#造田,発,22:56#神前,発,22:59#讃岐津田,発,23:05#鶴羽,発,23:09#丹生,発,23:14#三本松,着,23:18#",
|
||||||
"9174M":"高松,発,22:00#坂出,発,22:16#児島,発,22:39#茶屋町,発,22:55#早島,発,22:59#妹尾,発,23:03#岡山,着,23:12#WEST LIVE TOUR 2025臨,提,https://www.jr-shikoku.co.jp/03_news/pdf/20250228_20250323_west-live-tour-2025.pdf#快速マリンライナー94号 岡山行,提,https://www.jr-shikoku.co.jp/03_news/pdf/20250228_20250323_west-live-tour-2025.pdf#",
|
"9174M":"WEST LIVE TOUR 2025臨,提,https://www.jr-shikoku.co.jp/03_news/pdf/20250228_20250323_west-live-tour-2025.pdf#高松,発,22:00#坂出,発,22:16#児島,発,22:39#茶屋町,発,22:55#早島,発,22:59#妹尾,発,23:03#岡山,着,23:12#",
|
||||||
|
|
||||||
};
|
};
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
Loading…
Reference in New Issue
Block a user