From c4bcc3033fed0e63fb18c22ca054cfa7dee9291f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=AF=BC=EC=8B=9D?= <43837214+Minsiki@users.noreply.github.com> Date: Tue, 25 Feb 2025 16:56:17 +0900 Subject: [PATCH] =?UTF-8?q?=EB=AA=A8=EB=93=88=20=EC=9E=88=EC=9D=84?= =?UTF-8?q?=EB=95=8C=20'=EB=B0=B0=EC=B9=98=EB=A9=B4=20=EC=B4=88=EA=B8=B0?= =?UTF-8?q?=EC=84=A4=EC=A0=95',=20'=EC=A7=80=EB=B6=95=EB=8D=AE=EA=B0=9C'?= =?UTF-8?q?=20=EC=A0=91=EA=B7=BC=20=EC=A0=9C=ED=95=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/floor-plan/CanvasMenu.jsx | 84 +++++++++++------------- 1 file changed, 37 insertions(+), 47 deletions(-) diff --git a/src/components/floor-plan/CanvasMenu.jsx b/src/components/floor-plan/CanvasMenu.jsx index 54a83677..e94c1ff2 100644 --- a/src/components/floor-plan/CanvasMenu.jsx +++ b/src/components/floor-plan/CanvasMenu.jsx @@ -183,43 +183,38 @@ export default function CanvasMenu(props) { await reloadCanvasStatus(objectNo, pid) break case 'surface': - if (['module', 'estimate', 'simulation'].some((menu) => menu === selectedMenu)) { - const modules = canvas.getObjects().filter((module) => module.name === POLYGON_TYPE.MODULE) + const modules = canvas.getObjects().filter((module) => module.name === POLYGON_TYPE.MODULE) + if (modules.length > 0) { + swalFire({ + text: getMessage('module.delete.confirm'), + type: 'confirm', + confirmFn: () => { + //해당 메뉴 이동시 배치면 삭제 + initRoofs() - if (modules.length > 0) { - swalFire({ - text: getMessage('module.delete.confirm'), - type: 'confirm', - confirmFn: () => { - //해당 메뉴 이동시 배치면 삭제 - initRoofs() + const moduleSurfacesArray = canvas + .getObjects() + .filter( + (obj) => + obj.name === POLYGON_TYPE.MODULE_SETUP_SURFACE || obj.name === POLYGON_TYPE.MODULE || obj.name === POLYGON_TYPE.OBJECT_SURFACE, + ) - const moduleSurfacesArray = canvas - .getObjects() - .filter( - (obj) => - obj.name === POLYGON_TYPE.MODULE_SETUP_SURFACE || obj.name === POLYGON_TYPE.MODULE || obj.name === POLYGON_TYPE.OBJECT_SURFACE, - ) - - if (moduleSurfacesArray.length > 0) { - // 모듈면 있을 경우 지붕면 할당 다시해야함 - moduleSurfacesArray.forEach((moduleSurface) => { - canvas.remove(moduleSurface) - }) - canvas.renderAll() - onClickNav(menu) - } - }, - denyFn: () => { - return - }, - }) - return - } else { - } - } else { - setSelectedMenu(menu.type) + if (moduleSurfacesArray.length > 0) { + // 모듈면 있을 경우 지붕면 할당 다시해야함 + moduleSurfacesArray.forEach((moduleSurface) => { + canvas.remove(moduleSurface) + }) + canvas.renderAll() + onClickNav(menu) + } + }, + denyFn: () => { + return + }, + }) + return } + setSelectedMenu(menu.type) await reloadCanvasStatus(objectNo, pid) break case 'module': @@ -311,18 +306,6 @@ export default function CanvasMenu(props) { if (selectedMenu === 'placement') { onClickPlacementInitialMenu() } - if (selectedMenu === 'surface') { - const moduleSurfacesArray = canvas.getObjects().filter((obj) => obj.name === POLYGON_TYPE.MODULE_SETUP_SURFACE) - if (moduleSurfacesArray.length > 0) { - initRoofs() - moduleSurfacesArray.forEach((moduleSurface) => { - canvas.remove(...moduleSurface.modules) - canvas.remove(moduleSurface) - moduleSurface.modules = [] - }) - canvas.renderAll() - } - } }, [selectedMenu]) // 저장버튼(btn08) 클릭 시 호출되는 함수 @@ -425,10 +408,16 @@ export default function CanvasMenu(props) { const checkMenuState = (menu) => { return ( (['2', '3'].includes(canvasSetting?.roofSizeSet) && menu.type === 'outline') || - (selectedMenu === 'module' && ['drawing', 'placement'].includes(menu.type)) + (selectedMenu === 'module' && ['drawing', 'placement'].includes(menu.type)) || + (isExistModule() && ['placement', 'outline'].some((num) => num === menu.type)) ) } + const isExistModule = () => { + const modules = canvas?.getObjects().filter((module) => module.name === POLYGON_TYPE.MODULE) ?? [] + return modules.length > 0 + } + /** * 모듈, 회로 구성 이전 메뉴에서 메뉴 클릭으로 넘어올때 * 지붕면 할당이 끝난 지붕이 하나라도 있는지 체크 @@ -546,6 +535,7 @@ export default function CanvasMenu(props) { onClick={async () => { if (['2', '3'].includes(canvasSetting?.roofSizeSet) && menu.type === 'outline') return if (selectedMenu === 'module' && ['drawing', 'placement'].includes(menu.type)) return + if (isExistModule() && ['placement', 'outline'].some((num) => num === menu.type)) return await onClickNav(menu) }} >