feat(b08): 거리이정표 다이어그램 선 글 더블클릭 = km · 도로 구분 바로 고침 (244-4 ⑥)
- 선 글 한 줄 = 그 구간(업체 · 공통 · 시점 → 중점) · 글 화면 자리에 도로 구분 ▾ · km 칸 · Enter · 칸 밖 = 반영 · Esc = 취소 - 값은 모달과 한 벌(legAt · setLeg) · 시점 → 중점 km = 중점 측점 · 표 셈 그대로 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01STqEqztUthVFBmEP18wBSz
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
"""244-4 B08 거리이정표 고침(사용자 130번) — [+] 모달(항목 · 업체 이름 · 목적지 + 주소 검색 재활용) ·
|
||||
방위 = 좌표 자동 · 시점 모달(등록 주소 · VWorld 주소 · 지도) · 다이어그램 팬 · 줌 공용 ·
|
||||
경로 하위 탭 = 그림만(다음 지도 길찾기 새 창 · 화면 캡처) · 상자 누름 = 항목 정보 모달.
|
||||
"""244-4 B08 거리이정표 고침(사용자 130번) — [+] 모달(항목 · 업체 이름 · 목적지 +
|
||||
주소 검색 재활용) · 방위 = 좌표 자동 · 시점 모달(등록 주소 · VWorld 주소 · 지도) ·
|
||||
다이어그램 팬 · 줌 공용 ·
|
||||
경로 하위 탭 = 그림만(다음 지도 길찾기 새 창 · 화면 캡처) · 상자 누름 = 항목 정보 모달 ·
|
||||
선 글 바로 고침(⑥).
|
||||
"""
|
||||
|
||||
import json
|
||||
@@ -37,8 +39,9 @@ def _node(expr):
|
||||
|
||||
|
||||
def _route(rid, lon=None, lat=None, via=True):
|
||||
row = {"item": "", "dest": "start", "note": ""}
|
||||
return {"id": rid, "name": rid, "address": "", "via_base": via, "dir": None, "lon": lon,
|
||||
"lat": lat, "legs": [], "rows": [{"item": "", "dest": "start", "note": ""}]} # fmt: skip
|
||||
"lat": lat, "legs": [], "rows": [row]} # fmt: skip
|
||||
|
||||
|
||||
def _center(lay, bid):
|
||||
@@ -183,3 +186,34 @@ def test_화면_모달_팬줌_그림탭():
|
||||
"B08_Quantity/B08_Quantity_UI_Milestone_Diagram.ts",
|
||||
"B08_Quantity/B08_Quantity_Router_Milestone.py"): # fmt: skip
|
||||
assert len(_read(rel).splitlines()) <= 700
|
||||
|
||||
|
||||
def test_선_글_바로_고침_모달과_한_벌():
|
||||
from B08_Quantity.B08_Quantity_Milestone_Calc import compute_milestone
|
||||
|
||||
data = {
|
||||
"site": {"mid_station_m": None, "mid_road": "비포장"},
|
||||
"base": {"enabled": True, "name": "기준", "address": "", "dir": None,
|
||||
"legs": [{"road": "1차포장", "km": 0.6}]},
|
||||
"routes": [{**_route("g"), "legs": [{"road": "2차포장", "km": None}]}],
|
||||
} # fmt: skip
|
||||
d = json.dumps(data)
|
||||
got = _node(
|
||||
f"[legAt({d}, 'g', 0, 0.75), legAt({d}, 'start', 0, 0.75), legAt({d}, 'x', 0, 0),"
|
||||
f" setLeg(setLeg(setLeg({d}, 'g', 0, {{road: '1차포장', km: 23.8}}),"
|
||||
f" 'base', 0, {{km: null}}), 'start', 0, {{road: '2차포장', km: 1.2345}})]"
|
||||
)
|
||||
assert got[0] == {"road": "2차포장", "km": None}
|
||||
assert got[1] == {"road": "비포장", "km": 0.75} and got[2] is None
|
||||
after = got[3]
|
||||
assert after["routes"][0]["legs"] == [{"road": "1차포장", "km": 23.8}]
|
||||
assert after["base"]["legs"] == [{"road": "1차포장", "km": None}]
|
||||
assert after["site"] == {"mid_station_m": 1234.5, "mid_road": "2차포장"}
|
||||
# 표 셈 그대로 — 고친 값 = 모달 값과 같은 칸
|
||||
(row,) = compute_milestone(after, 1500.0)
|
||||
assert (row["s2"], row["s1"], row["un"], row["total"]) == (0, 23.8, 0, 23.8)
|
||||
ui = _read("B08_Quantity/B08_Quantity_UI_Milestone_Diagram.ts")
|
||||
assert 'span.addEventListener("dblclick"' in ui and "e.stopPropagation();" in ui
|
||||
assert "editLegAt(projectId, span, ln.from, i, mk)" in ui
|
||||
assert "anchor.getBoundingClientRect()" in ui # 팬 · 줌 뒤 글 화면 자리
|
||||
assert "putMilestone(projectId, setLeg(liveMilestone(projectId), from, i, patch))" in ui
|
||||
|
||||
Reference in New Issue
Block a user