diff --git a/M01_MasterData/M01_MasterData_UI_LogicLab_Side.css b/M01_MasterData/M01_MasterData_UI_LogicLab_Side.css index eb4724990..977a12f4d 100644 --- a/M01_MasterData/M01_MasterData_UI_LogicLab_Side.css +++ b/M01_MasterData/M01_MasterData_UI_LogicLab_Side.css @@ -40,6 +40,11 @@ line-height: 1.6; } +/* [주] 글 — 본문(--text-body)보다 한 단 작게 */ +.m01lab-src__note { + font-size: var(--text-body-sm); +} + .m01lab-src__file { margin: 0; font-size: var(--text-body-sm); diff --git a/M01_MasterData/M01_MasterData_UI_LogicLab_Source.ts b/M01_MasterData/M01_MasterData_UI_LogicLab_Source.ts index b587d1892..ede0ecc99 100644 --- a/M01_MasterData/M01_MasterData_UI_LogicLab_Source.ts +++ b/M01_MasterData/M01_MasterData_UI_LogicLab_Source.ts @@ -65,6 +65,18 @@ function rawNode(b: Block): HTMLElement { return el("p", { className: "m01lab-src__p", text: b.p ?? "" }); } +/** 「[주]」 줄부터 다음 제목 앞까지 글 줄 = 한 단 작은 글자(`m01lab-src__note`) */ +function noteMarked(blocks: Block[]): HTMLElement[] { + let inNote = false; + return blocks.map((b) => { + if (b.h) inNote = false; + else if (b.p?.trim().startsWith("[주]")) inNote = true; + const node = blockNode(b); + if (inNote && b.p !== undefined) node.classList.add("m01lab-src__note"); + return node; + }); +} + export interface SourceView { root: HTMLElement; /** 그 출처 글의 원문을 그림 — 지금 보이는 것과 같으면 안 부름 */ @@ -122,19 +134,21 @@ export function createSourceView(opts: SourceViewOptions = {}): SourceView { if (shown !== src) return; if (!found.length) return none(); body.replaceChildren( - ...found.flatMap((f) => [ - el("p", { - className: "ui-text ui-text--muted m01lab-src__file", - text: [ - f.file, - f.matched === f.number ? "" : ts("Near", f.number), - f.item ? (/^\d+$/.test(f.item) ? `${f.item}항` : f.item) : "", - ] - .filter(Boolean) - .join(" · "), - }), - ...f.blocks.map(blockNode), - ]), + ...found.flatMap((f) => { + // 파일 경로는 안 보임 — 가까운 절 · 항 안내만 + const note = [ + f.matched === f.number ? "" : ts("Near", f.number), + f.item ? (/^\d+$/.test(f.item) ? `${f.item}항` : f.item) : "", + ] + .filter(Boolean) + .join(" · "); + return [ + ...(note + ? [el("p", { className: "ui-text ui-text--muted m01lab-src__file", text: note })] + : []), + ...noteMarked(f.blocks), + ]; + }), ); // 강조 항을 패널 몸 가운데로 — 몸만 굴림(85-5 · scrollIntoView 는 메인 창까지 굴림) requestAnimationFrame(() => { diff --git a/docs/raw/요구_1104/사용자요구_1104.md b/docs/raw/요구_1104/사용자요구_1104.md index 5a82025ef..9e18fa262 100644 --- a/docs/raw/요구_1104/사용자요구_1104.md +++ b/docs/raw/요구_1104/사용자요구_1104.md @@ -629,3 +629,40 @@ M01은 지금 상당히 잘 개발이 되었어. 일위대가 불러오기의 6. 지금 단가산출의 우측 공통 원문 패널보기 내용 중에 md파일의 경로를 알려주고 있음. 이부분은 다른 워크트리에게 경로를 볼필요없으니 삭제해달라고 해줘. 7. 원문 패널의 내용 중 [주] 내용의 글자가 더크고 본문의 내용이 작음. 반대가 되는게 맞음. 위 내용을 반영하고 다시 조사하고 작업을 이어서 하는데 너가 판단해보고 현재 작업중인 서브3과 충돌이 없다면 다른 워크트리에게 작업을 시키자. + +## 요구 724 (11-09 · 사용자 · 보조 문서를 단가산출 목록에서 빼면 어디에 둘지 의견 물음) + +단가산출 목록에서 빼면 어디다 두는게 좋을것같아? + +## 요구 725 (11-09 · 사용자 · 보조 문서 자리 = 권장으로 해도 될 듯 · 조사해 맞는지 먼저 보고 판단 · 「정할 것」 설명 필요) + +1. 권장으로 해도 될것같음. 하지만 조사해보고 맞는 먼저 보고 판단하자. + 2. 정할것에 대한 설명이 필요. + +## 요구 726 (11-09 · 사용자 · 전용 작업량도 기계 항목으로 · 작업량당 기계경비 예시 요청 · 기계 무관 = 제안대로 · 토사절취(백호 0.7㎥) 대화창 출력 · 1~4 한 번에 진행 예정 — 일단 대기) + +1. 전용 일지라도 결과적으로는 다른곳에서 사용할수도 있으니 기계라면 당연히 기계항목으로 들어가는게 맞아보임. 현재는 하나지만 나중에는 늘어날수도 있잖아. +2. 작업량당 기계경비는 어떤걸말하는것임? 예를 들어 보여줘. +3. 기계무관은 너의 제안대로 +4. 토사절취(백호 0.7㎥) 단가산출을 대화창에 출력해줘. +5. 1~4번은 한번에 진행할 생각이야. 그러니 일단대기하고 4번을 대화창에 출력 + +## 요구 727 (11-09 · 사용자 · 토사절취 예시의 문제가 무엇인지 물음 — 시간당이 아니라 단위당으로 나오는 것이 문제냐) + +이게 뭐가 문제야? 원래는 기계의 돈은 시간당으로 나와야하는데 단위면적당으로 나온다는 거야? + +## 요구 728 (11-09 · 사용자 · 신규 단가산출에 기계 하나만 지정하면 작업량당 기계경비와 같은 것) + +아니 그러니까 내가 만약에 신규 단가산출을 만들고 거기에 기계만 하나 지정하면 같은게 되는거잖아. + +## 요구 729 (11-09 · 사용자 · 결국 표현 단위 차이 — 단위 환산 로직을 단가산출 기초에 두는 게 맞지 않나) + +결국은 표현의 단위차이라는 말 아니야? 그렇다면 표현하는 단위 환산로직을 단가산출 기초에 넣어두는게 더 맍지 않아? + +## 요구 730 (11-09 · 사용자 · 표로 다시 · 짧게) + +테이블로 다시 표현해봐 . 이해하기 힘들어. 짧게 설명해줘. + +## 요구 731 (11-09 · 사용자 · 나눔 맞는 것 같음 · 단가산출 기초 화면의 공식 틀 추가는 필요 없어진 것인지) + +맞는것같네. 그럼 이제 단가산출 기초화면에서 공식 틀 추가는 필요없어진 것임?