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) }} >