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]