feat(B07): 평면도 관리 모달 종류 드롭다운 상세 · 장 한 블록 · 끌어 놓기 종류 순서(140-2)
- 맨 위 [종류 ▼] 상세 폼 · × 대신 폼 안 [지우기] - 평면도 장 = 종류마다 한 줄 [≡] 이름 [1][2] · 장 단추 누르면 미리보기 + 드롭다운 따라감 - 줄 끌어 놓기 = 종류 순서 · 놓는 즉시 PUT plan-kinds-order(reorder_kinds) · 번호 바뀐 장 확정 풂 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TNMXVCZXMpHpVvqmFkeChL
This commit is contained in:
@@ -261,16 +261,39 @@ def update_kind(
|
||||
"scale": chosen_scale,
|
||||
}
|
||||
atomic_write_json(path, _document(kind, order))
|
||||
_release_kinds(project_root, {kind_id})
|
||||
return kind
|
||||
|
||||
|
||||
def _release_kinds(project_root: Path, kind_ids: set[str]) -> None:
|
||||
"""그 종류들의 확정 평면도 장을 푼다 — 다시 그려야 하는 장(조각 · 축척 · 번호가 바뀜)."""
|
||||
manifest = _read_manifest(project_root)
|
||||
released = False
|
||||
for drawing_id, entry in manifest["drawings"].items():
|
||||
match = PLAN_KIND_ID.fullmatch(drawing_id)
|
||||
if match and match.group(1) == kind_id and entry.get("confirmed"):
|
||||
if match and match.group(1) in kind_ids and entry.get("confirmed"):
|
||||
entry["confirmed"] = False
|
||||
released = True
|
||||
if released:
|
||||
_write_manifest(project_root, manifest)
|
||||
return kind
|
||||
|
||||
|
||||
def reorder_kinds(project_root: Path, ids: list[str]) -> None:
|
||||
"""종류 차례를 ids 대로 다시 쓴다(140-2). 앞선 종류 묶음이 바뀐 종류 = 장 번호가 바뀜 → 확정 풂."""
|
||||
before = [kind["id"] for kind in _materialize(project_root)]
|
||||
if sorted(ids) != sorted(before):
|
||||
raise ValueError("종류 목록이 바뀌었습니다. 모달을 다시 열어 주세요.")
|
||||
folder = _kinds_dir(project_root)
|
||||
for order, kind_id in enumerate(ids):
|
||||
path = folder / f"{kind_id}.json"
|
||||
atomic_write_json(path, {**_read_json(path), "order": order})
|
||||
moved = {
|
||||
kind_id
|
||||
for index, kind_id in enumerate(ids)
|
||||
if set(ids[:index]) != set(before[: before.index(kind_id)])
|
||||
}
|
||||
if moved:
|
||||
_release_kinds(project_root, moved)
|
||||
|
||||
|
||||
def delete_kind(project_root: Path, kind_id: str) -> None:
|
||||
|
||||
Reference in New Issue
Block a user