diff --git a/src/hooks/module/useModuleSelection.js b/src/hooks/module/useModuleSelection.js index 0f609eeb..26bac8e8 100644 --- a/src/hooks/module/useModuleSelection.js +++ b/src/hooks/module/useModuleSelection.js @@ -92,7 +92,7 @@ export function useModuleSelection(props) { //해당 메뉴 이동시 배치면 삭제 const moduleSurfacesArray = canvas .getObjects() - .filter((obj) => obj.name === POLYGON_TYPE.MODULE_SETUP_SURFACE || obj.name === POLYGON_TYPE.MODULE) + .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) diff --git a/src/hooks/module/useModuleTabContents.js b/src/hooks/module/useModuleTabContents.js index 3bcc620f..a7516cf1 100644 --- a/src/hooks/module/useModuleTabContents.js +++ b/src/hooks/module/useModuleTabContents.js @@ -78,7 +78,15 @@ export function useModuleTabContents({ tabIndex, addRoof, setAddedRoofs, roofTab } const getConstructionListData = async (params) => { - if (params.trestleMkrCd && params.constMthdCd && params.roofBaseCd) { + if ( + params.trestleMkrCd && + params.constMthdCd && + params.roofBaseCd && + params.illuminationTp && + params.stdWindSpeed && + params.instHt && + params.stdSnowLd + ) { const optionsList = await getConstructionList(params) setConstructionList(optionsList.data) } @@ -151,7 +159,7 @@ export function useModuleTabContents({ tabIndex, addRoof, setAddedRoofs, roofTab useEffect(() => { if (isExistData) { setConstructionListParams({ - ...moduleSelectionInitParams, + ...moduleSelectionData.common, ...roofBaseParams, roofBaseCd: selectedRoofBase.roofBaseCd, inclCd: addRoof.pitch, diff --git a/src/hooks/object/useObjectBatch.js b/src/hooks/object/useObjectBatch.js index 311708d2..e93d4ff8 100644 --- a/src/hooks/object/useObjectBatch.js +++ b/src/hooks/object/useObjectBatch.js @@ -3,7 +3,7 @@ import { useEffect } from 'react' import { useMessage } from '@/hooks/useMessage' import { useRecoilValue } from 'recoil' import { canvasState } from '@/store/canvasAtom' -import { BATCH_TYPE, INPUT_TYPE } from '@/common/common' +import { BATCH_TYPE, INPUT_TYPE, POLYGON_TYPE } from '@/common/common' import { useEvent } from '@/hooks/useEvent' import { pointsToTurfPolygon, polygonToTurfPolygon, rectToPolygon, triangleToPolygon } from '@/util/canvas-util' import { useSwal } from '@/hooks/useSwal' @@ -955,8 +955,8 @@ export function useObjectBatch({ isHidden, setIsHidden }) { }) reGroupObjects.push(newObj) canvas.remove(obj) - if (obj.direction) { - drawDirectionArrow(obj) + if (newObj.direction) { + drawDirectionArrow(newObj) } newObj.fire('modified') }) @@ -977,6 +977,7 @@ export function useObjectBatch({ isHidden, setIsHidden }) { const moveObjectBatch = () => { const obj = canvas.getActiveObject() + const parentSurface = canvas?.getObjects().filter((item) => item.name === POLYGON_TYPE.ROOF && item.id === obj.parentId)[0] if (obj) { obj.set({ @@ -984,14 +985,42 @@ export function useObjectBatch({ isHidden, setIsHidden }) { lockMovementY: false, }) + const originObj = { ...obj } addCanvasMouseEventListener('mouse:up', (e) => { - obj.set({ - lockMovementX: true, - lockMovementY: true, - }) + //개구, 그림자 타입일 경우 폴리곤 타입 변경 + if (BATCH_TYPE.OPENING === obj.name || BATCH_TYPE.SHADOW === obj.name) { + obj.set({ + points: rectToPolygon(obj), + }) + + const turfSurface = pointsToTurfPolygon(parentSurface.points) + const turfObject = pointsToTurfPolygon(obj.points) + + if (turf.booleanWithin(turfObject, turfSurface)) { + obj.set({ + lockMovementX: true, + lockMovementY: true, + }) + + obj.setCoords() + } else { + swalFire({ + title: getMessage('batch.object.outside.roof'), + icon: 'warning', + }) + obj.set({ ...originObj, lockMovementX: true, lockMovementY: true }) + } + } else { + obj.set({ + lockMovementX: true, + lockMovementY: true, + }) + + if (obj.type === 'group') reGroupObject(obj) + obj.setCoords() + } + canvas.discardActiveObject() initEvent() - obj.setCoords() - if (obj.type === 'group') reGroupObject(obj) }) } } diff --git a/src/hooks/useContextMenu.js b/src/hooks/useContextMenu.js index 184a3aea..460676fa 100644 --- a/src/hooks/useContextMenu.js +++ b/src/hooks/useContextMenu.js @@ -464,7 +464,7 @@ export function useContextMenu() { id: 'openingMove', shortcut: ['m', 'M'], name: `${getMessage('contextmenu.move')}(M)`, - fn: () => moveObject(), + fn: () => moveObjectBatch(), }, { id: 'openingCopy', @@ -667,7 +667,7 @@ export function useContextMenu() { id: 'move', shortcut: ['m', 'M'], name: `${getMessage('contextmenu.move')}(M)`, - fn: () => moveObject(), + fn: () => moveObjectBatch(), }, { id: 'copy',