- map_layer_list = 겹 스물셋 · 처음 값 · 페이지 표(d03 · b05 보일 겹 · 처음 켬 · 취향 열쇠 — A② · A⑨) - map_layer_specs = GL 겹 꼴 · 차례(D03 UI_MapGl 에서 옮김 · 선 겹 꼴은 LINE_LAYERS 한 벌) - map_layer_bar = 겹 단추 줄 · 켬끔 · 취향 · 그래픽 카드 단추 / map_legend = 범례 칸 · 조각 겹 범례 - map_forest_layers = D03_UI_ForestLayers 옮김(이름만) - D03 UI_Layers 683 → 639 줄 · UI_MapGl 423 → 115 줄 · UI_LayerDefs 는 캔버스 도움 + 옛 이름 다시 내놓음 - 시험 길 고침(553-4 · 581-2 · 584-1 · 584-3 · 606-1 · 615 · 622-2) — 옮긴 파일 자리 · 553-4 겹 목록은 622-2 때 낡은 것(국유림 임도 · 경제림 · 생태자연도 빠짐) 같이 고침 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
37 lines
1.7 KiB
TypeScript
37 lines
1.7 KiB
TypeScript
/* =============================================================================
|
|
* map_legend.ts
|
|
* 공용 지도 범례(PLAN 569-2 · 622-2 · 624-2 · 요구 530) — 켠 겹 범례 칸 하나(줄마다 `createLegend`) + 페이지가 붙이는 덧 줄.
|
|
* 조각 겹 범례(산사태위험 · 국유림 임도 · 경제림 · 생태자연도) = 받을 자료 없음 → 켬끔만 보고 여기서 만듦(`tileLegendRows`).
|
|
* 받은 자료 범례(수 · 넓이 · 급경사 범위)는 받는 페이지 몫 — 줄을 만들어 `show` 에 넘김.
|
|
* 쓰는 법 = `const legend = createMapLegend("d03-plan__legend")` → `legend.show(rows, [덧 줄])` · 줄 · 덧 없으면 숨김.
|
|
* ========================================================================== */
|
|
|
|
import { createLegend, type LegendItem } from "@ui/ui_template_flow_legend";
|
|
import { forestLegendRows } from "./map_forest_layers";
|
|
import { LANDSLIDE_LEGEND, type MapLayerKey } from "./map_layer_list";
|
|
|
|
export interface MapLegend {
|
|
root: HTMLElement;
|
|
show: (rows: LegendItem[][], tail?: HTMLElement[]) => void;
|
|
}
|
|
|
|
/** 켠 조각 겹 범례 — 산사태위험 다음 산림 셋. */
|
|
export const tileLegendRows = (on: Record<MapLayerKey, boolean>): LegendItem[][] => [
|
|
...(on.landslide ? [LANDSLIDE_LEGEND] : []),
|
|
...forestLegendRows(on),
|
|
];
|
|
|
|
/** `className` = 자리 · 꼴(페이지 CSS). */
|
|
export function createMapLegend(className: string): MapLegend {
|
|
const root = document.createElement("div");
|
|
root.className = className;
|
|
root.title = "켠 겹 범례 — 받은 지형 범위 안 수 · 넓이";
|
|
return {
|
|
root,
|
|
show(rows, tail = []) {
|
|
root.replaceChildren(...rows.map((row) => createLegend(row)), ...tail);
|
|
root.hidden = !rows.length && !tail.length;
|
|
},
|
|
};
|
|
}
|