import WithDraggable from '@/components/common/draggable/WithDraggable' import { useRecoilValue } from 'recoil' import { contextPopupPositionState } from '@/store/popupAtom' import { usePopup } from '@/hooks/usePopup' import { useMessage } from '@/hooks/useMessage' import { useEffect, useState } from 'react' import { polygonToTurfPolygon } from '@/util/canvas-util' import { deepCopyArray } from '@/util/common-utils' import { canvasState } from '@/store/canvasAtom' import * as turf from '@turf/turf' import { POLYGON_TYPE } from '@/common/common' import { useModule } from '@/hooks/module/useModule' import { useSwal } from '@/hooks/useSwal' export const PANEL_EDIT_TYPE = { MOVE: 'move', MOVE_ALL: 'moveAll', COPY: 'copy', COPY_ALL: 'copyAll', COLUMN_MOVE: 'columnMove', COLUMN_COPY: 'columnCopy', ROW_MOVE: 'rowMove', ROW_COPY: 'rowCopy', } export default function PanelEdit(props) { const contextPopupPosition = useRecoilValue(contextPopupPositionState) const { id, pos = contextPopupPosition, type = PANEL_EDIT_TYPE.MOVE, apply } = props const { closePopup } = usePopup() const [length, setLength] = useState(0) const [direction, setDirection] = useState('up') const { getMessage } = useMessage() const canvas = useRecoilValue(canvasState) const { swalFire } = useSwal() const { moduleMove, moduleCopy, moduleMultiMove, moduleMultiCopy, moduleMoveAll, moduleCopyAll } = useModule() useEffect(() => { if (!canvas) { const isSetupModules = canvas.getObjects().filter((obj) => obj.name === 'module') // selectedObj에 없는 객체만 필터링 isSetupModules.forEach((obj) => obj.set({ lockMovementX: false, lockMovementY: false })) } //팝업 닫을때 선택 해제 return () => { canvas?.discardActiveObject() //선택해제 } }, []) //모듈 이동 적용 const handleApply = () => { if (length <= 0) { swalFire({ title: getMessage('common.message.please.input.over', [1]), type: 'alert', icon: 'error', }) return } const completeSurfaces = canvas.getObjects().filter((obj) => obj.name === POLYGON_TYPE.MODULE_SETUP_SURFACE && obj.isComplete) if (completeSurfaces.length > 0) { swalFire({ title: getMessage('modal.module.can.not.edit'), type: 'alert', icon: 'error', }) return } switch (type) { case PANEL_EDIT_TYPE.MOVE: moduleMove(length, direction) break case PANEL_EDIT_TYPE.MOVE_ALL: moduleMoveAll(length, direction, props.arrayData) break case PANEL_EDIT_TYPE.COPY: moduleCopy(length, direction) break case PANEL_EDIT_TYPE.COPY_ALL: moduleCopyAll(length, direction, props.arrayData) break case PANEL_EDIT_TYPE.COLUMN_MOVE: moduleMultiMove('column', length, direction) break case PANEL_EDIT_TYPE.COLUMN_COPY: moduleMultiCopy('column', length, direction) break case PANEL_EDIT_TYPE.ROW_MOVE: moduleMultiMove('row', length, direction) break case PANEL_EDIT_TYPE.ROW_COPY: moduleMultiCopy('row', length, direction) break } // closePopup(id) } return ( closePopup(id)} />
{getMessage( [PANEL_EDIT_TYPE.MOVE, PANEL_EDIT_TYPE.MOVE_ALL, PANEL_EDIT_TYPE.COLUMN_MOVE].includes(type) ? 'modal.move.setting.info' : 'modal.copy.setting.info', )}
{getMessage('margin')}
setLength(e.target.value)} />
mm
) }