feat(est-test): 예정공정표 표시/해제 토글
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -491,7 +491,7 @@ ative-standard.js에 표준시장단가 원천(SilJukDat)과 내역 행(EstMainD
|
||||
- 검증완료: `test_est_quantity_sheets.py` 검색 시험 포함 수량 시험 22개 통과. ORCA 브라우저에서 「집수」 검색 → 항목에 집수정이 있는 「배수」만·선택 이동, 전체보기 → 3개 복귀, 샘플 복구.
|
||||
- [x] 갑지 공사금액 자동변경(원본 TFRMGABGI popupCostChange) — 「공사금액 자동변경」 체크 시 고른 원가 비목·방식을 기억해 인쇄 때마다 현재 원가 금액으로 공사금액 글을 다시 만듦(다시 열면 고른 비목·방식 그대로).
|
||||
- 검증완료: 문서 시험 3개 통과. ORCA 브라우저에서 도급액 고정 풀고 자동변경 저장 → 수량 2배 뒤 인쇄 금액 「칠천구백육십만삼천삼백이십사원」→「팔천이백칠만사천팔백구십일원」, 저장 글은 그대로, 샘플 복구.
|
||||
- [x] 선택 행 예정공정표에 표시(원본 mnuShowSchedule) — 내역서에서 고른 상세 행만 공정표에 넣음(이미 있는 행은 건너뜀).
|
||||
- [x] 선택 행 예정공정표에 표시/해제(원본 mnuShowSchedule · popMainShowChart) — 내역서에서 고른 상세 행만 공정표에 넣음(이미 있는 행은 건너뜀), 고른 행이 모두 있으면 뺌(검증: 2행 넣기 → 다시 눌러 0행).
|
||||
- 검증완료: 바인딩·공정표 시험 통과. ORCA 브라우저에서 3행 고름 → 공정 3개, 다시 눌러도 3개, 샘플 복구.
|
||||
- [x] 셀복사·셀붙여넣기(원본 ActionCellCopy·ActionCellPaste) — 마지막으로 누른 칸의 열을 고른 행들(없으면 그 행)만큼 복사(시스템 클립보드에도 글자로), 다른 칸을 누르고 붙이면 그 행부터 아래로 차례로 넣음(열 달라도 됨, 수치 칸은 수치만, 코드·결과비목 칸 거부).
|
||||
- 검증완료: 바인딩 시험 통과. ORCA 브라우저에서 자재 품명 2칸 복사 → 6번째 행 규격부터 붙여넣기(경유·휘발유), 코드 칸 거부, 샘플 복구.
|
||||
|
||||
@@ -139,7 +139,7 @@
|
||||
><button data-action="block-load-file">블럭 파일에서 붙여넣기</button
|
||||
><button data-action="cell-copy">셀복사</button
|
||||
><button data-action="cell-paste">셀붙여넣기</button
|
||||
><button data-action="schedule-mark">선택 행 예정공정표에 표시</button>
|
||||
><button data-action="schedule-mark">선택 행 예정공정표에 표시/해제</button>
|
||||
<hr />
|
||||
<button data-action="find">찾기·다음찾기(Ctrl+F)</button>
|
||||
<button data-action="multi-search">통합 검색(저장된 다른 작업)</button>
|
||||
|
||||
@@ -222,8 +222,19 @@ const EstSchedule = (() => {
|
||||
if (state.view !== "EstMainDat" || !picked.size)
|
||||
throw Error("내역서에서 공정표에 표시할 행을 고르세요.");
|
||||
const added = fromEstimate(p, EstApp.uid, picked);
|
||||
EstApp.change(() => (p.schedule ||= []).push(...added), false);
|
||||
state.notice = `${added.length}행을 예정공정표에 넣었습니다.`;
|
||||
if (added.length) {
|
||||
EstApp.change(() => (p.schedule ||= []).push(...added), false);
|
||||
state.notice = `${added.length}행을 예정공정표에 넣었습니다.`;
|
||||
} else {
|
||||
// 고른 행이 모두 이미 있으면 해제(popMainShowChart 표시/해제)
|
||||
const { sourceKey, rows } = estimateRows(p),
|
||||
keys = new Set([...rows].filter(([, r]) => picked.has(r)).map(([k]) => k));
|
||||
EstApp.change(
|
||||
() => (p.schedule = (p.schedule || []).filter((r) => !keys.has(sourceKey(r)))),
|
||||
false,
|
||||
);
|
||||
state.notice = `${keys.size}행을 예정공정표에서 뺐습니다.`;
|
||||
}
|
||||
EstApp.render();
|
||||
} else if (node.dataset.action === "schedule-import") {
|
||||
const added = fromEstimate(p, EstApp.uid);
|
||||
|
||||
Reference in New Issue
Block a user