グリーン、寝台のアイコンを追加
This commit is contained in:
@@ -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<Props> = ({
|
||||
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 (
|
||||
<View style={{ padding: 10, flexDirection: "row", alignItems: "center" }}>
|
||||
@@ -124,6 +134,7 @@ export const HeaderText: FC<Props> = ({
|
||||
</Text>
|
||||
{isOneMan && <OneManText />}
|
||||
<Text style={textConfig}>{trainName}</Text>
|
||||
<InfogramText infogram={infogram} />
|
||||
</View>
|
||||
|
||||
<View style={{ flex: 1 }} />
|
||||
|
Reference in New Issue
Block a user