From 980b251d435cb7775fd0aa8ac2d9de63051011d7 Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Fri, 8 Aug 2025 09:25:40 +0000 Subject: [PATCH] =?UTF-8?q?getStringConfig=E3=82=92=E7=A7=BB=E5=8B=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../EachTrainInfoCore/HeaderText.tsx | 73 ++++--------------- components/AllTrainDiagramView.js | 45 +----------- lib/getStringConfig.ts | 60 +++++++++++++++ 3 files changed, 77 insertions(+), 101 deletions(-) create mode 100644 lib/getStringConfig.ts diff --git a/components/ActionSheetComponents/EachTrainInfoCore/HeaderText.tsx b/components/ActionSheetComponents/EachTrainInfoCore/HeaderText.tsx index 5483c87..2b3d322 100644 --- a/components/ActionSheetComponents/EachTrainInfoCore/HeaderText.tsx +++ b/components/ActionSheetComponents/EachTrainInfoCore/HeaderText.tsx @@ -10,6 +10,7 @@ import { InfogramText } from "@/components/ActionSheetComponents/EachTrainInfoCo import { useTrainMenu } from "@/stateBox/useTrainMenu"; import { useAllTrainDiagram } from "@/stateBox/useAllTrainDiagram"; import { useNotification } from "@/stateBox/useNotifications"; +import { getStringConfig } from "@/lib/getStringConfig"; type Props = { data: { trainNum: string; limited: string }; @@ -50,81 +51,39 @@ export const HeaderText: FC = ({ // 列車名、種別、フォントの取得 const [typeName, trainName, fontAvailable, isOneMan, infogram] = useMemo(() => { - const customTrainData = customTrainDataDetector( - trainNum, - allCustomTrainData + const { type, trainName, trainNumDistance, infogram } = + customTrainDataDetector(trainNum, allCustomTrainData); + const [typeString, fontAvailable, isOneMan] = getStringConfig( + type, + trainNum ); - const [type, fontAvailable, isOneMan] = (() => { - switch (customTrainData.type) { - case "Normal": - return ["普通", true, false]; - case "OneMan": - return ["普通", true, true]; - case "Rapid": - return ["快速", true, false]; - case "OneManRapid": - return ["快速", true, true]; - case "LTDEXP": - return ["特急", true, false]; - case "NightLTDEXP": - return ["特急", true, false]; - case "SPCL": - return ["臨時", true, false]; - case "SPCL_Normal": - return ["臨時", true, false]; - case "SPCL_Rapid": - return ["臨時快速", true, false]; - case "SPCL_EXP": - return ["臨時特急", true, false]; - case "Freight": - return ["貨物", false, false]; - case "Forwarding": - return ["回送", false, false]; - case "FreightForwarding": - 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 !== "": + case trainName !== "": // 特急の場合は、列車名を取得 // 列番対称データがある場合はそれから列車番号を取得 - const distance = customTrainData.trainNumDistance; const number = - distance !== null ? ` ${parseInt(trainNum) - distance}号` : ""; - const trainName = customTrainData.trainName + number; + trainNumDistance !== null + ? ` ${parseInt(trainNum) - trainNumDistance}号` + : ""; return [ - type, - trainName, + typeString, + trainName + number, fontAvailable, isOneMan, - customTrainData.infogram, + infogram, ]; case trainData[trainData.length - 1] === undefined: - return [type, "", fontAvailable, isOneMan, customTrainData.infogram]; + return [typeString, "", fontAvailable, isOneMan, infogram]; default: // 行先がある場合は、行先を取得 return [ - type, + typeString, migrateTrainName( trainData[trainData.length - 1].split(",")[0] + "行き" ), fontAvailable, isOneMan, - customTrainData.infogram, + infogram, ]; } }, [trainData]); diff --git a/components/AllTrainDiagramView.js b/components/AllTrainDiagramView.js index 95c6c60..e2d2987 100644 --- a/components/AllTrainDiagramView.js +++ b/components/AllTrainDiagramView.js @@ -22,6 +22,7 @@ import { BigButton } from "./atom/BigButton"; import { Switch } from "react-native-elements"; import { migrateTrainName } from "@/lib/eachTrainInfoCoreLib/migrateTrainName"; import { OneManText } from "./ActionSheetComponents/EachTrainInfoCore/HeaderTextParts/OneManText"; +import { getStringConfig } from "@/lib/getStringConfig"; export default function AllTrainDiagramView() { const { goBack, navigate } = useNavigation(); const { keyList, allTrainDiagram, allCustomTrainData } = useAllTrainDiagram(); @@ -75,50 +76,6 @@ export default function AllTrainDiagramView() { }); }; - const getStringConfig = (type, id) => { - switch (type) { - case "Normal": - return ["普通", true, false]; - case "OneMan": - return ["普通", true, true]; - case "Rapid": - return ["快速", true, false]; - case "OneManRapid": - return ["快速", true, true]; - case "LTDEXP": - return ["特急", true, false]; - case "NightLTDEXP": - return ["特急", true, false]; - case "SPCL": - return ["臨時", true, false]; - case "SPCL_Normal": - return ["臨時", true, false]; - case "SPCL_Rapid": - return ["臨時快速", true, false]; - case "SPCL_EXP": - return ["臨時特急", true, false]; - case "Freight": - return ["貨物", false, false]; - case "Forwarding": - return ["回送", false, false]; - case "FreightForwarding": - return ["単機回送", false, false]; - case "Other": - switch (true) { - case !!id.includes("T"): - return ["単機回送", false, false]; - case !!id.includes("R"): - case !!id.includes("E"): - case !!id.includes("L"): - case !!id.includes("A"): - case !!id.includes("B"): - return ["回送", false, false]; - case !!id.includes("H"): - return ["試運転", false, false]; - } - return ["", false, false]; - } - }; const Item = ({ id, openTrainInfo }) => { const { img, trainName, type, trainNumDistance, infogram } = customTrainDataDetector(id, allCustomTrainData); diff --git a/lib/getStringConfig.ts b/lib/getStringConfig.ts new file mode 100644 index 0000000..5295f04 --- /dev/null +++ b/lib/getStringConfig.ts @@ -0,0 +1,60 @@ +type typeID = + | "Normal" + | "OneMan" + | "Rapid" + | "OneManRapid" + | "LTDEXP" + | "NightLTDEXP" + | "SPCL" + | "SPCL_Normal" + | "SPCL_Rapid" + | "SPCL_EXP" + | "Freight" + | "Forwarding" + | "FreightForwarding" + | "Other"; +type types = (types: typeID, id: string) => [string, boolean, boolean]; +export const getStringConfig: types = (type, id) => { + switch (type) { + case "Normal": + return ["普通", true, false]; + case "OneMan": + return ["普通", true, true]; + case "Rapid": + return ["快速", true, false]; + case "OneManRapid": + return ["快速", true, true]; + case "LTDEXP": + return ["特急", true, false]; + case "NightLTDEXP": + return ["特急", true, false]; + case "SPCL": + return ["臨時", true, false]; + case "SPCL_Normal": + return ["臨時", true, false]; + case "SPCL_Rapid": + return ["臨時快速", true, false]; + case "SPCL_EXP": + return ["臨時特急", true, false]; + case "Freight": + return ["貨物", false, false]; + case "Forwarding": + return ["回送", false, false]; + case "FreightForwarding": + return ["単機回送", false, false]; + case "Other": + switch (true) { + case !!id.includes("T"): + return ["単機回送", false, false]; + case !!id.includes("R"): + case !!id.includes("E"): + case !!id.includes("L"): + case !!id.includes("A"): + case !!id.includes("B"): + return ["回送", false, false]; + case !!id.includes("H"): + return ["試運転", false, false]; + } + return ["", false, false]; + } +};