Files
Aislo/D03_PlanAnalysis/D03_PlanAnalysis_UI_Features.ts
T
eomsangdonandClaude Opus 5.5 eba5223356 feat(638-3): 예정노선 노선 세트 화면 — 속성 판 세트 칸 · 연도 밑 세트 줄 · 이름표 「2027-1」 · [잇기] · 저장 뒤 끊김 경고 · D04 세트 줄(요구 547 · 548)
- 속성 판 · 왼쪽 칸 세트 고름 = setChoices(있는 세트 + 해마다 새 세트) → assignSet(토막 · 구역 · 구간 고름 모두) · 옛 setPiecesYear · setLineYear 자리 갈음
- 왼쪽 해 줄 밑 세트 줄(길이 · 구간 수 · 덩이 수 = 마지막 서버 셈) · 같은 세트 고름 · 되돌리기 뒤 길이 글 옛 값 흠 고침(열쇠에 구간 꼴)
- 지도 이름표 「2027-1」 · 속 빈 마름모 = 같은 세트 · 마커 이름 「구간 나눔」
- [잇기] = 선 끝 노드 속성 판 · 우클릭 → 다른 선 끝 누름 = joinEnds 한 걸음 · Esc 그만
- [저장] 뒤 derived.sets parts > 1 · branch = 알림 「2027-1 이 2 덩이 · 빈틈 35.0 m」(Group.setWarnings · setGapM)
- D04 표 첫 칸 = 세트 · 선 · 덩이 · 갈래 + 확정 막힘 알림 띠
- 기능 표 set(B05 보기만) · join(B05 숨김) 줄 · 시험 638_group 빈틈 · 626_3 표 줄

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 12:00:21 +09:00

124 lines
3.9 KiB
TypeScript

/* =============================================================================
* D03_PlanAnalysis_UI_Features.ts
* 노선 그리기 기능 표(PLAN 635-1 · 요구서 546 4장) — 예정노선(d03) · B05 평면이 같은 그리기 부품을 쓰고 이 표로만 가름.
* 한 줄 = 기능 열쇠 · 이름 · 페이지마다 쓰임(use 사용 · view 보기만 · hide 숨김) · 까닭.
* 숨김을 바꿀 때 = 이 표만 고침(부품 · 키트가 `featureUse` 로 읽음) · 꼴 = 지도 도구줄 표(`map_toolbar`).
* ========================================================================== */
import type { MapPage } from "../A00_Common/map/map_layer_list";
export type PlanPage = MapPage;
export type FeatureUse = "use" | "view" | "hide";
export type PlanFeature =
| "site"
| "draw"
| "extend"
| "select"
| "props"
| "history"
| "terrain"
| "road-upload"
| "branch"
| "years"
| "set"
| "join"
| "points"
| "plan-work";
export interface PlanFeatureRow {
key: PlanFeature;
name: string;
pages: Record<PlanPage, FeatureUse>;
why?: string;
}
export const PLAN_FEATURES: readonly PlanFeatureRow[] = [
{ key: "site", name: "주소 · 장소 찾기(B05 = 지도 이동만)", pages: { d03: "use", b05: "use" } },
{
key: "draw",
name: "긋기 네 방식 · 길이 · 기울기 · Tab · Shift · 부채꼴 · ± 색",
pages: { d03: "use", b05: "use" },
},
{
key: "extend",
name: "이어 긋기 · 다시 긋기 · 빈 땅 새 선(선 없을 때)",
pages: { d03: "use", b05: "use" },
},
{
key: "select",
name: "고름 노드 → 선 → 전체 · 끌어 고르기 · 노드 끌기 · 꺾임점 · 지움",
pages: { d03: "use", b05: "use" },
},
{
key: "props",
name: "속성 판 지반고 · 측점 · 길이 · 기울기 · 경위도(B05 = 서버 변환)",
pages: { d03: "use", b05: "use" },
},
{
key: "history",
name: "되돌리기 · 다시하기 · 길이측정 · 3D(B05 = B05 것)",
pages: { d03: "use", b05: "use" },
},
{
key: "terrain",
name: "기준점 · 지형 받기 · 다시 받기 · 10 km 알림",
pages: { d03: "use", b05: "hide" },
why: "B 지형 = 전처리 확정",
},
{
key: "road-upload",
name: "임도(업로드) 올리기 · 묶음 목록",
pages: { d03: "use", b05: "hide" },
why: "서버 B 400 · 받은 자료로 보임",
},
{
key: "branch",
name: "갈래 · 둘째 선 · 다른 선과 잇기 · 가운데 토막 지움(끝 토막 지움은 사용)",
pages: { d03: "use", b05: "hide" },
why: "B 계획선 한 줄",
},
{
key: "years",
name: "구간 나눔 마커 · 구역 · 연도 고침 · 선 이름",
pages: { d03: "use", b05: "view" },
why: "받은 몫 고정",
},
{
key: "set",
name: "노선 세트(연도-번호) 칸 · 세트 줄 · 이름표",
pages: { d03: "use", b05: "view" },
why: "받은 몫 고정",
},
{
key: "join",
name: "[잇기] 두 선 끝 이음",
pages: { d03: "use", b05: "hide" },
why: "B 계획선 한 줄",
},
{
key: "points",
name: "지점 칸 · 핀 · 지점에서 긋기",
pages: { d03: "use", b05: "hide" },
why: "B 저장 자리 없음",
},
{
key: "plan-work",
name: "등록 기준점 · 확정 · 업체 지정 · 배포 · 산림청 [저장]",
pages: { d03: "use", b05: "hide" },
why: "예정노선 업무",
},
];
/** 그 페이지 쓰임 — 표에 없는 열쇠 = 숨김. */
export function featureUse(page: PlanPage, key: PlanFeature): FeatureUse {
return PLAN_FEATURES.find((row) => row.key === key)?.pages[page] ?? "hide";
}
/** 고칠 수 있게 씀(보기만 · 숨김 = 거짓). */
export const featureOn = (page: PlanPage, key: PlanFeature): boolean =>
featureUse(page, key) === "use";
/** 보임(사용 · 보기만). */
export const featureShown = (page: PlanPage, key: PlanFeature): boolean =>
featureUse(page, key) !== "hide";