- 임도품셈 판 대응표 CSV 새 자리(STmate/old/30_원자료) — 불러오기 시험 26 실패 → 0 - 가져온 식 SK = 수식 문서(멈춘 wip/802-4b-1 M02_Doc_Import 를 메인 판에 다시 얹음 · 빈 산근 = 엑셀 0 원 줄) — 줄 쌓기 「수식」 탭 길 열림 · 셈 = 단가기준(엑셀 값 기억 | 연결 값) · 화면 캐시 기록 · 수식 길 저장 `단가기준` - 1,021 블록 전수(실무 여덟 + 표본 밖 셋) 엑셀 검산 · 엑셀 전후 · 우리 전후 모두 같음 · 셈됨 줄지 않음 - 옮기기 도구 「가져온식」 상태 걷음(가져온 줄 문서로 대조) - [내 일위대가로] = 호표 하나 + 하위 → 개인 층 SC · 부르는 단산 = 가져온 식 SK(같은 내용 = 있는 것 · 못 이은 줄 = 고정) - [내 단가산출로] = 단산 블록 판 → 개인 층 가져온 식 SK(개인 층이면 [가져온 식으로 열기] 숨김) - 원문 패널(M01 로직 · M02 단가산출) 맨 위 「단가산출 기초 찾기」 · 가져온 식 SK 첫 화면 = 「어디서 왔나」 카드 (프로그램 · 파일 · 블록 · 행 · 가져온 때 · 표지 · 엑셀 글의 품셈 절 글만) - 수식 탭 [엑셀 단가 그대로 | 우리 단가로](단가산출 화면 · 저장 뒤 페이지 문서 단가기준 맞춤) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
72 lines
2.4 KiB
TypeScript
72 lines
2.4 KiB
TypeScript
/* =============================================================================
|
|
* M01_MasterData_UI_LogicLab_Side.ts
|
|
* 로직 상세 — 왼쪽 지금 내용 · 오른쪽 접는 패널 「원문」(품셈 본문 절)
|
|
* 공용 오른쪽 접는 패널(ui_template_side_panels) — 접힘 됨 · 접힌 패널 = 세로 글 띠
|
|
* 열림 · 폭은 취향 키(`m01-logic-side`) · 원문 = 공용 원문 보기(`LogicLab_Source`)
|
|
* 맨 위 「단가산출 기초 찾기」(807-1 · `LogicLab_SourceFind`) — 고르면 그 기초 원문 · 지우면 연 로직 원문
|
|
* ========================================================================== */
|
|
|
|
import { currentLanguageIndex } from "@ui/ui_template_locale";
|
|
import { createSidePanels } from "@ui/ui_template_side_panels";
|
|
import { el } from "@ui/ui_template_elements";
|
|
import { createSourceView } from "./M01_MasterData_UI_LogicLab_Source";
|
|
import { createSourceFind } from "./M01_MasterData_UI_LogicLab_SourceFind";
|
|
import "./M01_MasterData_UI_LogicLab_Side.css";
|
|
|
|
const TEXT = {
|
|
Source: ["원문", "Source"],
|
|
} as const;
|
|
|
|
const ts = (key: keyof typeof TEXT): string => TEXT[key][currentLanguageIndex === 1 ? 1 : 0];
|
|
|
|
export interface LogicSide {
|
|
/** [왼쪽 지금 내용, 오른쪽 패널] 칸 */
|
|
root: HTMLElement;
|
|
/** 연 로직의 출처 글 — 원문 패널이 열려 있으면 찾음 */
|
|
showSource(src: string): void;
|
|
}
|
|
|
|
export function buildLogicSide(left: HTMLElement): LogicSide {
|
|
const source = createSourceView();
|
|
let want = "";
|
|
let found: string | null = null; // 찾기로 고른 기초 출처(지우면 연 로직으로)
|
|
/** 원문 패널이 열려 있을 때만 찾음 */
|
|
const load = (): void => {
|
|
if (sp.current() === "source") source.show(found ?? want);
|
|
};
|
|
const find = createSourceFind({
|
|
onPick: (x) => {
|
|
found = x.출처 ?? "";
|
|
load();
|
|
},
|
|
onClear: () => {
|
|
found = null;
|
|
load();
|
|
},
|
|
});
|
|
const sp = createSidePanels({
|
|
prefKey: "m01-logic-side",
|
|
defaultWidth: 520,
|
|
minWidth: 320,
|
|
panels: [
|
|
{
|
|
id: "source",
|
|
title: ts("Source"),
|
|
body: el("div", { className: "m01lab-src", children: [find.root, source.root] }),
|
|
},
|
|
],
|
|
onChange: load,
|
|
});
|
|
return {
|
|
root: el("div", { className: "m01lab-side ui-side-panels-row", children: [left, sp.root] }),
|
|
showSource: (src) => {
|
|
if (src !== want) {
|
|
find.clear();
|
|
found = null;
|
|
}
|
|
want = src;
|
|
load();
|
|
},
|
|
};
|
|
}
|