feat(746-2): 고르기 창 후보 블록 줄 비교 표 · 못옮김 · 안 이은 기계 줄 M01 요소 후보 단추

- 고름 대기 칸에 후보(앞 셋)마다 줄 비교 표(줄 · 엑셀 품 · 기초 품 · 꼴 배지) · 후보 고름 칸과 동기 · 칸 글에 같음 · 품 다름 수 · 판정 · 미리 고름 그대로
- 못옮김 잇기 창 · 안 이은 줄 창에 M01 요소 후보 셋 단추(누르면 이음 고름) · 안 이은 줄 창 기초 후보 칸에는 요소 후보가 안 섞이게 가름
- 새 파일 Hopyo_Compare.ts · 새 지킴 시험 test_746_2_hopyo_compare_screen

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-11-02 22:17:48 +09:00
co-authored by Claude Sonnet 5.5
parent 1c26a6f791
commit 6732842a8e
8 changed files with 256 additions and 8 deletions
@@ -31,8 +31,11 @@ import {
type HopyoPart,
type HopyoScope,
type LinkBase,
type SangeunCand,
isElem,
} from "./M02_MasterTemplete_Hopyo_Api";
import { bodyOf, draftKey, loadDraft, saveDraft, toTarget } from "./M02_MasterTemplete_Hopyo_Check";
import { elemChoices } from "./M02_MasterTemplete_Hopyo_Compare";
import { kindsOf, openHopyoChoose } from "./M02_MasterTemplete_Hopyo_Choose";
import { openFindPicker } from "./M02_MasterTemplete_Find_Pick";
import { openLost } from "./M02_MasterTemplete_Hopyo_Lost";
@@ -187,10 +190,11 @@ export function openLeft(
const actions = (no: number, row: HopyoLeft, line: HopyoLine | undefined): HTMLElement => {
const box = el("div", { className: "ui-toolbar" });
const bases = row.후보.filter((c): c is SangeunCand => !isElem(c));
const block = (line as { 참조?: { 종류?: string; 번?: number } } | undefined)?.참조;
if (row.후보.length && block?.종류 === "단산" && block.번 !== undefined) {
if (bases.length && block?.종류 === "단산" && block.번 !== undefined) {
const pick = createSelectField({
options: row.후보.map((c) => ({
options: bases.map((c) => ({
value: c.로직,
text: `${c.이름} [${c.단위}] · ${c.판정}${c.글 && c.글 !== c.판정 ? ` · ${c.글}` : ""}`,
})),
@@ -217,6 +221,8 @@ export function openLeft(
lost.dataset.leftLost = String(row.단산);
box.append(lost);
}
const elems = elemChoices(row.후보.filter(isElem), (c) => line && link(no, row.차례, { [c.갈래]: c.키 }, c.이름)); // prettier-ignore
if (elems) box.append(elems);
if (row.갈래 === "%" && line) {
const base = createSelectField({
options: [{ value: "", text: L("M02_LeftBase") }].concat(