Files
Aislo/D03_PlanAnalysis/D03_PlanAnalysis_UI_SatLight.ts
T

40 lines
1.5 KiB
TypeScript

/* =============================================================================
* D03_PlanAnalysis_UI_SatLight.ts
* D03 위성 바탕 밝기(요구 475) — 노선 선 대비를 위해 위성을 조금 어둡게 · 사용자가 범례에서 조절.
* 값 = 밝기 상한(0.4~1) · 계정 화면 취향으로 기억. 칠하기 = `D03_PlanAnalysis_UI_MapGl` `setSatelliteLight`.
* ========================================================================== */
import { createSlider } from "@ui/ui_template_input";
import { readByKey, writeByKey } from "../A00_Common/b_page_state";
const PREF_KEY = "aislo:pref:d03.satellite-light";
export const SAT_LIGHT_MIN = 0.4;
export const SAT_LIGHT_MAX = 1;
export const SAT_LIGHT_DEFAULT = 0.8;
/** 기억한 밝기 — 없거나 깨지면 처음 값. */
export function readSatLight(): number {
const value = Number(readByKey(PREF_KEY));
return readByKey(PREF_KEY) !== null && value >= SAT_LIGHT_MIN && value <= SAT_LIGHT_MAX
? value
: SAT_LIGHT_DEFAULT;
}
/** 범례 「위성 밝기」 칸 — 움직이면 바로 `onChange` · 기억. */
export function createSatLightRow(value: number, onChange: (value: number) => void): HTMLElement {
const { root, input } = createSlider({
label: "위성 밝기",
min: SAT_LIGHT_MIN,
max: SAT_LIGHT_MAX,
step: 0.05,
value,
format: (v) => `${Math.round(v * 100)} %`,
onInput: (v) => {
writeByKey(PREF_KEY, String(v));
onChange(v);
},
});
input.dataset.role = "satellite-light";
return root;
}