Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions src/components/side-panel/style-side-panel/design-section.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import {
setTheme,
staggerStationNames,
toggleLineNameBeforeDestination,
setShmetro2020BranchDistanceFactor,
} from '../../../redux/param/param-slice';
import {
FALSE,
Expand Down Expand Up @@ -60,6 +61,7 @@ export default function DesignSection() {
info_panel_type,
stn_list,
loop,
branch_info: { distance_factor: branchDistanceFactor },
} = useRootSelector(state => state.param);

const lineServices = Math.max(...Object.values(stn_list).map(s => s.services.length));
Expand Down Expand Up @@ -109,6 +111,18 @@ export default function DesignSection() {
label: t('StyleSidePanel.design.downward'),
value: FALSE,
},
{
type: 'slider',
label: t('StyleSidePanel.design.branchDistanceFactor'),
value: branchDistanceFactor,
min: 1,
max: 3,
step: 0.05,
onChange: value => {
dispatch(setShmetro2020BranchDistanceFactor(value));
},
hidden: ![RmgStyle.SHMetro].includes(style) || info_panel_type !== 'sh2020' || loop,
},
];

const staggerNameSelections = [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ export default function LayoutSection() {
svgWidth,
svg_height,
y_pc,
branchSpacingPct,
branch_info: { spacing_pct: branchSpacingPct },
padding,
direction_gz_x,
direction_gz_y,
Expand Down
14 changes: 10 additions & 4 deletions src/constants/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -219,10 +219,16 @@ export interface RMGParam {
* Left and right margin of line (in percentage).
*/
padding: number;
/** Branch spacing percentage (space between upper and lower branch).
* In SHMetro loop line, this is also used in determining vertical padding.
*/
branchSpacingPct: number;
branch_info: {
/** Branch spacing percentage (space between upper and lower branch).
* In SHMetro loop line, this is also used in determining vertical padding.
*/
spacing_pct: number;
/**
* Factor for the horizontal distance from bifurcation point to first branch station.
*/
distance_factor: number;
};
direction: ShortDirection;
/**
* Platform number of the destination canvas. Set to '' will hide the element.
Expand Down
3 changes: 2 additions & 1 deletion src/i18n/translations/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,8 @@
"legacyDestination": "Display line name on direction sign",
"overrideTerminal": "Override terminal",
"terminalZhName": "Terminal Chinese name",
"terminalEnName": "Terminal English name"
"terminalEnName": "Terminal English name",
"branchDistanceFactor": "Branch horizontal distance factor"
},
"note": {
"title": "Notes",
Expand Down
3 changes: 2 additions & 1 deletion src/i18n/translations/ja.json
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,8 @@
"legacyDestination": "終着駅表示板に路線名を表示",
"overrideTerminal": "終着駅を上書き",
"terminalZhName": "終着駅の日本語名",
"terminalEnName": "終着駅の英語名"
"terminalEnName": "終着駅の英語名",
"branchDistanceFactor": "分岐水平距離倍率"
},
"note": {
"title": "備考",
Expand Down
3 changes: 2 additions & 1 deletion src/i18n/translations/ko.json
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,8 @@
"legacyDestination": "터미널에 경로 명칭 표시",
"overrideTerminal": "끝점 다시 쓰기",
"terminalZhName": "터미널 한자 명칭",
"terminalEnName": "터미널 영문 명칭"
"terminalEnName": "터미널 영문 명칭",
"branchDistanceFactor": "분기 수평 거리 배수"
},
"note": {
"title": "설명",
Expand Down
3 changes: 2 additions & 1 deletion src/i18n/translations/zh-Hans.json
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,8 @@
"legacyDestination": "在终点站牌显示路线名称",
"overrideTerminal": "重写终点站",
"terminalZhName": "终点站中文名称",
"terminalEnName": "终点站英文名称"
"terminalEnName": "终点站英文名称",
"branchDistanceFactor": "分支水平间距倍数"
},
"note": {
"title": "备注",
Expand Down
3 changes: 2 additions & 1 deletion src/i18n/translations/zh-Hant.json
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,8 @@
"legacyDestination": "於終點站牌顯示路綫名稱",
"overrideTerminal": "覆寫終點站",
"terminalZhName": "終點站中文名稱",
"terminalEnName": "終點站英文名稱"
"terminalEnName": "終點站英文名稱",
"branchDistanceFactor": "分支水平間距倍數"
},
"note": {
"title": "備註",
Expand Down
7 changes: 6 additions & 1 deletion src/redux/param/param-slice.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ const paramSlice = createSlice({
},

setBranchSpacingPct: (state, action: PayloadAction<number>) => {
state.branchSpacingPct = action.payload;
state.branch_info.spacing_pct = action.payload;
},

setPaddingPercentage: (state, action: PayloadAction<number>) => {
Expand Down Expand Up @@ -159,6 +159,10 @@ const paramSlice = createSlice({
state.loop_info.clockwise = action.payload;
},

setShmetro2020BranchDistanceFactor: (state, action: PayloadAction<number>) => {
state.branch_info.distance_factor = action.payload;
},

setCurrentStation: (state, action: PayloadAction<string>) => {
state.current_stn_idx = action.payload;
},
Expand Down Expand Up @@ -211,6 +215,7 @@ export const {
setLoopBottomFactor,
setLoopMidpointStation,
setLoopClockwise,
setShmetro2020BranchDistanceFactor,
setCurrentStation,
setStation,
setStations,
Expand Down
5 changes: 4 additions & 1 deletion src/redux/param/util.ts
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,10 @@ export const initParam = (style: RmgStyle, language: LanguageCode): RMGParam =>
style: style,
y_pc: 50,
padding: 10,
branchSpacingPct: 33,
branch_info: {
spacing_pct: 33,
distance_factor: 1,
},
direction: ShortDirection.left,
platform_num: '1',
theme: initTheme(style),
Expand Down
2 changes: 1 addition & 1 deletion src/svgs/gzmtr/main-gzmtr.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ const MainGZMTR = () => {
svg_height: svgH,
y_pc: yPercentage,
padding: paddingPercentage,
branchSpacingPct,
branch_info: { spacing_pct: branchSpacingPct },
direction,
line_name: lineName,
spanLineNum,
Expand Down
2 changes: 1 addition & 1 deletion src/svgs/gzmtr/rail-map/loop-main.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ export default function LoopMain() {
svg_height: svgH,
y_pc: yPercentage,
padding: paddingPercentage,
branchSpacingPct,
branch_info: { spacing_pct: branchSpacingPct },
current_stn_idx: currentStation,
loop_info: { midpoint_station: midpointStation, clockwise },
} = useRootSelector(store => store.param);
Expand Down
2 changes: 1 addition & 1 deletion src/svgs/mtr/main-mtr.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ const MainMTR = () => {
svg_height: svgH,
y_pc: yPercentage,
padding: paddingPercentage,
branchSpacingPct,
branch_info: { spacing_pct: branchSpacingPct },
direction,
namePosMTR: namePosition,
current_stn_idx: currentStationIndex,
Expand Down
2 changes: 1 addition & 1 deletion src/svgs/shmetro/coline-shmetro.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ export const ColineSHMetro = (props: Props) => {
direction,
stn_list,
current_stn_idx,
branchSpacingPct,
branch_info: { spacing_pct: branchSpacingPct },
info_panel_type,
coline: colineInfo,
} = useRootSelector(store => store.param);
Expand Down
4 changes: 2 additions & 2 deletions src/svgs/shmetro/indoor/indoor-shmetro.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ const IndoorSHMetro = () => {

const yShares = useMemo(() => StationsSHMetro.getYShares(param.stn_list), [deps]);
const ys = Object.keys(yShares).reduce(
(acc, cur) => ({ ...acc, [cur]: (yShares[cur] * param.branchSpacingPct * param.svg_height) / 200 }),
(acc, cur) => ({ ...acc, [cur]: (yShares[cur] * param.branch_info.spacing_pct * param.svg_height) / 200 }),
{} as typeof yShares
);

Expand Down Expand Up @@ -137,7 +137,7 @@ const IndoorSHMetro = () => {
lineXs,
xs,
ys,
(param.branchSpacingPct * param.svg_height) / 200,
(param.branch_info.spacing_pct * param.svg_height) / 200,
criticalPath,
0
);
Expand Down
2 changes: 1 addition & 1 deletion src/svgs/shmetro/loop/loop-shmetro.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ const LoopSHMetro = (props: { bank_angle: boolean; canvas: CanvasType.RailMap |
svgWidth: svg_width,
svg_height,
padding,
branchSpacingPct,
branch_info: { spacing_pct: branchSpacingPct },
direction,
info_panel_type,
stn_list,
Expand Down
Loading
Loading