- Api_Fetch: 시스템 층도 /layers/system/… (양식 목록 · 읽기 · 저장 · 지우기 · 번호 · 장부 · 새 도면 · 복사) — 옛 /api/m02/templates/* 부름 0 - 서버: GET /layers/system/structure-options(읽기 로그인 누구나 · 고쳐 씀은 옛 길 그대로) · 층 양식 목록에 쓰는곳(지우기 확인 전 막음) - 「〇〇로 복사…」 폴더 창 칸 글 「복사할 폴더」 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EYJJRCfHfdCGNhmXTjQKV7
29 lines
1.3 KiB
TypeScript
29 lines
1.3 KiB
TypeScript
/* =============================================================================
|
|
* M02_MasterTemplete_TreePanel_CopyTo.ts
|
|
* 「〇〇로 복사…」(39-6) — 붙일 층의 나무를 읽어 대상 폴더를 고름(맨 위 · 폴더) → 경로 · 취소 = null.
|
|
* 아직 만든 것이 없는 남의 층(404)은 맨 위만 — 첫 쓰기 때 서버가 소속을 보고 뼈대를 세움.
|
|
* ========================================================================== */
|
|
|
|
import { t as L } from "@ui/ui_template_locale";
|
|
import type { Layer, TreeView } from "./M02_MasterTemplete_Api_Fetch";
|
|
import { askFolder } from "./M02_MasterTemplete_TreePanel_Dialogs";
|
|
import { buildFolders, listFolders } from "./M02_MasterTemplete_TreePanel_Model";
|
|
|
|
export interface CopyTarget {
|
|
layer: Layer;
|
|
owner: string | null;
|
|
/** 메뉴 글 — `{n}` = 개수 */
|
|
label: string;
|
|
}
|
|
|
|
export async function askCopyFolder(
|
|
fetchTree: (layer: Layer, owner: string | null) => Promise<TreeView>,
|
|
to: CopyTarget,
|
|
n: number,
|
|
): Promise<string[] | null> {
|
|
const view = await fetchTree(to.layer, to.owner).catch(() => null);
|
|
const folders = view ? listFolders(buildFolders(view)) : [];
|
|
const title = to.label.replace("{n}", String(n));
|
|
return askFolder(title, folders, () => false, [], L("M02_TreeCopyFolder"));
|
|
}
|