feat(copy): 속성 복사는 고른 대상 교각에만 적용

- 대상 교각을 원본 아래(2번)로 올리고, 기본 0기로 시작
- 같은 형식 모두 선택 / 선택 해제 버튼 추가, 모델 없는 교각은 고를 수 없음
- 적용 버튼에 대상 이름을 표시 ("P1, P5 2기에만 적용"), 미리보기는 고른 교각만 표시
- 후보·선택 규칙을 core/copy-targets.ts로 분리하고 테스트 6건 추가

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
This commit is contained in:
ypshimandClaude Haiku 5.5 committed 2026-10-27 16:25:02 +09:00
1 parent d8b383423c
commit ccc1f494bc
5 files changed
+124 -26

No files matched your search

+14 -9
View File
@@ -80,7 +80,17 @@
<p class="muted small">현재 입력값 기준 (미반영 변경 포함)</p>
</section>
<section>
<h3>2 · 복사할 항목</h3>
<h3>2 · 대상 교각</h3>
<div class="cp-tools">
<label class="chk"><input id="cp-same-type" type="checkbox" checked />원본과 같은 형식만</label>
<button id="cp-select-same" class="btn-o small" type="button">같은 형식 모두 선택</button>
<button id="cp-clear" class="btn-o small" type="button">선택 해제</button>
</div>
<div id="cp-targets" class="cp-chips"></div>
<p class="muted small">고른 교각에만 적용합니다. 고르지 않은 교각은 바뀌지 않습니다. 모델이 없는 교각은 고를 수 없습니다.</p>
</section>
<section>
<h3>3 · 복사할 항목</h3>
<ul class="cp-items">
<li><span class="cp-group">코핑</span>
<label class="chk"><input type="checkbox" data-item="coping-width" />폭 B</label>
@@ -100,27 +110,22 @@
</ul>
<p class="muted small">복사하지 않는 값: 좌표 · IP · 받침 EL · 코핑 상면 EL · 기초 하단 EL · 지반고 · 기둥 높이 · 말뚝 선단 EL · 계단 구간</p>
</section>
<section>
<h3>3 · 대상 교각</h3>
<label class="chk"><input id="cp-same-type" type="checkbox" checked />원본과 같은 형식만 보기</label>
<ul id="cp-targets" class="cp-targets"></ul>
</section>
</div>
<div class="dlg-col">
<section>
<h3>4 · 적용 미리보기</h3>
<h3>4 · 적용 미리보기 (고른 교각만)</h3>
<table id="cp-preview" class="grid-table">
<thead><tr><th>대상</th><th>형식</th><th>바뀌는 값</th><th>건너뜀</th><th>내용</th></tr></thead>
<tbody></tbody>
</table>
<label class="chk"><input id="cp-regen" type="checkbox" checked />적용 후 대상 교각 형상까지 바로 다시 생성</label>
<label class="chk"><input id="cp-regen" type="checkbox" checked />적용 후 고른 교각만 바로 다시 생성</label>
<p class="muted small">적용하면 대상 교각마다 "변경 n건"이 표시되고, 입력 수정 카드에서 항목별로 되돌릴 수 있습니다.</p>
</section>
</div>
</div>
<footer class="copy-foot">
<span id="cp-summary" class="muted"></span>
<button id="cp-apply" class="btn-p" type="button" disabled>대상 0기에 적용</button>
<button id="cp-apply" class="btn-p" type="button" disabled>대상을 고르세요</button>
</footer>
</section>
</section>