feat(B05 평면): 예정노선 변경 = 예정노선 페이지 긋기 · 고르기 · 메뉴 · 속성 판 그대로(한 선) · 원본 옅은 점선 켬끔 (PLAN 626-3 · 요구 535-1 · 536 · 535-3)
- B05 「예정노선 변경」 켬끔 = D03 createPlanDraw · createPlanEdit · createPlanMenu · createPlanProps 를 한 선 network 로 얹음(같은 함수 · 단추 · 단축키 · 노드 끌기 · 고른 토막 끌어 꺾임점 · Delete · [다시 긋기]) — 갈래 · 둘째 선 · 연도 · 지점은 막음/숨김 - 한 번 고침(긋기 끝 · 놓음 · 지움) → 켠 뒤 첫 고침만 확인창 → `/route/follow` → 편집기 한 걸음 · 다 지우면 새로 그을 때까지 평면 그대로 - 도구줄 「예정노선(원본)」 켬끔 — 파일입력 예정노선(안 덮음)을 옅은 점선으로(고친 것과 다를 때만) - D03 덧 인자 `oneLine`(UI_Draw · UI_DrawPanel 연도 마커 · UI_Menu · UI_Props) — 기본값 = 지금 그대로 · 긋기 칸 · 속성 판 꼴 CSS 를 `D03_PlanAnalysis_UI_DrawParts.css` 로 옮겨 그 TS 가 불러옴(D03 꼴 같음) - 옛 자체 긋기 셈 `logic/B05_Profile_ExpectedDraw.ts` 지움(D03 셈으로 갈음) · 시험 test_626_3 다시 씀(5) - 낡은 글 고침 — 설계 지형 바꿈 = 지형 칩(`/route/design-terrain`) · 「추천 [적용] 때만」 글 걷음(Router_Terrain · Router_Replan · Api_Replan · RouteEdit_Apply · 동작 그대로) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -68,6 +68,18 @@ const START_HINT = "지점 · 선 끝 · 선 위를 눌러 시작합니다 —
|
||||
|
||||
export type DrawMode = "idle" | "draw";
|
||||
|
||||
/** 한 선(626-3) 막힘 까닭 — 선 위 · 지점 = 갈래 · 선이 있는데 빈 땅 = 둘째 선 · 됨 = null. */
|
||||
export function oneLineBlock(
|
||||
kind: "tip" | "point" | "line" | "empty",
|
||||
network: PlanNetwork,
|
||||
): string | null {
|
||||
if (kind === "line" || kind === "point")
|
||||
return "예정노선은 한 선입니다 — 선 끝에서 이어 긋습니다.";
|
||||
if (kind === "empty" && network.lines.some((line) => line.vertices.length > 1))
|
||||
return "예정노선은 한 선입니다 — 지운 뒤 새로 긋습니다.";
|
||||
return null;
|
||||
}
|
||||
|
||||
export interface DrawPreview {
|
||||
point: Vertex;
|
||||
lengthM: number;
|
||||
@@ -90,6 +102,8 @@ export interface PlanDrawParams {
|
||||
commit: (next: PlanNetwork) => void;
|
||||
/** 모드 · 그리는 선이 바뀜 — 페이지가 단추 · 안내를 다시. */
|
||||
onMode: () => void;
|
||||
/** 한 선만(B05 평면 예정노선 · 626-3) — 갈래 · 둘째 선 막음 · 연도 구역 마커 숨김. 없음 = D03 그대로. */
|
||||
oneLine?: boolean;
|
||||
}
|
||||
|
||||
export interface PlanDraw {
|
||||
@@ -145,6 +159,7 @@ export function createPlanDraw(params: PlanDrawParams): PlanDraw {
|
||||
});
|
||||
const drawPanel = createDrawPanel({
|
||||
kind: kindFields,
|
||||
marks: !params.oneLine,
|
||||
onDraw: () => setMode(mode === "draw" ? "idle" : "draw"),
|
||||
});
|
||||
const panel = drawPanel.root;
|
||||
@@ -366,6 +381,11 @@ export function createPlanDraw(params: PlanDrawParams): PlanDraw {
|
||||
function begin(px: number, py: number, map: ScreenMap, free = false): boolean {
|
||||
const network = params.network();
|
||||
const target = aim(px, py, map);
|
||||
const single = params.oneLine ? oneLineBlock(target.kind, network) : null;
|
||||
if (single) {
|
||||
showToast(single, "info");
|
||||
return false;
|
||||
}
|
||||
strokeStart = network;
|
||||
if (target.kind === "tip") {
|
||||
if (target.head) {
|
||||
|
||||
Reference in New Issue
Block a user