From 6401195debddd71dc7cb89f9da47db08c2e68094 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: Fri, 21 Feb 2025 16:19:52 +0900
Subject: [PATCH 1/3] =?UTF-8?q?-=20=EC=9C=A1=EC=A7=80=EB=B6=95=EC=9D=BC=20?=
=?UTF-8?q?=EB=95=8C=20=EC=84=A0=EC=86=8D=EC=84=B1=20=ED=8C=9D=EC=97=85=20?=
=?UTF-8?q?=EC=95=88=EB=9C=A8=EA=B2=8C=20=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/hooks/useContextMenu.js | 72 +++++++++----------------------------
1 file changed, 16 insertions(+), 56 deletions(-)
diff --git a/src/hooks/useContextMenu.js b/src/hooks/useContextMenu.js
index fcac9947..842cad28 100644
--- a/src/hooks/useContextMenu.js
+++ b/src/hooks/useContextMenu.js
@@ -1,5 +1,5 @@
import { useRecoilState, useRecoilValue, useSetRecoilState } from 'recoil'
-import { canvasState, currentMenuState, currentObjectState } from '@/store/canvasAtom'
+import { canvasSettingState, canvasState, currentMenuState, currentObjectState } from '@/store/canvasAtom'
import { useEffect, useState } from 'react'
import { MENU, POLYGON_TYPE } from '@/common/common'
import AuxiliarySize from '@/components/floor-plan/modal/auxiliary/AuxiliarySize'
@@ -41,9 +41,11 @@ import { useGrid } from './common/useGrid'
import { useAdsorptionPoint } from './useAdsorptionPoint'
import { useRoofFn } from '@/hooks/common/useRoofFn'
import { MODULE_ALIGN_TYPE, useModule } from './module/useModule'
+import PlacementSurfaceLineProperty from '@/components/floor-plan/modal/placementShape/PlacementSurfaceLineProperty'
export function useContextMenu() {
const canvas = useRecoilValue(canvasState)
+ const canvasSetting = useRecoilValue(canvasSettingState)
const currentMenu = useRecoilValue(currentMenuState) // 현재 메뉴
const setContextPopupPosition = useSetRecoilState(contextPopupPositionState) // 현재 메뉴
const [contextMenu, setContextMenu] = useRecoilState(contextMenuListState) // 메뉴.object 별 context menu
@@ -263,54 +265,6 @@ export function useContextMenu() {
],
])
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:
- setContextMenu([
- [
- {
- id: 'sizeEdit',
- name: getMessage('contextmenu.size.edit'),
- component: ,
- },
- {
- id: 'remove',
- shortcut: ['d', 'D'],
- name: `${getMessage('contextmenu.remove')}(D)`,
- },
- {
- id: 'move',
- shortcut: ['m', 'M'],
- name: `${getMessage('contextmenu.move')}(M)`,
- },
- {
- id: 'copy',
- shortcut: ['c', 'C'],
- name: `${getMessage('contextmenu.copy')}(C)`,
- },
- ],
- [
- {
- id: 'roofMaterialEdit',
- name: getMessage('contextmenu.roof.material.edit'),
- component: ,
- },
- {
- id: 'linePropertyEdit',
- name: getMessage('contextmenu.line.property.edit'),
- component: ,
- },
- {
- id: 'flowDirectionEdit',
- name: getMessage('contextmenu.flow.direction.edit'),
- component: ,
- },
- ],
- ])
- break
default:
setContextMenu([])
break
@@ -432,7 +386,14 @@ export function useContextMenu() {
{
id: 'linePropertyEdit',
name: getMessage('contextmenu.line.property.edit'),
- component: ,
+ fn: () => {
+ if (+canvasSetting.roofSizeSet === 3) {
+ swalFire({ text: getMessage('contextmenu.line.property.edit.roof.size.3') })
+ } else {
+ addPopup(popupId, 1, )
+ }
+ },
+ // component: ,
},
{
id: 'flowDirectionEdit',
@@ -740,24 +701,23 @@ export function useContextMenu() {
])
break
case 'moduleSetupSurface':
- case 'roof':
setContextMenu([
[
{
id: 'moduleVerticalCenterAlign',
name: getMessage('contextmenu.module.vertical.align'),
- fn: () => alignModule(MODULE_ALIGN_TYPE.VERTICAL, currentObject.arrayData),
+ fn: () => alignModule(MODULE_ALIGN_TYPE.VERTICAL, currentObject.arrayData ?? [currentObject]),
},
{
id: 'moduleHorizonCenterAlign',
name: getMessage('contextmenu.module.horizon.align'),
- fn: () => alignModule(MODULE_ALIGN_TYPE.HORIZONTAL, currentObject.arrayData),
+ fn: () => alignModule(MODULE_ALIGN_TYPE.HORIZONTAL, currentObject.arrayData ?? [currentObject]),
},
{
id: 'moduleRemove',
name: getMessage('contextmenu.module.remove'),
fn: () => {
- moduleRoofRemove(currentObject.arrayData)
+ moduleRoofRemove(currentObject.arrayData ?? [currentObject])
// const moduleSetupSurface = canvas.getObjects().filter((obj) => canvas.getActiveObjects()[0].id === obj.id)[0]
// const modules = canvas.getObjects().filter((obj) => obj.surfaceId === moduleSetupSurface.id && obj.name === POLYGON_TYPE.MODULE)
@@ -768,12 +728,12 @@ export function useContextMenu() {
{
id: 'moduleMove',
name: getMessage('contextmenu.module.move'),
- component: ,
+ component: ,
},
{
id: 'moduleCopy',
name: getMessage('contextmenu.module.copy'),
- component: ,
+ component: ,
},
// {
// id: 'moduleCircuitNumberEdit',
From 28640a700071e4d72810edaed18a80eb146797ef 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: Fri, 21 Feb 2025 16:20:33 +0900
Subject: [PATCH 2/3] =?UTF-8?q?-=20api=20=EB=8D=B0=EC=9D=B4=ED=84=B0=20?=
=?UTF-8?q?=EC=A4=91=20circuit=20=EC=A0=95=EB=B3=B4=20=EC=97=86=EB=8A=94?=
=?UTF-8?q?=20module=20=EC=84=A4=EC=A0=95=EC=95=88=ED=95=98=EA=B2=8C=20?=
=?UTF-8?q?=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../modal/circuitTrestle/step/StepUp.jsx | 54 ++++++++++---------
1 file changed, 28 insertions(+), 26 deletions(-)
diff --git a/src/components/floor-plan/modal/circuitTrestle/step/StepUp.jsx b/src/components/floor-plan/modal/circuitTrestle/step/StepUp.jsx
index f3536bc9..8b519e86 100644
--- a/src/components/floor-plan/modal/circuitTrestle/step/StepUp.jsx
+++ b/src/components/floor-plan/modal/circuitTrestle/step/StepUp.jsx
@@ -119,30 +119,32 @@ export default function StepUp(props) {
// 새로운 모듈 회로 정보 추가
roofSurface.moduleList.forEach((module) => {
- const targetModule = canvas.getObjects().filter((obj) => obj.id === module.uniqueId)[0]
- const moduleCircuitText = new fabric.Text(module.circuit, {
- left: targetModule.left + targetModule.width / 2,
- top: targetModule.top + targetModule.height / 2,
- fontFamily: circuitNumberText.fontFamily.value,
- fontWeight: circuitNumberText.fontWeight.value.toLowerCase().includes('bold') ? 'bold' : 'normal',
- fontStyle: circuitNumberText.fontWeight.value.toLowerCase().includes('italic') ? 'italic' : 'normal',
- fontSize: circuitNumberText.fontSize.value,
- fill: circuitNumberText.fontColor.value,
- width: targetModule.width,
- height: targetModule.height,
- textAlign: 'center',
- originX: 'center',
- originY: 'center',
- name: 'circuitNumber',
- parentId: targetModule.id,
- circuitInfo: module.pcsItemId,
- selectable: false,
- visible: isDisplayCircuitNumber,
- })
- targetModule.circuit = moduleCircuitText
- targetModule.pcsItemId = module.pcsItemId
- targetModule.circuitNumber = module.circuit
- canvas.add(moduleCircuitText)
+ const targetModule = canvas.getObjects().find((obj) => obj.id === module.uniqueId)
+ if (targetModule && module.circuit !== '' && module.circuit) {
+ const moduleCircuitText = new fabric.Text(module.circuit, {
+ left: targetModule.left + targetModule.width / 2,
+ top: targetModule.top + targetModule.height / 2,
+ fontFamily: circuitNumberText.fontFamily.value,
+ fontWeight: circuitNumberText.fontWeight.value.toLowerCase().includes('bold') ? 'bold' : 'normal',
+ fontStyle: circuitNumberText.fontWeight.value.toLowerCase().includes('italic') ? 'italic' : 'normal',
+ fontSize: circuitNumberText.fontSize.value,
+ fill: circuitNumberText.fontColor.value,
+ width: targetModule.width,
+ height: targetModule.height,
+ textAlign: 'center',
+ originX: 'center',
+ originY: 'center',
+ name: 'circuitNumber',
+ parentId: targetModule.id,
+ circuitInfo: module.pcsItemId,
+ selectable: false,
+ visible: isDisplayCircuitNumber,
+ })
+ targetModule.circuit = moduleCircuitText
+ targetModule.pcsItemId = module.pcsItemId
+ targetModule.circuitNumber = module.circuit
+ canvas.add(moduleCircuitText)
+ }
})
})
}
@@ -441,8 +443,8 @@ export default function StepUp(props) {
canvas.renderAll()
roofSurface.moduleList.forEach((module) => {
- const targetModule = canvas.getObjects().filter((obj) => obj.id === module.uniqueId)[0]
- if (module.circuit !== '' && module.circuit) {
+ const targetModule = canvas.getObjects().find((obj) => obj.id === module.uniqueId)
+ if (targetModule && module.circuit !== '' && module.circuit !== null) {
const moduleCircuitText = new fabric.Text(module.circuit, {
left: targetModule.left + targetModule.width / 2,
top: targetModule.top + targetModule.height / 2,
From 5040f2171cb766b037d28065ec1d1a9978a2dee2 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: Fri, 21 Feb 2025 16:20:57 +0900
Subject: [PATCH 3/3] =?UTF-8?q?-=20module=20list=20=ED=83=90=EC=83=89=20?=
=?UTF-8?q?=EB=B0=A9=EC=8B=9D=20=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/hooks/module/useModule.js | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/src/hooks/module/useModule.js b/src/hooks/module/useModule.js
index c7f13dc0..0c884608 100644
--- a/src/hooks/module/useModule.js
+++ b/src/hooks/module/useModule.js
@@ -822,10 +822,7 @@ export function useModule() {
const alignModule = (type, surfaceArray) => {
surfaceArray.forEach((surface) => {
- const modules = canvas
- .getObjects()
- .filter((module) => module.name === POLYGON_TYPE.MODULE)
- .filter((module) => module.surfaceId === surface.id)
+ const modules = surface.modules
const objects = getObjects()
let [top, bottom, left, right] = [0, 0, 0, 0]