diff --git a/Apps.js b/Apps.js index bdfe0a0..d52695a 100644 --- a/Apps.js +++ b/Apps.js @@ -27,7 +27,7 @@ export function AppContainer() { const [fontLoaded, error] = useFonts({ "JR-Nishi": require("./assets/fonts/jr-nishi.otf"), Zou: require("./assets/fonts/DelaGothicOne-Regular.ttf"), - "JNR-font": require("./assets/fonts/JNRFont_pic.ttf"), + "JNR-font": require("./assets/fonts/JNRfont_pict.ttf"), }); return ( diff --git a/components/ActionSheetComponents/EachTrainInfoCore/HeaderText.tsx b/components/ActionSheetComponents/EachTrainInfoCore/HeaderText.tsx index c030f9c..f8ead52 100644 --- a/components/ActionSheetComponents/EachTrainInfoCore/HeaderText.tsx +++ b/components/ActionSheetComponents/EachTrainInfoCore/HeaderText.tsx @@ -8,6 +8,7 @@ import { TrainIconStatus } from "./trainIconStatus"; import { TrainViewIcon } from "./trainViewIcon"; import { OneManText } from "./HeaderTextParts/OneManText"; import { customTrainDataDetector } from "@/components/custom-train-data"; +import { InfogramText } from "@/components/ActionSheetComponents/EachTrainInfoCore/HeaderTextParts/InfogramText"; type Props = { data: { trainNum: string; limited: string }; @@ -22,7 +23,7 @@ type Props = { }; const textConfig: TextStyle = { - fontSize: 18, + fontSize: 17, fontWeight: "bold", color: "white", }; @@ -40,70 +41,79 @@ export const HeaderText: FC = ({ const { limited, trainNum } = data; // 列車名、種別、フォントの取得 - const [typeName, trainName, fontAvailable, isOneMan] = useMemo(() => { - const customTrainData = customTrainDataDetector(trainNum); - const [type, fontAvailable, isOneMan] = (() => { - 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]; + const [typeName, trainName, fontAvailable, isOneMan, infogram] = + useMemo(() => { + const customTrainData = customTrainDataDetector(trainNum); + const [type, fontAvailable, isOneMan] = (() => { + 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) { + case customTrainData.trainName !== "": + // 特急の場合は、列車名を取得 + // 列番対称データがある場合はそれから列車番号を取得 + const distance = customTrainData.trainNumDistance; + const number = + distance !== null ? ` ${parseInt(trainNum) - distance}号` : ""; + const trainName = customTrainData.trainName + number; + return [ + type, + trainName, + fontAvailable, + isOneMan, + customTrainData.infogram, + ]; + case trainData[trainData.length - 1] === undefined: + return [type, "", fontAvailable, isOneMan, customTrainData.infogram]; + default: + // 行先がある場合は、行先を取得 + return [ + type, + migrateTrainName( + trainData[trainData.length - 1].split(",")[0] + "行き" + ), + fontAvailable, + isOneMan, + customTrainData.infogram, + ]; } - })(); - switch (true) { - case customTrainData.trainName !== "": - // 特急の場合は、列車名を取得 - // 列番対称データがある場合はそれから列車番号を取得 - const distance = customTrainData.trainNumDistance; - const number = distance !== null ? ` ${parseInt(trainNum) - distance}号` : ""; - const trainName = customTrainData.trainName + number; - return [type, trainName, fontAvailable, isOneMan]; - case trainData[trainData.length - 1] === undefined: - return [type, "", fontAvailable, isOneMan]; - default: - // 行先がある場合は、行先を取得 - return [ - type, - migrateTrainName( - trainData[trainData.length - 1].split(",")[0] + "行き" - ), - fontAvailable, - isOneMan, - ]; - } - }, [trainData]); + }, [trainData]); return ( @@ -124,6 +134,7 @@ export const HeaderText: FC = ({ {isOneMan && } {trainName} + diff --git a/components/ActionSheetComponents/EachTrainInfoCore/HeaderTextParts/InfogramText.tsx b/components/ActionSheetComponents/EachTrainInfoCore/HeaderTextParts/InfogramText.tsx new file mode 100644 index 0000000..b27bf86 --- /dev/null +++ b/components/ActionSheetComponents/EachTrainInfoCore/HeaderTextParts/InfogramText.tsx @@ -0,0 +1,18 @@ +import React, { FC } from "react"; +import { Text } from "react-native"; +type props = { + infogram: string; +} +export const InfogramText: FC = ({infogram}) => { + return ( + + {infogram} + + ); +}; diff --git a/components/custom-train-data.ts b/components/custom-train-data.ts index 8be51e5..7a8f364 100644 --- a/components/custom-train-data.ts +++ b/components/custom-train-data.ts @@ -28,6 +28,7 @@ export const customTrainDataDetector = (TrainNumber: string) => { "http://jr-shikoku.co.jp/01_trainbus/vehicle-info/shiokaze.html", trainNumDistance: 0, info: "いしづちと併結 / 8000系で運転", + infogram: "G" }; case "2M": return { @@ -38,6 +39,7 @@ export const customTrainDataDetector = (TrainNumber: string) => { "http://jr-shikoku.co.jp/01_trainbus/vehicle-info/shiokaze.html", trainNumDistance: 0, info: "8000系で運転", + infogram: "G" }; //8000 アンパン case "10M": @@ -51,6 +53,7 @@ export const customTrainDataDetector = (TrainNumber: string) => { infoUrl: "https://www.jr-eki.com/aptrain/naani/yosan/train.html", trainNumDistance: 0, info: "いしづちと併結 / アンパンマン列車で運転", + infogram: "G" }; //8600 case "8M": @@ -69,6 +72,7 @@ export const customTrainDataDetector = (TrainNumber: string) => { "http://jr-shikoku.co.jp/01_trainbus/vehicle-info/shiokaze.html", trainNumDistance: 0, info: "いしづちと併結 / 8600系で運転", + infogram: "G" }; //いしづちメイン @@ -99,6 +103,7 @@ export const customTrainDataDetector = (TrainNumber: string) => { "http://jr-shikoku.co.jp/01_trainbus/vehicle-info/ishizuchi.html", trainNumDistance: 1000, info: "しおかぜと併結 / 8000系で運転", + infogram: "" }; //8000 アンパン @@ -113,6 +118,7 @@ export const customTrainDataDetector = (TrainNumber: string) => { infoUrl: "https://www.jr-eki.com/aptrain/naani/yosan/train.html", trainNumDistance: 1000, info: "しおかぜと併結 / アンパンマン列車で運転", + infogram: "" }; //8600 @@ -132,6 +138,7 @@ export const customTrainDataDetector = (TrainNumber: string) => { "http://jr-shikoku.co.jp/01_trainbus/vehicle-info/ishizuchi.html", trainNumDistance: 1000, info: "しおかぜと併結 / 8600系で運転", + infogram: "" }; //MEXP @@ -145,6 +152,7 @@ export const customTrainDataDetector = (TrainNumber: string) => { "http://jr-shikoku.co.jp/01_trainbus/vehicle-info/morning.html", trainNumDistance: null, info: "8000系で運転", + infogram: "G" }; //8600 case "1091M": @@ -156,6 +164,7 @@ export const customTrainDataDetector = (TrainNumber: string) => { "http://jr-shikoku.co.jp/01_trainbus/vehicle-info/morning.html", trainNumDistance: null, info: "8600系で運転", + infogram: "G" }; //三桁いしづち //8000 アンパン @@ -168,10 +177,21 @@ export const customTrainDataDetector = (TrainNumber: string) => { infoUrl: "https://www.jr-eki.com/aptrain/naani/yosan/train.html", trainNumDistance: 940, info: "アンパンマン列車で運転", + infogram: "G" }; //8600 case "1043M": 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": return { type: "LTDEXP", @@ -181,6 +201,7 @@ export const customTrainDataDetector = (TrainNumber: string) => { "http://jr-shikoku.co.jp/01_trainbus/vehicle-info/ishizuchi.html", trainNumDistance: 940, info: "8600系で運転", + infogram: "G" }; //南風 2700ノーマル @@ -209,6 +230,7 @@ export const customTrainDataDetector = (TrainNumber: string) => { infoUrl: "http://jr-shikoku.co.jp/01_trainbus/vehicle-info/nanpu.html", trainNumDistance: 30, info: "2700系で運転", + infogram: "G" }; //2700アンパン @@ -231,6 +253,7 @@ export const customTrainDataDetector = (TrainNumber: string) => { infoUrl: "https://www.jr-eki.com/aptrain/naani/dosan/train.html", trainNumDistance: 30, info: "アンパンマン列車で運転", + infogram: "G" }; //うずしお @@ -256,6 +279,7 @@ export const customTrainDataDetector = (TrainNumber: string) => { "http://jr-shikoku.co.jp/01_trainbus/vehicle-info/uzushio.html", trainNumDistance: 3000, info: "2700系で運転", + infogram: "" }; //2700 二両編成 @@ -277,6 +301,7 @@ export const customTrainDataDetector = (TrainNumber: string) => { "http://jr-shikoku.co.jp/01_trainbus/vehicle-info/uzushio.html", trainNumDistance: 3000, info: "2700系で運転", + infogram: "" }; //2600 @@ -298,6 +323,7 @@ export const customTrainDataDetector = (TrainNumber: string) => { "http://jr-shikoku.co.jp/01_trainbus/vehicle-info/uzushio.html", trainNumDistance: 3000, info: "2600系で運転", + infogram: "" }; @@ -377,6 +403,7 @@ export const customTrainDataDetector = (TrainNumber: string) => { infoUrl: "http://jr-shikoku.co.jp/01_trainbus/vehicle-info/marine.html", trainNumDistance: 3100, info: "", + infogram: "G" }; case "3102M": case "3101M": @@ -390,6 +417,7 @@ export const customTrainDataDetector = (TrainNumber: string) => { infoUrl: "http://jr-shikoku.co.jp/01_trainbus/vehicle-info/marine.html", trainNumDistance: 3100, info: "", + infogram: "" }; //下りサンポート case "1219M": @@ -400,6 +428,7 @@ export const customTrainDataDetector = (TrainNumber: string) => { infoUrl: "", trainNumDistance: null, info: " 土曜・休日は多度津-琴平間運休", + infogram: "" }; case "111M": @@ -419,6 +448,7 @@ export const customTrainDataDetector = (TrainNumber: string) => { infoUrl: null, trainNumDistance: null, info: null, + infogram: "" }; case "5109M": case "5135M": @@ -430,6 +460,7 @@ export const customTrainDataDetector = (TrainNumber: string) => { infoUrl: null, trainNumDistance: null, info: null, + infogram: "" }; case "137M": return { @@ -439,6 +470,7 @@ export const customTrainDataDetector = (TrainNumber: string) => { infoUrl: null, trainNumDistance: null, info: "土曜・休日運休", + infogram: "" }; //上りサンポート case "116M": @@ -449,6 +481,7 @@ export const customTrainDataDetector = (TrainNumber: string) => { infoUrl: null, trainNumDistance: null, info: null, + infogram: "" }; case "130M": @@ -466,6 +499,7 @@ export const customTrainDataDetector = (TrainNumber: string) => { infoUrl: "", trainNumDistance: null, info: "", + infogram: "" }; case "5118M": case "5120M": @@ -479,6 +513,7 @@ export const customTrainDataDetector = (TrainNumber: string) => { infoUrl: null, trainNumDistance: null, info: null, + infogram: "" }; //サンライズ瀬戸 @@ -492,6 +527,7 @@ export const customTrainDataDetector = (TrainNumber: string) => { "https://www.jr-odekake.net/train/sunriseseto_izumo/index.html", trainNumDistance: null, info: "", + infogram: "ブ" }; case "8041M": //琴平延長高松迄 case "8031M": //琴平延長高松以降 @@ -503,6 +539,7 @@ export const customTrainDataDetector = (TrainNumber: string) => { "https://www.jr-odekake.net/train/sunriseseto_izumo/index.html", trainNumDistance: null, info: "琴平延長運転日", + infogram: "ブ" }; //宇和海 @@ -540,6 +577,7 @@ export const customTrainDataDetector = (TrainNumber: string) => { infoUrl: "http://jr-shikoku.co.jp/01_trainbus/vehicle-info/uwakai.html", trainNumDistance: 1050, info: "2000系で運転", + infogram: "" }; //2000 アンパン込み case "1058D": @@ -555,6 +593,7 @@ export const customTrainDataDetector = (TrainNumber: string) => { infoUrl: "https://www.jr-eki.com/aptrain/naani/yosan/train.html", trainNumDistance: 1050, info: "アンパン列車で運転", + infogram: "" }; //しまんと case "2002D": @@ -569,6 +608,7 @@ export const customTrainDataDetector = (TrainNumber: string) => { "http://jr-shikoku.co.jp/01_trainbus/vehicle-info/shimanto.html", trainNumDistance: 2000, info: "2700系で運転", + infogram: "" }; //あしずり 2000 @@ -588,14 +628,25 @@ export const customTrainDataDetector = (TrainNumber: string) => { "http://jr-shikoku.co.jp/01_trainbus/vehicle-info/ashizuri.html", trainNumDistance: 2070, info: "2000系で運転", + infogram: "" }; //あしずり 2700 - case "2072D": case "2078D": case "2084D": case "2075D": 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": return { type: "LTDEXP", @@ -605,6 +656,7 @@ export const customTrainDataDetector = (TrainNumber: string) => { "http://jr-shikoku.co.jp/01_trainbus/vehicle-info/ashizuri.html", trainNumDistance: 2070, info: "2700系で運転", + infogram: "G" }; //剣山 @@ -623,6 +675,7 @@ export const customTrainDataDetector = (TrainNumber: string) => { "http://jr-shikoku.co.jp/01_trainbus/vehicle-info/tsurugisan.html", trainNumDistance: 4000, info: "キハ185系で運転", + infogram: "" }; //よしのがわトロッコ @@ -636,6 +689,7 @@ export const customTrainDataDetector = (TrainNumber: string) => { "http://jr-shikoku.co.jp/01_trainbus/event_train/yoshino_torokko.html", trainNumDistance: null, info: "", + infogram: "" }; //岡山高松アントロ @@ -652,6 +706,7 @@ export const customTrainDataDetector = (TrainNumber: string) => { "https://www.jr-eki.com/aptrain/naani/torokko_seto/jikoku.html", trainNumDistance: null, info: "", + infogram: "G" }; //伊予灘ものがたり @@ -664,6 +719,7 @@ export const customTrainDataDetector = (TrainNumber: string) => { infoUrl: "https://iyonadamonogatari.com/", trainNumDistance: null, info: "", + infogram: "G" }; case "8092D": case "8094D": @@ -674,6 +730,7 @@ export const customTrainDataDetector = (TrainNumber: string) => { infoUrl: "https://iyonadamonogatari.com/", trainNumDistance: null, info: "", + infogram: "G" }; //千年ものがたり @@ -686,6 +743,7 @@ export const customTrainDataDetector = (TrainNumber: string) => { infoUrl: "https://www.jr-shikoku.co.jp/sennenmonogatari/", trainNumDistance: null, info: "", + infogram: "G" }; //夜明けものがたり @@ -700,6 +758,7 @@ export const customTrainDataDetector = (TrainNumber: string) => { infoUrl: "https://www.jr-shikoku.co.jp/yoakenomonogatari/index.html", trainNumDistance: null, info: "", + infogram: "G" }; case "9174M": return { @@ -709,6 +768,7 @@ export const customTrainDataDetector = (TrainNumber: string) => { infoUrl: "http://jr-shikoku.co.jp/01_trainbus/vehicle-info/marine.html", trainNumDistance: null, info: "WEST LIVE TOUR 2025臨 3/21,22のみ運転", + infogram: "G" }; case "9395D": return { @@ -718,6 +778,7 @@ export const customTrainDataDetector = (TrainNumber: string) => { infoUrl: null, trainNumDistance: null, info: "WEST LIVE TOUR 2025臨 3/21,22のみ運転", + infogram: "" }; default: if(getJRF(TrainNumber) !== null){ @@ -727,7 +788,8 @@ export const customTrainDataDetector = (TrainNumber: string) => { trainIcon: "https://storage.haruk.in/ef210a.png", infoUrl: null, trainNumDistance: null, - info: getJRF(TrainNumber), + info: "", + infogram: "", }; } else if ( @@ -742,6 +804,7 @@ export const customTrainDataDetector = (TrainNumber: string) => { infoUrl: null, trainNumDistance: null, info: null, + infogram: "" }; else if ( new RegExp(/^[1-9]\d\d[DM]$/).test(TrainNumber) || @@ -755,6 +818,7 @@ export const customTrainDataDetector = (TrainNumber: string) => { infoUrl: null, trainNumDistance: null, info: null, + infogram: "" }; } else { return { @@ -764,6 +828,7 @@ export const customTrainDataDetector = (TrainNumber: string) => { infoUrl: null, trainNumDistance: null, info: null, + infogram: "" }; } }