diff --git a/android/app/build.gradle b/android/app/build.gradle
index b28a0f9df..9ceba4d60 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -141,12 +141,12 @@ android {
dimension "environment"
applicationId "me.tinykitten.trainlcd.dev"
versionNameSuffix "-dev"
- versionCode 100000351
+ versionCode 100000352
versionName "10.3.1"
}
prod {
dimension "environment"
- versionCode 100000351
+ versionCode 100000352
versionName "10.3.1"
}
}
diff --git a/app.config.ts b/app.config.ts
index d668f15ac..e27e2ec84 100644
--- a/app.config.ts
+++ b/app.config.ts
@@ -53,7 +53,7 @@ export default ({ config }: ConfigContext) => ({
},
},
ios: {
- buildNumber: '2564',
+ buildNumber: '2565',
bundleIdentifier:
process.env.EAS_BUILD_PROFILE === 'production'
? 'me.tinykitten.trainlcd'
@@ -70,7 +70,7 @@ export default ({ config }: ConfigContext) => ({
? 'me.tinykitten.trainlcd'
: 'me.tinykitten.trainlcd.dev',
permissions: [],
- versionCode: 100000351,
+ versionCode: 100000352,
},
owner: 'trainlcd',
});
@@ -127,5 +127,6 @@ export default ({ config }: ConfigContext) => ({
+
diff --git a/assets/images/themes/odakyu-sp.webp b/assets/images/themes/odakyu-sp.webp
index 40a82c7bb..859136182 100644
Binary files a/assets/images/themes/odakyu-sp.webp and b/assets/images/themes/odakyu-sp.webp differ
diff --git a/assets/images/themes/odakyu-tablet.webp b/assets/images/themes/odakyu-tablet.webp
index daa424227..11d324cb1 100644
Binary files a/assets/images/themes/odakyu-tablet.webp and b/assets/images/themes/odakyu-tablet.webp differ
diff --git a/ios/TrainLCD.xcodeproj/project.pbxproj b/ios/TrainLCD.xcodeproj/project.pbxproj
index ba1cc9e13..750308c1b 100644
--- a/ios/TrainLCD.xcodeproj/project.pbxproj
+++ b/ios/TrainLCD.xcodeproj/project.pbxproj
@@ -2419,7 +2419,7 @@
CODE_SIGN_ENTITLEMENTS = ProdTrainLCD.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 2564;
+ CURRENT_PROJECT_VERSION = 2565;
DEAD_CODE_STRIPPING = YES;
DEVELOPMENT_TEAM = E6R2G33Z36;
INFOPLIST_FILE = TrainLCD/Schemes/Prod/Info.plist;
@@ -2458,7 +2458,7 @@
CODE_SIGN_ENTITLEMENTS = ProdTrainLCD.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 2564;
+ CURRENT_PROJECT_VERSION = 2565;
DEVELOPMENT_TEAM = E6R2G33Z36;
INFOPLIST_FILE = TrainLCD/Schemes/Prod/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = TrainLCD;
@@ -2517,7 +2517,7 @@
CODE_SIGN_ENTITLEMENTS = TrainLCD/trainlcd.entitlements;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
- CURRENT_PROJECT_VERSION = 2564;
+ CURRENT_PROJECT_VERSION = 2565;
CXX = "$(REACT_NATIVE_PATH)/scripts/xcode/ccache-clang++.sh";
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
@@ -2623,7 +2623,7 @@
CODE_SIGN_ENTITLEMENTS = TrainLCD/trainlcd.entitlements;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = YES;
- CURRENT_PROJECT_VERSION = 2564;
+ CURRENT_PROJECT_VERSION = 2565;
CXX = "$(REACT_NATIVE_PATH)/scripts/xcode/ccache-clang++.sh";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
@@ -2702,7 +2702,7 @@
CODE_SIGN_ENTITLEMENTS = CanaryTrainLCD.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 2564;
+ CURRENT_PROJECT_VERSION = 2565;
DEAD_CODE_STRIPPING = YES;
DEVELOPMENT_TEAM = E6R2G33Z36;
INFOPLIST_FILE = TrainLCD/Schemes/Dev/Info.plist;
@@ -2741,7 +2741,7 @@
CODE_SIGN_ENTITLEMENTS = CanaryTrainLCD.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 2564;
+ CURRENT_PROJECT_VERSION = 2565;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEVELOPMENT_TEAM = E6R2G33Z36;
INFOPLIST_FILE = TrainLCD/Schemes/Dev/Info.plist;
@@ -2952,7 +2952,7 @@
CODE_SIGN_ENTITLEMENTS = RideSessionActivity/CanaryRideSessionActivity.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 2564;
+ CURRENT_PROJECT_VERSION = 2565;
DEBUG_INFORMATION_FORMAT = dwarf;
DEVELOPMENT_TEAM = E6R2G33Z36;
GCC_C_LANGUAGE_STANDARD = gnu11;
@@ -3003,7 +3003,7 @@
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
COPY_PHASE_STRIP = NO;
- CURRENT_PROJECT_VERSION = 2564;
+ CURRENT_PROJECT_VERSION = 2565;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEVELOPMENT_TEAM = E6R2G33Z36;
GCC_C_LANGUAGE_STANDARD = gnu11;
@@ -3054,7 +3054,7 @@
CODE_SIGN_ENTITLEMENTS = WatchWidget/ProdWatchWidget.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 2564;
+ CURRENT_PROJECT_VERSION = 2565;
DEBUG_INFORMATION_FORMAT = dwarf;
DEVELOPMENT_TEAM = E6R2G33Z36;
ENABLE_USER_SCRIPT_SANDBOXING = YES;
@@ -3112,7 +3112,7 @@
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
COPY_PHASE_STRIP = NO;
- CURRENT_PROJECT_VERSION = 2564;
+ CURRENT_PROJECT_VERSION = 2565;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEVELOPMENT_TEAM = E6R2G33Z36;
ENABLE_USER_SCRIPT_SANDBOXING = YES;
@@ -3163,7 +3163,7 @@
CODE_SIGN_ENTITLEMENTS = WatchWidget/CanaryWatchWidget.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 2564;
+ CURRENT_PROJECT_VERSION = 2565;
DEBUG_INFORMATION_FORMAT = dwarf;
DEVELOPMENT_TEAM = E6R2G33Z36;
ENABLE_USER_SCRIPT_SANDBOXING = YES;
@@ -3220,7 +3220,7 @@
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
COPY_PHASE_STRIP = NO;
- CURRENT_PROJECT_VERSION = 2564;
+ CURRENT_PROJECT_VERSION = 2565;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEVELOPMENT_TEAM = E6R2G33Z36;
ENABLE_USER_SCRIPT_SANDBOXING = YES;
@@ -3268,7 +3268,7 @@
CODE_SIGN_ENTITLEMENTS = RideSessionActivity/ProdRideSessionActivity.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 2564;
+ CURRENT_PROJECT_VERSION = 2565;
DEBUG_INFORMATION_FORMAT = dwarf;
DEVELOPMENT_TEAM = E6R2G33Z36;
GCC_C_LANGUAGE_STANDARD = gnu11;
@@ -3319,7 +3319,7 @@
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
COPY_PHASE_STRIP = NO;
- CURRENT_PROJECT_VERSION = 2564;
+ CURRENT_PROJECT_VERSION = 2565;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEVELOPMENT_TEAM = E6R2G33Z36;
GCC_C_LANGUAGE_STANDARD = gnu11;
@@ -3538,7 +3538,7 @@
CODE_SIGN_ENTITLEMENTS = ProdAppClip/ProdAppClip.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 2564;
+ CURRENT_PROJECT_VERSION = 2565;
DEBUG_INFORMATION_FORMAT = dwarf;
DEVELOPMENT_TEAM = E6R2G33Z36;
ENABLE_USER_SCRIPT_SANDBOXING = NO;
@@ -3594,7 +3594,7 @@
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
COPY_PHASE_STRIP = NO;
- CURRENT_PROJECT_VERSION = 2564;
+ CURRENT_PROJECT_VERSION = 2565;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEVELOPMENT_TEAM = E6R2G33Z36;
ENABLE_USER_SCRIPT_SANDBOXING = NO;
@@ -3644,7 +3644,7 @@
CODE_SIGN_ENTITLEMENTS = CanaryAppClip/CanaryAppClip.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 2564;
+ CURRENT_PROJECT_VERSION = 2565;
DEBUG_INFORMATION_FORMAT = dwarf;
DEVELOPMENT_TEAM = E6R2G33Z36;
ENABLE_USER_SCRIPT_SANDBOXING = NO;
@@ -3702,7 +3702,7 @@
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
COPY_PHASE_STRIP = NO;
- CURRENT_PROJECT_VERSION = 2564;
+ CURRENT_PROJECT_VERSION = 2565;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEVELOPMENT_TEAM = E6R2G33Z36;
ENABLE_USER_SCRIPT_SANDBOXING = NO;
diff --git a/src/components/LineBoardEast.tsx b/src/components/LineBoardEast.tsx
index 7f422f440..4b55d9e30 100644
--- a/src/components/LineBoardEast.tsx
+++ b/src/components/LineBoardEast.tsx
@@ -1,7 +1,7 @@
import { LinearGradient } from 'expo-linear-gradient';
import { useAtomValue } from 'jotai';
import React, { useCallback, useMemo, useState } from 'react';
-import { useWindowDimensions, View } from 'react-native';
+import { StyleSheet, useWindowDimensions, View } from 'react-native';
import type { Line, Station } from '~/@types/graphql';
import {
useCurrentLine,
@@ -31,6 +31,44 @@ import {
STATION_NAME_CONTAINER_BOTTOM,
commonLineBoardStyles as styles,
} from './LineBoard/shared/styles/commonStyles';
+import NumberingIcon from './NumberingIcon';
+
+const localStyles = StyleSheet.create({
+ numberingIconContainer: {
+ position: 'absolute',
+ width: isTablet ? 96 : 64,
+ height: isTablet ? 96 : 64,
+ bottom: isTablet ? -22 : 52,
+ left: isTablet ? -24 : -16,
+ transform: [{ scale: 0.5 }],
+ justifyContent: 'center',
+ alignItems: 'center',
+ overflow: 'visible',
+ },
+});
+
+const NumberingIconView: React.FC<{ station: Station }> = ({ station }) => {
+ const numberingObj = useMemo(
+ () => station.stationNumbers?.[0],
+ [station.stationNumbers]
+ );
+
+ if (!numberingObj?.lineSymbolShape || !numberingObj?.stationNumber) {
+ return null;
+ }
+
+ return (
+
+
+
+ );
+};
type Props = {
lineColors: (string | null | undefined)[];
@@ -273,6 +311,24 @@ const StationNameCell: React.FC = ({
const dim = useWindowDimensions();
+ const hasDrawableNumbering = useMemo(
+ () =>
+ station.stationNumbers?.some(
+ (sn) => sn?.lineSymbolShape && sn?.stationNumber
+ ) ?? false,
+ [station.stationNumbers]
+ );
+
+ const nameCommonStyle = useMemo(() => {
+ if (!isOdakyu || !hasDrawableNumbering) {
+ return styles.nameCommon;
+ }
+ return {
+ ...styles.nameCommon,
+ marginBottom: isTablet ? 45 : 95,
+ };
+ }, [isOdakyu, hasDrawableNumbering]);
+
return (
<>
= ({
>
= ({
passed={getIsPass(station) || shouldGrayscale}
/>
+ {isOdakyu ? : null}
{renderBarGradients({
barLeft,
barWidth,