feat(383-3): 노선 추천 [재계산] — 측점 맞춤 오른쪽 같은 줄 · 늘 보임 · 바꾼 것 있을 때만 켜짐

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ji4nuyLVHcxrXWHTdb5nRD
This commit is contained in:
2026-10-17 15:13:11 +09:00
co-authored by Claude Opus 5.5
parent e0abf8c5bf
commit 92068ffd59
3 changed files with 29 additions and 3 deletions
@@ -198,7 +198,7 @@ export function openRecommendModal(params: RecommendParams): void {
<label class="b05-routerec__target" data-target-row hidden
title="영선 노선이 따라갈 종단기울기(%) — 비우면 위 종단기울기 상한">목표 기울기
<span data-slot="target-input"></span>%</label>
<button type="button" class="ui-btn ui-btn--glass" data-act="rerun" hidden>재계산</button>
<div class="b05-routerec__row"><button type="button" class="ui-btn ui-btn--glass" data-act="rerun">재계산</button></div>
</div>
</div>
<div class="b05-routerec__legend">
@@ -397,8 +397,8 @@ export function openRecommendModal(params: RecommendParams): void {
input.disabled = busy;
});
q<HTMLElement>("[data-target-row]").hidden = logic !== "gradeline";
rerun.hidden = !dirty;
rerun.disabled = busy || invalid.size > 0;
// 측점 맞춤 오른쪽 · 늘 보임 — 바꾼 것이 있을 때만 켜짐(383-3)
rerun.disabled = busy || !dirty || invalid.size > 0;
const view = shownChoice();
applyButton.disabled = busy || dirty || !view || invalid.size > 0;
const shown = metricsLines(view?.metrics ?? null);
@@ -409,6 +409,12 @@
align-self: flex-start;
}
/* 측점 맞춤 · 재계산 한 줄(383-3) */
.b05-routerec__row {
display: flex;
gap: var(--spacing-8);
}
.b05-routerec__lines {
display: flex;
flex-direction: column;
+20
View File
@@ -0,0 +1,20 @@
"""383-3 노선 추천 모달 [재계산] — 측점 맞춤 오른쪽 같은 줄 · 늘 보임 · 바꾼 것 있을 때만 켜짐.
./venv/Scripts/python.exe -m pytest resources/tester/test_383_3_rerun_row.py -q
"""
import re
from pathlib import Path
ROOT = Path(__file__).resolve().parents[2]
B05 = ROOT / "B05_Profile"
def test_재계산_한_줄_늘_보임_바꿨을_때만_켜짐() -> None:
ts = (B05 / "B05_Profile_UI_RouteEdit_Recommend.ts").read_text(encoding="utf-8")
assert re.search(r'<div class="b05-routerec__row"><button[^>]*data-act="rerun">재계산', ts)
assert 'data-act="rerun" hidden' not in ts and "rerun.hidden" not in ts
assert "rerun.before(snapToggle)" in ts # 토글이 같은 줄 왼쪽
assert "rerun.disabled = busy || !dirty || invalid.size > 0;" in ts
css = (B05 / "B05_Profile_UI_Style_RouteRecommend.css").read_text(encoding="utf-8")
assert re.search(r"\.b05-routerec__row \{\s*display: flex;", css)