feat(일위대가실무): 329-3 엑셀 보기 창 — 읽기 전용 시트(일위대가 · 단가산출 탭) + 호표 목록(체크 · 찾기 · 맞춤) · 목록 누름 → 영역 강조 · 칸 누름 → 그 호표 · 고른 호표 한 번에 사전조합 + 결과 표 · 여는 자리 넷(올린 직후 · 엑셀로 보기 · 엑셀에서 보기 · 로직 추가 덧줄) · 늦게 불러옴
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XWh5wNNycMkbwMpACz1rte
This commit is contained in:
@@ -2,7 +2,8 @@
|
||||
* M02_MasterTemplete_Hopyo_Pick.ts
|
||||
* [로직 추가] 창의 「실무 호표」 줄(PLAN 324-4) — 일위대가 문서 층 · 위 층 실무자료의 호표마다 한 줄(맞춤 n/m) ·
|
||||
* 고르면 서버가 그 호표를 문서 층 사전조합으로 만들고(`/hopyo-build` · 있던 것은 다시 씀) `lib.pick` 으로
|
||||
* 참조 줄(별칭 = 호표 품명) · 빠진 줄이 있으면 알림. 프로젝트 층엔 없음.
|
||||
* 참조 줄(별칭 = 호표 품명) · 빠진 줄이 있으면 알림 · 파일마다 「엑셀로 보기 · 여러 호표」 줄(329 엑셀 보기 창 ·
|
||||
* 고른 호표마다 참조 줄). 프로젝트 층엔 없음.
|
||||
* ========================================================================== */
|
||||
|
||||
import { showToast } from "@ui/ui_template_elements";
|
||||
@@ -25,7 +26,42 @@ export function withHopyo(lib: LibraryPick): LibraryPick {
|
||||
{ value: "precombo", text: tc("Kind_Combo") },
|
||||
{ value: HOPYO_KIND, text: "실무 호표" },
|
||||
],
|
||||
more: async () => (await listHopyoPicks(scope)).map((row) => hopyoExtra(row, lib)),
|
||||
more: async () => {
|
||||
const rows = await listHopyoPicks(scope);
|
||||
const files = new Map<string, HopyoPickRow[]>();
|
||||
for (const row of rows) {
|
||||
const key = `${row.층}|${row.주인 ?? ""}|${row.키}`;
|
||||
files.set(key, [...(files.get(key) ?? []), row]);
|
||||
}
|
||||
return [
|
||||
...rows.map((row) => hopyoExtra(row, lib)),
|
||||
...[...files].map(([key, list]) => sheetExtra(key, list[0], list.length, lib)),
|
||||
];
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
/** 파일 하나 — 엑셀 보기 창에서 여러 호표를 골라 한 번에(만드는 층 = 문서 층) */
|
||||
export function sheetExtra(key: string, row: HopyoPickRow, n: number, lib: LibraryPick): PickExtra {
|
||||
return {
|
||||
kind: HOPYO_KIND,
|
||||
key: `${key}|엑셀`,
|
||||
tag: "실무 호표",
|
||||
name: "엑셀로 보기 · 여러 호표",
|
||||
sub: `${row.파일} · ${LAYER_TEXT[row.층] ?? row.층}`,
|
||||
unit: `호표 ${n}`,
|
||||
onPick: () =>
|
||||
void import("./M02_MasterTemplete_Hopyo_Sheet").then((m) =>
|
||||
m.openHopyoSheet({
|
||||
scope: { layer: row.층, owner: row.주인 },
|
||||
key: row.키,
|
||||
파일: row.파일,
|
||||
canWrite: true,
|
||||
target: { layer: lib.layer, owner: lib.owner },
|
||||
onImport: (got, h) =>
|
||||
lib.pick(got.참조, got.이름, h.이름.slice(0, ALIAS_MAX).trim() || null),
|
||||
}),
|
||||
),
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user