fix(M02): 집계표 [저장] 뒤 새 열 도면 정보가 안 열리던 것 — 번호 다시 받고 카드 새로
- 원인: 새 열은 [저장] 때 서버가 구조물 · 면적산출 · 재료산출 파일과 번호를 만드는데 화면은 번호 목록을 처음 한 번만 받음 · 같은 열을 다시 고르면 카드를 안 다시 읽어 「도면 없음」 · 번호 빈칸이 다시 열 때까지 남음 - [저장] 뒤 번호 다시 받기 · 도면 · 면적산출 · 재료산출 줄 다시 그림 · 보던 열 카드 다시 읽음 - 같은 열을 다시 고르면 이름만 새로(머리 고친 열) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019Kyw9qnkJ94pC1A4PfpDtA
This commit is contained in:
@@ -237,8 +237,10 @@ export interface StructurePanelHandle {
|
||||
numbers: () => ColumnNumbers;
|
||||
/** 번호 목록 다시 받기 */
|
||||
reload: () => Promise<void>;
|
||||
/** 고른 열이 바뀜 — 같은 열이면 아무것도 안 함(CAD 를 다시 안 띄움) */
|
||||
/** 고른 열이 바뀜 — 같은 열이면 이름만 새로(CAD 를 다시 안 띄움) */
|
||||
show: (colId: string | null, columns: StructureColumn[]) => void;
|
||||
/** 보던 열을 다시 읽음 — 집계표 [저장] 뒤(서버가 새 열 파일 · 번호를 만듦) */
|
||||
refresh: (columns: StructureColumn[]) => void;
|
||||
/** 집계표 조회 후 선택(`onPick`) — 일위대가 = 고른 키(「비움」 = 빈 글 · 닫으면 null) ·
|
||||
* 도면 · 면적산출 · 재료산출 = 다른 열 것을 복사해 가져옴(돌려주는 글 없음) */
|
||||
pick: (row: string, colId: string | null, columns: StructureColumn[]) => Promise<string | null>;
|
||||
@@ -423,8 +425,8 @@ export function createStructurePanel(opts: StructurePanelOptions): StructurePane
|
||||
/** 글 열(NO · 측점 · 비고)은 구조물이 아니라 컨테이너를 닫음 */
|
||||
const show = (colId: string | null, columns: StructureColumn[]): void => {
|
||||
const col = columns.find((c) => c.id === colId && isStructureColumn(c)) ?? null;
|
||||
if ((col?.id ?? null) === column) return;
|
||||
void load(col);
|
||||
if ((col?.id ?? null) !== column) return void load(col);
|
||||
if (col) columnName.textContent = columnLabel = columnHead(col); // 머리를 고쳤을 수 있음
|
||||
};
|
||||
|
||||
const pickPrice = async (colId: string, columns: StructureColumn[]): Promise<string | null> => {
|
||||
@@ -507,6 +509,11 @@ export function createStructurePanel(opts: StructurePanelOptions): StructurePane
|
||||
numbers = await fetchStructureNumbers().catch(() => ({}));
|
||||
},
|
||||
show,
|
||||
refresh: (columns) => {
|
||||
const at = column;
|
||||
column = null;
|
||||
show(at, columns);
|
||||
},
|
||||
pick,
|
||||
destroy: () => {
|
||||
seq += 1;
|
||||
|
||||
@@ -297,6 +297,13 @@ export function createMain(isAdmin: boolean, onSaved?: () => void): MainHandle {
|
||||
version = info.판;
|
||||
loaded = doc;
|
||||
dirty = false;
|
||||
// 구조물집계표 — 서버가 새 열 파일 · 번호를 만듦 · 번호를 다시 받아 도면 줄 · 카드를 새로
|
||||
// (안 하면 새 열은 다시 열 때까지 「도면 없음」 · 번호 빈칸)
|
||||
if (panel && sheet) {
|
||||
await panel.reload();
|
||||
sheet.recalc();
|
||||
panel.refresh(sheet.getDoc()?.열 ?? []);
|
||||
}
|
||||
showNotice([]);
|
||||
showToast(L("M02_Saved"), "success");
|
||||
onSaved?.(); // 좌측 목록의 판을 새 판으로
|
||||
|
||||
Reference in New Issue
Block a user