diff --git a/B05_wf2_Route/B05_wf2_Route_UI_Page.ts b/B05_wf2_Route/B05_wf2_Route_UI_Page.ts index bbe7b025..2f5cd140 100644 --- a/B05_wf2_Route/B05_wf2_Route_UI_Page.ts +++ b/B05_wf2_Route/B05_wf2_Route_UI_Page.ts @@ -390,13 +390,17 @@ export async function renderB05Route(root: HTMLElement): Promise { } function renderStationLines(detail: SectionDetailResponse): void { + // 확정 때 종단 정본에 병합해 둔 비정규 측점은 그리지 않는다. 화면의 정본은 사이드바 목록이고 + // 관을 옮기면 그 목록만 따라오므로, 둘을 겹쳐 그리면 옮기기 전 자리가 그대로 남는다 + // (2026-08-02 사용자 보고). 저장분은 진입 시 `restoreSections`가 목록으로 되살린다. + const regular = detail.longitudinal.stations.filter((station) => station.kind !== "irregular"); const injected = interpolateIrregularStations( - detail.longitudinal.stations, + regular, irregularStations, detail.longitudinal.length_m, ); // 측점 바 양 끝 램프용 상단측: 사용자 변경분 → solve 자동 판정 순으로 적용. - const withUphill = [...detail.longitudinal.stations, ...injected].map((station) => ({ + const withUphill = [...regular, ...injected].map((station) => ({ ...station, uphill_side: uphillOverrides.get(uphillKey(station.chainage_m)) ?? station.uphill_side ?? null, diff --git a/B05_wf2_Route/B05_wf2_Route_UI_Profile_Panel.ts b/B05_wf2_Route/B05_wf2_Route_UI_Profile_Panel.ts index adbc7f73..2f2d670e 100644 --- a/B05_wf2_Route/B05_wf2_Route_UI_Profile_Panel.ts +++ b/B05_wf2_Route/B05_wf2_Route_UI_Profile_Panel.ts @@ -472,15 +472,15 @@ export function createRouteProfilePanel( : (longitudinal.design_profiles ?? []); // 그래프에는 비정규 측점을 일반 측점처럼(세로선+라벨) 섞어 넣는다. const graphData = normalizedLongitudinal(longitudinal); + // 종단 정본(확정 시 병합분)에 들어 있는 비정규 측점은 걷어낸다 — 화면의 정본은 사이드바 + // 목록이고, 관을 옮기면 그 목록만 따라온다. 둘을 겹쳐 그리면 옮기기 전 자리의 세로선이 + // 그대로 남는다(2026-08-02 사용자 보고). + const regular = graphData.stations.filter((station) => station.kind !== "irregular"); const injected = irregularGraphStations(irregularStations, maxChainageOf(longitudinal)); - const graphLongitudinal = injected.length - ? { - ...graphData, - stations: [...graphData.stations, ...injected].sort( - (a, b) => a.chainage_m - b.chainage_m, - ), - } - : graphData; + const graphLongitudinal = { + ...graphData, + stations: [...regular, ...injected].sort((a, b) => a.chainage_m - b.chainage_m), + }; let yAxis: { padLeft: number; ticks: Array<{ y: number; label: string }> } | null = null; chartWrap.append( createLongitudinalProfile(