fix(M02): 가져올 곳 「다른 사람」 — 나는 뺌(개인 탭) · 빈 사람 「비어 있음」 · 처음 = 첫 빈 아닌 사람 · 빈 사람은 빈 목록
39-5 — 사람 목록 전부(39-6 E1~E4)에 맞춤. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016PSXsvyDxjNmufteN5bqmt
This commit is contained in:
@@ -20,7 +20,7 @@ import {
|
||||
type ListKind,
|
||||
} from "./M02_MasterTemplete_ItemList";
|
||||
import { fetchCombos, type ComboSummary } from "./M02_MasterTemplete_Labor_Api";
|
||||
import { readableSources, type Source } from "./M02_MasterTemplete_Layer";
|
||||
import { ownOwner, readableSources, type Source } from "./M02_MasterTemplete_Layer";
|
||||
import { leafName } from "./M02_MasterTemplete_TreePanel_Model";
|
||||
import "./M02_MasterTemplete_TreePanel.css";
|
||||
import "./M02_MasterTemplete_ItemPick.css";
|
||||
@@ -29,6 +29,7 @@ const TEXT = {
|
||||
close: "닫기",
|
||||
person: "사람",
|
||||
noPeople: "다른 사람이 없음",
|
||||
empty: "비어 있음",
|
||||
failed: "목록을 못 받음 — {value}",
|
||||
makeNew: "새로 만들기",
|
||||
makeCopy: "복사 생성",
|
||||
@@ -58,6 +59,8 @@ const PRACTICE_COLS: Col<ComboSummary>[] = [
|
||||
];
|
||||
|
||||
const why = (error: unknown): string => (error instanceof Error ? error.message : String(error));
|
||||
/** 층 폴더가 아직 없는 사람(서버 사람 목록 `비어있음` · 39-6) */
|
||||
const empty = (o: { owner: string }): boolean => !!(o as { 비어있음?: boolean }).비어있음;
|
||||
|
||||
export interface PickerOptions {
|
||||
user: SessionUser | null;
|
||||
@@ -106,17 +109,24 @@ export function buildPicker(opt: PickerOptions): { root: HTMLElement } {
|
||||
let owner = tab.owner;
|
||||
let label = tab.label;
|
||||
if (tab.id === "people") {
|
||||
owners ??= await fetchOwners("personal", opt.company);
|
||||
// 나는 「개인」 탭 — 뺌 · 빈 사람은 「비어 있음」 · 처음 = 첫 빈 아닌 사람
|
||||
const me = ownOwner("personal", opt.user);
|
||||
owners ??= (await fetchOwners("personal", opt.company)).filter((o) => o.owner !== me);
|
||||
if (mine !== seq) return;
|
||||
if (!owners.length) return list.message(TEXT.noPeople);
|
||||
if (!people.select.value) {
|
||||
people.setOptions(
|
||||
owners.map((o) => ({ value: o.owner, text: o.name })),
|
||||
owners[0].owner,
|
||||
owners.map((o) => ({
|
||||
value: o.owner,
|
||||
text: empty(o) ? `${o.name} · ${TEXT.empty}` : o.name,
|
||||
})),
|
||||
(owners.find((o) => !empty(o)) ?? owners[0]).owner,
|
||||
);
|
||||
}
|
||||
owner = people.select.value;
|
||||
label = `${tab.label} · ${owners.find((o) => o.owner === owner)?.name ?? owner}`;
|
||||
const who = owners.find((o) => o.owner === owner);
|
||||
label = `${tab.label} · ${who?.name ?? owner}`;
|
||||
if (who && empty(who)) return list.show([], ITEM_COLS[opt.kind], () => {}); // 층 폴더 없음
|
||||
}
|
||||
const rows = await loadItems(tab.layer, owner);
|
||||
if (mine !== seq) return;
|
||||
|
||||
Reference in New Issue
Block a user