- 유토곡선 = 늘 노선 전체 한 화면(측점선 · 스크롤 동기 · 휠 · 스크롤마다 다시 그림 지움) - 범례 기본값에 토량 분배 더함 · 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
58 lines
2.3 KiB
JavaScript
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),
|
|
}),
|
|
);
|