From f2a083f0226209f7726ee56a335e985fe72e7774 Mon Sep 17 00:00:00 2001 From: "hyojun.choi" Date: Fri, 21 Mar 2025 10:23:46 +0900 Subject: [PATCH] =?UTF-8?q?=EC=A7=80=EB=B6=95=EC=9E=AC=20=ED=95=A0?= =?UTF-8?q?=EB=8B=B9=20=EC=88=98=EC=A0=95=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../roofcover/useRoofAllocationSetting.js | 27 +++++++++++++++++++ src/locales/ja.json | 3 ++- src/locales/ko.json | 3 ++- 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/src/hooks/roofcover/useRoofAllocationSetting.js b/src/hooks/roofcover/useRoofAllocationSetting.js index fb7d2114..cfc73b81 100644 --- a/src/hooks/roofcover/useRoofAllocationSetting.js +++ b/src/hooks/roofcover/useRoofAllocationSetting.js @@ -261,6 +261,15 @@ export function useRoofAllocationSetting(id) { * 지붕재 삭제 */ const onDeleteRoofMaterial = (idx) => { + const roofs = canvas.getObjects().filter((obj) => obj.name === POLYGON_TYPE.ROOF) + + for (let i = 0; i < roofs.length; i++) { + if (roofs[i].roofMaterial.index === idx) { + swalFire({ type: 'alert', icon: 'error', text: getMessage('roof.material.can.not.delete') }) + return + } + } + const isSelected = currentRoofList[idx].selected const newRoofList = JSON.parse(JSON.stringify(currentRoofList)).filter((_, index) => index !== idx) if (isSelected) { @@ -300,6 +309,7 @@ export function useRoofAllocationSetting(id) { }) setRoofList(newRoofList) + setRoofMaterials(newRoofList) const selectedRoofMaterial = newRoofList.find((roof) => roof.selected) setSurfaceShapePattern(currentObject, roofDisplay.column, false, selectedRoofMaterial, true) drawDirectionArrow(currentObject) @@ -308,6 +318,21 @@ export function useRoofAllocationSetting(id) { basicSettingSave() } + /** + * 기존 세팅된 지붕에 지붕재 내용을 바뀐 내용으로 수정 + * @param newRoofMaterials + */ + const setRoofMaterials = (newRoofMaterials) => { + const roofs = canvas.getObjects().filter((obj) => obj.name === POLYGON_TYPE.ROOF) + newRoofMaterials.forEach((roofMaterial) => { + const index = roofMaterial.index + const tempRoofs = roofs.filter((roof) => roof.roofMaterial?.index === index) + tempRoofs.forEach((roof) => { + setSurfaceShapePattern(roof, roofDisplay.column, false, roofMaterial) + }) + }) + } + /** * 지붕면 할당 */ @@ -411,6 +436,8 @@ export function useRoofAllocationSetting(id) { drawDirectionArrow(roof) }) + setRoofMaterials(newRoofList) + /** 외곽선 삭제 */ const removeTargets = canvas.getObjects().filter((obj) => obj.name === 'outerLinePoint' || obj.name === 'outerLine') removeTargets.forEach((obj) => { diff --git a/src/locales/ja.json b/src/locales/ja.json index 356e6199..8aede254 100644 --- a/src/locales/ja.json +++ b/src/locales/ja.json @@ -1038,5 +1038,6 @@ "want.to.complete.auxiliary.creation": "補助線の作成を完了しますか?", "modal.placement.initial.setting.plan.drawing.only.number": "(※数字は[半角]入力のみ可能です。)", "wall.line.not.found": "外壁がありません", - "roof.line.not.found": "屋根形状がありません" + "roof.line.not.found": "屋根形状がありません", + "roof.material.can.not.delete" : "割り当てられた配置面があります。" } diff --git a/src/locales/ko.json b/src/locales/ko.json index 9a3bc8f0..27ba2da2 100644 --- a/src/locales/ko.json +++ b/src/locales/ko.json @@ -1038,5 +1038,6 @@ "want.to.complete.auxiliary.creation": "보조선 작성을 완료하시겠습니까?", "modal.placement.initial.setting.plan.drawing.only.number": "(※ 숫자는 [반각]입력만 가능합니다.)", "wall.line.not.found": "외벽선이 없습니다.", - "roof.line.not.found": "지붕형상이 없습니다." + "roof.line.not.found": "지붕형상이 없습니다.", + "roof.material.can.not.delete" : "할당된 배치면이 있습니다." }