getStringConfigを移動

This commit is contained in:
harukin-expo-dev-env 2025-08-08 09:25:40 +00:00
parent 7216392c9b
commit 980b251d43
3 changed files with 77 additions and 101 deletions

View File

@ -10,6 +10,7 @@ import { InfogramText } from "@/components/ActionSheetComponents/EachTrainInfoCo
import { useTrainMenu } from "@/stateBox/useTrainMenu"; import { useTrainMenu } from "@/stateBox/useTrainMenu";
import { useAllTrainDiagram } from "@/stateBox/useAllTrainDiagram"; import { useAllTrainDiagram } from "@/stateBox/useAllTrainDiagram";
import { useNotification } from "@/stateBox/useNotifications"; import { useNotification } from "@/stateBox/useNotifications";
import { getStringConfig } from "@/lib/getStringConfig";
type Props = { type Props = {
data: { trainNum: string; limited: string }; data: { trainNum: string; limited: string };
@ -50,81 +51,39 @@ export const HeaderText: FC<Props> = ({
// 列車名、種別、フォントの取得 // 列車名、種別、フォントの取得
const [typeName, trainName, fontAvailable, isOneMan, infogram] = const [typeName, trainName, fontAvailable, isOneMan, infogram] =
useMemo(() => { useMemo(() => {
const customTrainData = customTrainDataDetector( const { type, trainName, trainNumDistance, infogram } =
trainNum, customTrainDataDetector(trainNum, allCustomTrainData);
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) { switch (true) {
case customTrainData.trainName !== "": case trainName !== "":
// 特急の場合は、列車名を取得 // 特急の場合は、列車名を取得
// 列番対称データがある場合はそれから列車番号を取得 // 列番対称データがある場合はそれから列車番号を取得
const distance = customTrainData.trainNumDistance;
const number = const number =
distance !== null ? ` ${parseInt(trainNum) - distance}` : ""; trainNumDistance !== null
const trainName = customTrainData.trainName + number; ? ` ${parseInt(trainNum) - trainNumDistance}`
: "";
return [ return [
type, typeString,
trainName, trainName + number,
fontAvailable, fontAvailable,
isOneMan, isOneMan,
customTrainData.infogram, infogram,
]; ];
case trainData[trainData.length - 1] === undefined: case trainData[trainData.length - 1] === undefined:
return [type, "", fontAvailable, isOneMan, customTrainData.infogram]; return [typeString, "", fontAvailable, isOneMan, infogram];
default: default:
// 行先がある場合は、行先を取得 // 行先がある場合は、行先を取得
return [ return [
type, typeString,
migrateTrainName( migrateTrainName(
trainData[trainData.length - 1].split(",")[0] + "行き" trainData[trainData.length - 1].split(",")[0] + "行き"
), ),
fontAvailable, fontAvailable,
isOneMan, isOneMan,
customTrainData.infogram, infogram,
]; ];
} }
}, [trainData]); }, [trainData]);

View File

@ -22,6 +22,7 @@ import { BigButton } from "./atom/BigButton";
import { Switch } from "react-native-elements"; import { Switch } from "react-native-elements";
import { migrateTrainName } from "@/lib/eachTrainInfoCoreLib/migrateTrainName"; import { migrateTrainName } from "@/lib/eachTrainInfoCoreLib/migrateTrainName";
import { OneManText } from "./ActionSheetComponents/EachTrainInfoCore/HeaderTextParts/OneManText"; import { OneManText } from "./ActionSheetComponents/EachTrainInfoCore/HeaderTextParts/OneManText";
import { getStringConfig } from "@/lib/getStringConfig";
export default function AllTrainDiagramView() { export default function AllTrainDiagramView() {
const { goBack, navigate } = useNavigation(); const { goBack, navigate } = useNavigation();
const { keyList, allTrainDiagram, allCustomTrainData } = useAllTrainDiagram(); 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 Item = ({ id, openTrainInfo }) => {
const { img, trainName, type, trainNumDistance, infogram } = const { img, trainName, type, trainNumDistance, infogram } =
customTrainDataDetector(id, allCustomTrainData); customTrainDataDetector(id, allCustomTrainData);

60
lib/getStringConfig.ts Normal file
View File

@ -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];
}
};