feat(M01): 로직 목록 원문번호 찾기 · 로직 목록 차례순

- 로직 목록 찾기가 원문번호도 봄(키가 번호꼴이 아니라서)
- 서버 로직 목록을 파일 머리 차례순으로

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016WRFJmmhPi4exAzHgPZHMT
This commit is contained in:
2026-09-20 02:29:38 +09:00
co-authored by Claude Sonnet 5
parent c26f15718d
commit 98fe87402f
3 changed files with 11 additions and 5 deletions
@@ -15,6 +15,7 @@ export interface ListItem {
book: string;
chapter: string;
key: string;
number: string;
name: string;
blocked: boolean;
reasons: string[];
@@ -65,7 +66,7 @@ export function buildList(onOpen: (item: ListItem) => void): ListHandle {
(!book.value || x.book === book.value) &&
(!chapter.value || x.chapter === chapter.value) &&
(!blockedOnly.checked || x.blocked) &&
(!q || x.key.toLowerCase().includes(q) || x.name.toLowerCase().includes(q)),
(!q || [x.key, x.number, x.name].some((v) => v.toLowerCase().includes(q))),
);
count.textContent = tx("List_Count", { n: shown.length });
list.replaceChildren(...shown.slice(0, 500).map(line));
@@ -90,8 +91,11 @@ export function buildList(onOpen: (item: ListItem) => void): ListHandle {
className: `m01-logic__item${item.id === active ? " is-active" : ""}`,
attrs: { type: "button", title: item.key },
children: [
el("span", { className: "m01-logic__muted", text: `${item.book} ${item.chapter}` }),
el("span", { text: item.name || item.key }),
el("span", {
className: "m01-logic__muted",
text: `${item.book} ${item.chapter} · ${item.number}`,
}),
el("span", { text: item.name || item.number || item.key }),
el("span", { className: "m01-logic__badges", children: badges }),
],
});
@@ -134,6 +138,7 @@ export function buildList(onOpen: (item: ListItem) => void): ListHandle {
book: x.book,
chapter: x.chapter,
key: x.키,
number: x.원문번호,
name: x.이름,
blocked: x.blocked,
reasons: x.reasons,