diff --git a/src/components/common/context-menu/QContextMenu.jsx b/src/components/common/context-menu/QContextMenu.jsx
index 9654c514..bb721810 100644
--- a/src/components/common/context-menu/QContextMenu.jsx
+++ b/src/components/common/context-menu/QContextMenu.jsx
@@ -1,5 +1,6 @@
'use client'
-import { Children, useEffect, useState } from 'react'
+import { useEffect, useState } from 'react'
+import '@/styles/contents.scss'
export default function QContextMenu(props) {
const { contextRef, canvasProps } = props
@@ -7,7 +8,7 @@ export default function QContextMenu(props) {
// const children = useRecoilValue(modalContent)
const [contextMenu, setContextMenu] = useState({ visible: false, x: 0, y: 0 })
- const activeObject = canvasProps.getActiveObject() //액티브된 객체를 가져옴
+ const activeObject = canvasProps?.getActiveObject() //액티브된 객체를 가져옴
let contextType = ''
@@ -26,7 +27,8 @@ export default function QContextMenu(props) {
const handleContextMenu = (e) => {
e.preventDefault() //기존 contextmenu 막고
setContextMenu({ visible: true, x: e.pageX, y: e.pageY })
- canvasProps.upperCanvasEl.removeEventListener('contextmenu', handleContextMenu) //한번 노출 후 이벤트 삭제
+ console.log(111, canvasProps)
+ canvasProps?.upperCanvasEl.removeEventListener('contextmenu', handleContextMenu) //한번 노출 후 이벤트 삭제
}
const handleClick = (e) => {
@@ -41,7 +43,7 @@ export default function QContextMenu(props) {
}
}
- canvasProps.upperCanvasEl.addEventListener('contextmenu', handleContextMenu)
+ canvasProps?.upperCanvasEl.addEventListener('contextmenu', handleContextMenu)
document.addEventListener('click', handleClick)
document.addEventListener('click', handleOutsideClick)
@@ -57,7 +59,7 @@ export default function QContextMenu(props) {
lockMovementY: false, // Y 축 이동 잠금
})
- canvasProps.on('object:modified', function (e) {
+ canvasProps?.on('object:modified', function (e) {
activeObject.set({
lockMovementX: true, // X 축 이동 잠금
lockMovementY: true, // Y 축 이동 잠금
@@ -89,19 +91,19 @@ export default function QContextMenu(props) {
return (
<>
{contextMenu.visible && (
-
-
- - handleObjectMove()}>
- 이동
-
- - handleObjectDelete()}>
- 삭제
-
- - handleObjectCopy()}>
- 복사
-
- {props.children}
-
+
+ {/*
*/}
+ {/*- handleObjectMove()}>*/}
+ {/* 이동*/}
+ {/*
*/}
+ {/*- handleObjectDelete()}>*/}
+ {/* 삭제*/}
+ {/*
*/}
+ {/*- handleObjectCopy()}>*/}
+ {/* 복사*/}
+ {/*
*/}
+ {/*
*/}
+ {props.children}
)}
>
diff --git a/src/components/floor-plan/CanvasFrame.jsx b/src/components/floor-plan/CanvasFrame.jsx
index 9c8c9d38..3b823460 100644
--- a/src/components/floor-plan/CanvasFrame.jsx
+++ b/src/components/floor-plan/CanvasFrame.jsx
@@ -1,13 +1,19 @@
'use client'
-import { useEffect, useRef } from 'react'
+import { useEffect, useRef, useState } from 'react'
import { useCanvas } from '@/hooks/useCanvas'
import { useEvent } from '@/hooks/useEvent'
+import QContextMenu from '@/components/common/context-menu/QContextMenu'
+import { useRecoilValue } from 'recoil'
+import { currentMenuState } from '@/store/canvasAtom'
+import { MENU } from '@/common/common'
export default function CanvasFrame({ plan }) {
const canvasRef = useRef(null)
const { canvas } = useCanvas('canvas')
+ const currentMenu = useRecoilValue(currentMenuState)
+ const [contextMenu, setContextMenu] = useState([[]])
useEvent()
const loadCanvas = () => {
@@ -25,9 +31,142 @@ export default function CanvasFrame({ plan }) {
loadCanvas()
}, [plan])
+ useEffect(() => {
+ switch (currentMenu) {
+ case MENU.PLAN_DRAWING:
+ setContextMenu([
+ [
+ {
+ name: '그리드 이동',
+ },
+ {
+ name: '그리드 복사',
+ },
+ {
+ name: '그리드 색 변경',
+ },
+ {
+ name: '삭제',
+ },
+ {
+ name: '전체 삭제',
+ },
+ ],
+ ])
+ break
+ case MENU.ROOF_COVERING.EXTERIOR_WALL_LINE:
+ case MENU.ROOF_COVERING.ROOF_SHAPE_SETTINGS:
+ case MENU.ROOF_COVERING.ROOF_SHAPE_PASSIVITY_SETTINGS:
+ case MENU.ROOF_COVERING.ROOF_SHAPE_EDITING:
+ case MENU.ROOF_COVERING.HELP_LINE_DRAWING:
+ case MENU.ROOF_COVERING.EAVES_KERAVA_EDIT:
+ case MENU.ROOF_COVERING.MOVEMENT_SHAPE_UPDOWN:
+ case MENU.ROOF_COVERING.OUTLINE_EDIT_OFFSET:
+ case MENU.ROOF_COVERING.ROOF_SHAPE_ALLOC:
+ case MENU.ROOF_COVERING.DEFAULT:
+ console.log('지붕덮개')
+ setContextMenu([
+ [
+ {
+ name: '지붕재 배치',
+ },
+ {
+ name: '지붕재 삭제',
+ },
+ {
+ name: '지붕재 전체 삭제',
+ },
+ {
+ name: '선택・이동',
+ },
+ {
+ name: '외벽선 삭제',
+ },
+ ],
+ [
+ {
+ name: '사이즈 변경',
+ },
+ {
+ name: '보조선 이동(M)',
+ },
+ {
+ name: '보조선 복사(C)',
+ },
+ {
+ name: '보조선 삭제(D)',
+ },
+ {
+ name: '보조선 수직이등분선',
+ },
+ {
+ name: '보조선 절삭',
+ },
+ {
+ name: '보조선 전체 삭제',
+ },
+ ],
+ ])
+ break
+ case MENU.BATCH_CANVAS.SLOPE_SETTING:
+ case MENU.BATCH_CANVAS.BATCH_DRAWING:
+ case MENU.BATCH_CANVAS.SURFACE_SHAPE_BATCH:
+ case MENU.BATCH_CANVAS.OBJECT_BATCH:
+ case MENU.BATCH_CANVAS.ALL_REMOVE:
+ case MENU.BATCH_CANVAS.DEFAULT:
+ console.log('배치면')
+ setContextMenu([
+ [
+ {
+ name: '사이즈 변경',
+ },
+ {
+ name: '삭제(D)',
+ },
+ {
+ name: '이동(M)',
+ },
+ {
+ name: '복사(C)',
+ },
+ ],
+ [
+ {
+ name: '지붕재 변경',
+ },
+ {
+ name: '각 변 속성 변경',
+ },
+ {
+ name: '흐름 방향 변경',
+ },
+ ],
+ ])
+ break
+ default:
+ console.log('default')
+ setContextMenu([])
+ break
+ }
+ }, [currentMenu])
+
+ useEffect(() => {
+ console.log('currentMenu', currentMenu)
+ console.log('contextMenu', contextMenu)
+ }, [contextMenu])
+
return (
+
+ {contextMenu.map((menus, index) => (
+
+ {menus.map((menu) => (
+ - {menu.name}
+ ))}
+
+ ))}
+
)
}
diff --git a/src/components/floor-plan/modal/roofShape/RoofShapePassivitySetting.jsx b/src/components/floor-plan/modal/roofShape/RoofShapePassivitySetting.jsx
index ccab2321..ebdc6bb9 100644
--- a/src/components/floor-plan/modal/roofShape/RoofShapePassivitySetting.jsx
+++ b/src/components/floor-plan/modal/roofShape/RoofShapePassivitySetting.jsx
@@ -25,7 +25,7 @@ export default function RoofShapePassivitySetting({ setShowRoofShapePassivitySet
{buttons.map((button) => (
-