Files
Aislo/resources/tester/helper_354_2_masshaul_cross_only.cjs
T
eomsangdonandClaude Opus 5.5 eb4f8ba55a feat(B05): 367-1 유토곡선 늘 전체 맞춤 · 측점 연계 보기 지움 · 기본 = 횡단 기준 + 토량 분배 · [도형 위치 초기화] 횡단 기준 왼쪽
- 유토곡선 = 늘 노선 전체 한 화면(측점선 · 스크롤 동기 · 휠 · 스크롤마다 다시 그림 지움)
- 범례 기본값에 토량 분배 더함 · masshaul-visible 판 v6
- [토량 분배] = 분배 그림 보임/숨김 · [도형 위치 초기화] 범례 맨 앞
- 시험 354_1 · 354_2 · 354_3 · 224_1b 고쳐 씀

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QfHKQs7J3hQELKMWQMUJEy
2026-10-17 11:48:16 +09:00

58 lines
2.3 KiB
JavaScript

/* 354-2 종단 기준 숨김 — 진짜 `readVisible`(B05 유토곡선) · `normalizeVisibleBasis` ·
* `computeMassHaulSeries`(공용)를 잘라 돌려 JSON 으로 냄.
* · 저장된 범례 = 종단 → 횡단으로 맞춤 · 분배 켬은 그대로
* · 기준 ["cross"] = 횡단 계열 하나 · 기본(묶음 단계) = 두 기준 그대로 */
const fs = require("fs");
const path = require("path");
const ts = require(path.join(__dirname, "..", "..", "config", "node_modules", "typescript"));
const ROOT = path.join(__dirname, "..", "..");
const read = (...p) => fs.readFileSync(path.join(ROOT, ...p), "utf8");
const transpile = (code) =>
ts.transpileModule(code, {
compilerOptions: { module: ts.ModuleKind.CommonJS, target: ts.ScriptTarget.ES2020 },
}).outputText;
const block = (src, head) => {
const at = src.indexOf(head);
if (at < 0) throw new Error(`없음: ${head}`);
return src.slice(at, src.indexOf("\n}", at) + 2).replace(/^export /, "");
};
const util = read("common_util", "common_util_mass_haul.ts");
const mass = read("B05_Profile", "B05_Profile_UI_Profile_MassHaul.ts");
let stored = null;
const src = [
'const SERIES_BASES = ["cross", "longitudinal"];',
'const DEFAULT_VISIBLE = ["cross", "balance"];', // 367-1 기본 = 횡단 + 분배
block(util, "export function normalizeVisibleBasis("),
block(mass, "function readVisible(): Set<string> {"),
block(util, "export function computeMassHaulSeries("),
].join("\n");
const api = new Function(
"readStateRaw",
"designedSections",
"crossAreaSamples",
"longitudinalAreaSamples",
"integrate",
`${transpile(src)}; return { readVisible, computeMassHaulSeries };`,
)(
() => stored,
(sections) => sections,
() => [{ basis: "cross" }],
() => [{ basis: "longitudinal" }],
(samples) => ({ from: samples[0].basis }),
);
const visible = (raw) => ((stored = raw), [...api.readVisible()].sort());
process.stdout.write(
JSON.stringify({
longitudinal: visible('["longitudinal"]'),
longitudinalBalance: visible('["longitudinal","balance"]'),
cross: visible('["cross"]'),
empty: visible(null),
broken: visible("{"),
crossOnly: api.computeMassHaulSeries({}, [], {}, undefined, ["cross"]).map((s) => s.key),
both: api.computeMassHaulSeries({}, [], {}).map((s) => s.key),
}),
);