Merge remote-tracking branch 'origin/sub_laptop_7' into main_laptop_1
This commit is contained in:
@@ -167,6 +167,34 @@ function choose(title: string, items: Choice[], clearable: boolean): Promise<str
|
||||
});
|
||||
}
|
||||
|
||||
/** 일위대가 고르기 창 — 이 층이 쓸 수 있는 세 층 조합 · 찾기 = 띄어쓰기 AND · 「비움」 = 키 빈 글 · 닫으면 null
|
||||
* (표 칸 고르기 · 항목 추가 창이 함께 씀 · PLAN 31-2) */
|
||||
export async function pickCombo(title: string): Promise<{ key: string; label: string } | null> {
|
||||
let list: Awaited<ReturnType<typeof loadCombos>>;
|
||||
try {
|
||||
list = await loadCombos();
|
||||
} catch (error) {
|
||||
showToast(fill(TEXT.combosFailed, why(error)), "error");
|
||||
return null;
|
||||
}
|
||||
const items = list.map((c) => ({
|
||||
value: c.키,
|
||||
key: c.키,
|
||||
// 이름에 단위가 이미 붙은 조합이 있음 — 겹치면 뺌
|
||||
label: [
|
||||
c.이름,
|
||||
c.단위 && !c.이름.includes(`(${c.단위})`) && `(${c.단위})`,
|
||||
c.구분,
|
||||
`· ${LAYER_WORD[c.layer]}`,
|
||||
]
|
||||
.filter(Boolean)
|
||||
.join(" "),
|
||||
}));
|
||||
const key = await choose(title, items, true);
|
||||
if (key === null) return null;
|
||||
return { key, label: items.find((it) => it.value === key)?.label ?? "" };
|
||||
}
|
||||
|
||||
/** 집계표 열 — 머리 글(제목행 종류 · 분류1 · 분류2 · 분류3) · 꼴만 씀 */
|
||||
export interface StructureColumn {
|
||||
id: string;
|
||||
@@ -341,28 +369,9 @@ export function createStructurePanel(opts: StructurePanelOptions): StructurePane
|
||||
};
|
||||
|
||||
const pickPrice = async (colId: string, columns: StructureColumn[]): Promise<string | null> => {
|
||||
let list: Awaited<ReturnType<typeof loadCombos>>;
|
||||
try {
|
||||
list = await loadCombos();
|
||||
} catch (error) {
|
||||
showToast(fill(TEXT.combosFailed, why(error)), "error");
|
||||
return null;
|
||||
}
|
||||
const col = columns.find((c) => c.id === colId);
|
||||
const items = list.map((c) => ({
|
||||
value: c.키,
|
||||
key: c.키,
|
||||
// 이름에 단위가 이미 붙은 조합이 있음 — 겹치면 뺌
|
||||
label: [
|
||||
c.이름,
|
||||
c.단위 && !c.이름.includes(`(${c.단위})`) && `(${c.단위})`,
|
||||
c.구분,
|
||||
`· ${LAYER_WORD[c.layer]}`,
|
||||
]
|
||||
.filter(Boolean)
|
||||
.join(" "),
|
||||
}));
|
||||
return choose(col ? `${TEXT.pickPrice} — ${columnHead(col)}` : TEXT.pickPrice, items, true);
|
||||
const got = await pickCombo(col ? `${TEXT.pickPrice} — ${columnHead(col)}` : TEXT.pickPrice);
|
||||
return got ? got.key : null;
|
||||
};
|
||||
|
||||
/** 다른 열의 도면 · 면적산출 · 재료산출을 골라 내용만 복사 — 덮어쓰기 확인 · 보고 있던 열이면 다시 읽음 */
|
||||
|
||||
Reference in New Issue
Block a user