fix(B05): 측점번호+잔여거리 확정 즉시 유역 임시 계산 실행

잔여거리까지 입력해도 입력군을 떠나기 전에는 임시 배치가 나가지 않았다
(2026-08-18 사용자 보고). 잔여거리 값 확정(change) 즉시 commitPosition을
실행하고, 측점번호 수정은 잔여거리가 이미 있을 때만 즉시 반영한다.
focusout 경로는 잔여거리 없이 정측점만 쓰는 경우의 확정용으로 유지.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-18 18:49:36 +09:00
co-authored by Claude Opus 5
parent 33fe2fa660
commit 47fa05abd3
+10 -3
View File
@@ -666,9 +666,16 @@ export function createStructuresSection(callbacks: StructuresCallbacks): Structu
input.addEventListener("change", handleStationInput),
),
);
// A군 임시 배치는 측점 입력군에서 포커스가 완전히 빠져나간 뒤에만 — 측점번호를
// 넣고 잔여거리 칸으로 옮기는 중간에는 나가지 않는다(2026-08-18 사용자 지시:
// 측점+거리를 다 받은 후 임시 배치). Enter로도 바로 나갈 수 있다.
// 측점번호+잔여거리가 **둘 다 확정된 순간** 임시 배치·옵션 활성화가 바로 나간다
// (2026-08-18 사용자 지시 — 입력군을 떠나기 전이라도). 잔여거리 값이 확정되면
// 즉시, 측점번호 수정은 잔여거리가 이미 있을 때만 즉시.
anchorFields.remainder.addEventListener("change", () => commitPosition());
anchorFields.station.addEventListener("change", () => {
if (anchorFields.remainder.value.trim() !== "") commitPosition();
});
// 그 외(잔여거리를 안 쓰는 정측점 입력 등)는 입력군에서 포커스가 완전히 빠져나간
// 뒤에 확정한다 — 측점번호만 넣고 잔여거리 칸으로 옮기는 중간에는 나가지 않는다.
// Enter로도 바로 나갈 수 있다.
positionRow.addEventListener("focusout", () => {
// 다음 포커스 대상이 확정된 다음 프레임에 판단한다(relatedTarget은 브라우저에
// 따라 비어 온다).