refactor(785-7): 옛 맞춤 화면 TS 지움 · 옛 [저장] · [모두 고정] 단추 걷음 · 390 줄 판 높이
- 지움(git rm) 15 파일 3,318 줄: Hopyo_Check · CheckRows · Choose · WizardSk · SkApi · SkLines · logic/SkPick · logic/Draft · Left · Lost · Pick · SheetMake · Kids · ToItem · Compare(모두 옛 확인 창 · 마법사 단가산출 · 안 이은 줄 길 몫 · 부르는 곳 0) - 단추 판단: 엑셀 보기 [저장](체크 호표) · [모두 고정으로 들여오기] 화면 단추 걷음 → 만들기 = [옮기기] 하나 · 모두 고정 서버 길(Builder · build_all)은 B09 · 붙여넣기가 써서 남김 · 목록 체크 칸 · 모달 껍데기(openHopyoSheet · raise · lower) 걷음 - Import: 「안 이은 줄」 띠 · [안 이은 줄 고르기] · 남은 줄 셈 걷음 · [끝내기] = 물음(확인하고 안 옮긴 수 = 판정 고름 캐시 moveBody) - Api: 옛 맞춤 타입 · 길(readHopyoOne · guessHopyo · buildHopyo · buildHopyoAll · leftHopyo · listHopyoPicks · hopyoSiblings · buildHopyoItem …) 걷음 · POLL_MS · HOPYO_BUILT 옮겨 옴 · 목록 꼴 = 1차 판정 줄상태(Judge.view) - Labor_Pick: withHopyo(실무 호표 덧줄) → withSangeun(찾아 넣기 창 표시만) · Detail · Table 부름 바꿈 - Ledger: unitField 옮겨 옴 · SheetNav: 옛 확인 캐시 칠 걷음 · UI_Page: [구조물 조합으로] 듣기 걷음 - CSS: 옛 확인 창 · 고르기 창 규칙 34 걷음(481 → 287 줄) · 390 폭 = 줄 판 열리면 위 칸 넓힘 · 줄 판 높이 바닥 16rem 시험 정리(까닭 = 지운 화면 파일만 읽음): - 지움: test_729_3_hopyo_left_screen · test_746_2_hopyo_compare_screen · test_778_5_sk_pick_screen · helper_729_3 · helper_m02_hopyo_check · pick · seam - test_m02_hopyo_screen = 좌측 판 · 끝내기 둘만 · 627 · helper_778_5 = SheetSk 판 바꿈만 · 785_4 · 721 · 717_4 · 720 · 739_1 = 지금 꼴로 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,123 +0,0 @@
|
||||
/* =============================================================================
|
||||
* M02_MasterTemplete_Hopyo_ToItem.ts
|
||||
* [구조물 조합으로](PLAN 704-4 뒷부분) — 실무자료 확인 창 몸 그대로 구조물 조합 항목(SU)을 바로 만듦(사전조합 안 거침).
|
||||
* 창 = 항목 이름(기본 = 호표 이름 · 규격) · 규격 묶음 제안(같은 이름 · 줄 구성 · 규격만 다른 호표 → 한 항목의 규격 열 ·
|
||||
* 기본 켬 · 끄면 이 호표 하나) · [만들기] → 서버 `/hopyo-item`(이 층 쓰기 · 「실무자료」 폴더) → 나무 다시
|
||||
* 숫자는 서버가 파일에서 — 화면은 체크 · 고름만
|
||||
* ========================================================================== */
|
||||
|
||||
import {
|
||||
createButton,
|
||||
el,
|
||||
hideLoadingOverlay,
|
||||
showLoadingOverlay,
|
||||
showToast,
|
||||
} from "@ui/ui_template_elements";
|
||||
import { createCheckbox } from "@ui/ui_template_checkbox";
|
||||
import { createInputField } from "@ui/ui_template_input";
|
||||
import { openModal } from "@ui/ui_template_modal";
|
||||
import { createText } from "@ui/ui_template_text";
|
||||
import { t as L } from "@ui/ui_template_locale";
|
||||
import {
|
||||
buildHopyoItem,
|
||||
hopyoSiblings,
|
||||
type BuildLine,
|
||||
type BuildTarget,
|
||||
type HopyoOne,
|
||||
type HopyoScope,
|
||||
} from "./M02_MasterTemplete_Hopyo_Api";
|
||||
import { type SameExtra, withSameAsk } from "./M02_MasterTemplete_Library_SameAsk";
|
||||
|
||||
/** 항목을 만들었음(document 알림) — 구조물 조합 나무 · 옆 목록 다시 */
|
||||
export const ITEM_BUILT = "m02-hopyo-item-built";
|
||||
|
||||
export interface ToItemOptions {
|
||||
scope: HopyoScope;
|
||||
target: HopyoScope;
|
||||
key: string;
|
||||
no: number;
|
||||
hopyo: HopyoOne["호표"];
|
||||
lines: BuildLine[];
|
||||
whole: { 대상: BuildTarget[] } | null;
|
||||
}
|
||||
|
||||
export async function toItem(o: ToItemOptions): Promise<void> {
|
||||
let sib: Awaited<ReturnType<typeof hopyoSiblings>>;
|
||||
try {
|
||||
sib = await hopyoSiblings(o.scope, o.key, o.no);
|
||||
} catch (error) {
|
||||
showToast(
|
||||
`묶음 제안 실패 — ${error instanceof Error ? error.message : String(error)}`,
|
||||
"error",
|
||||
);
|
||||
return;
|
||||
}
|
||||
const h = o.hopyo;
|
||||
const one = [h.이름, h.규격].filter(Boolean).join(" ");
|
||||
const bundle = sib.묶음.length > 1;
|
||||
const name = createInputField({ label: "구조물 조합 이름", value: bundle ? h.이름 : one });
|
||||
const pack = bundle
|
||||
? createCheckbox(
|
||||
`규격 열로 묶음 — ${sib.이름}: ${sib.묶음.map((r) => `${r.열}(제${r.번}호표)`).join(" · ")}`,
|
||||
{
|
||||
checked: true,
|
||||
onChange: (on) => (name.input.value = on ? h.이름 : one),
|
||||
},
|
||||
)
|
||||
: null;
|
||||
openModal({
|
||||
title: `구조물 조합으로 — 제${o.no}호표`,
|
||||
closeLabel: "취소",
|
||||
width: "40rem",
|
||||
mount: (body, close, actions) => {
|
||||
const go = createButton({
|
||||
label: "만들기",
|
||||
onClick: async () => {
|
||||
const label = name.input.value.trim();
|
||||
if (!label) return name.setError("이름이 빔");
|
||||
const from = { 층: o.scope.layer, 주인: o.scope.owner, 키: o.key, 번: o.no };
|
||||
const with_ = pack?.input.checked
|
||||
? sib.묶음.map((r) => r.번).filter((n) => n !== o.no)
|
||||
: [];
|
||||
// 같은 내용 항목이 있으면 물음(733-3) — 물을 때는 가림막을 걷음
|
||||
const build = async (extra: SameExtra) => {
|
||||
showLoadingOverlay();
|
||||
try {
|
||||
return await buildHopyoItem(o.target, from, o.lines, o.whole, with_, label, extra);
|
||||
} finally {
|
||||
hideLoadingOverlay();
|
||||
}
|
||||
};
|
||||
try {
|
||||
const got = await withSameAsk(build);
|
||||
if (!got) return;
|
||||
close();
|
||||
document.dispatchEvent(new Event(ITEM_BUILT));
|
||||
showToast(
|
||||
got.씀
|
||||
? `같은 내용 구조물 조합 「${got.이름}」 씀 — 새로 안 만듦`
|
||||
: `구조물 조합 「${label}」 만듦 — 「실무자료」 폴더 · 줄 ${got.줄수}` +
|
||||
((got.열수 ?? 0) > 1 ? ` · 규격 열 ${got.열수}` : ""),
|
||||
"success",
|
||||
6000,
|
||||
);
|
||||
} catch (error) {
|
||||
showToast(
|
||||
`못 만듦 — ${error instanceof Error ? error.message : String(error)}`,
|
||||
"error",
|
||||
);
|
||||
}
|
||||
},
|
||||
});
|
||||
actions.append(go);
|
||||
body.append(
|
||||
createText(
|
||||
`체크한 줄 = 품셈 줄 · 나머지 = 고정 줄(엑셀 숫자 그대로) — ${L("M02_PrecomboTitle")}을 거치지 않고 구조물 조합 항목을 바로 만듦`,
|
||||
"muted",
|
||||
),
|
||||
name.root,
|
||||
...(pack ? [el("div", { children: [pack.root] })] : []),
|
||||
);
|
||||
},
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user