From c499653e798f0d02fda912c2e8273306cf4c282d Mon Sep 17 00:00:00 2001 From: "hyojun.choi" Date: Wed, 7 Jan 2026 16:59:30 +0900 Subject: [PATCH] =?UTF-8?q?=EB=B6=81=EB=A9=B4=20=EB=AA=A8=EB=93=88=20?= =?UTF-8?q?=EC=84=A4=EC=B9=98=20=EC=97=AC=EB=B6=80=20=EC=B6=94=EA=B0=80,?= =?UTF-8?q?=20=EB=B6=81=EB=A9=B4=20=EB=AA=A8=EB=93=88=20=EC=84=A4=EC=B9=98?= =?UTF-8?q?=20=EC=8B=9C=20=EB=8F=99=EB=A9=B4=20=EC=A0=9C=EC=99=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/common/common.js | 1 + .../step/type/PassivityCircuitAllocation.jsx | 2 ++ src/hooks/useCirCuitTrestle.js | 25 ++++++++++++++++--- 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/src/common/common.js b/src/common/common.js index fd961063..6ecc08fc 100644 --- a/src/common/common.js +++ b/src/common/common.js @@ -224,6 +224,7 @@ export const SAVE_KEY = [ 'viewportTransform', 'outerLineFix', 'adjustRoofLines', + 'northModuleYn', ] export const OBJECT_PROTOTYPE = [fabric.Line.prototype, fabric.Polygon.prototype, fabric.Triangle.prototype, fabric.Group.prototype] diff --git a/src/components/floor-plan/modal/circuitTrestle/step/type/PassivityCircuitAllocation.jsx b/src/components/floor-plan/modal/circuitTrestle/step/type/PassivityCircuitAllocation.jsx index 720845f5..a25a1a37 100644 --- a/src/components/floor-plan/modal/circuitTrestle/step/type/PassivityCircuitAllocation.jsx +++ b/src/components/floor-plan/modal/circuitTrestle/step/type/PassivityCircuitAllocation.jsx @@ -234,6 +234,7 @@ export default function PassivityCircuitAllocation(props) { setSelectedPcs(tempSelectedPcs) canvas.add(moduleCircuitText) }) + const roofSurfaceList = canvas .getObjects() @@ -244,6 +245,7 @@ export default function PassivityCircuitAllocation(props) { roofSurface: surface.direction, roofSurfaceIncl: +canvas.getObjects().filter((obj) => obj.id === surface.parentId)[0].pitch, roofSurfaceNorthYn: surface.direction === 'north' ? 'Y' : 'N', + roofSurfaceNorthModuleYn: surface.northModuleYn, moduleList: surface.modules.map((module) => { return { itemId: module.moduleInfo.itemId, diff --git a/src/hooks/useCirCuitTrestle.js b/src/hooks/useCirCuitTrestle.js index 0c332ec8..5bfab3ce 100644 --- a/src/hooks/useCirCuitTrestle.js +++ b/src/hooks/useCirCuitTrestle.js @@ -99,6 +99,12 @@ export function useCircuitTrestle(executeEffect = false) { // 지붕면 목록 const getRoofSurfaceList = () => { const roofSurfaceList = canvas.getObjects().filter((obj) => obj.name === POLYGON_TYPE.MODULE_SETUP_SURFACE) + + roofSurfaceList.forEach((roofSurface) => { + const modules = canvas.getObjects().filter((obj) => obj.name === POLYGON_TYPE.MODULE && obj.surfaceId === roofSurface.id) + roofSurface.northModuleYn = modules.every((module) => module.moduleInfo.northModuleYn === 'Y') ? 'Y' : 'N' + }) + roofSurfaceList.sort((a, b) => a.left - b.left || b.top - a.top) const result = roofSurfaceList @@ -119,6 +125,7 @@ export function useCircuitTrestle(executeEffect = false) { } }), roofSurfaceNorthYn: obj.direction === 'north' ? 'Y' : 'N', + roofSurfaceNorthModuleYn: obj.northModuleYn, } }) .filter((surface) => surface.moduleList.length > 0) @@ -139,11 +146,14 @@ export function useCircuitTrestle(executeEffect = false) { let remaining = [...arr] while (remaining.length > 0) { - const { roofSurface, roofSurfaceIncl } = remaining[0] - const key = `${roofSurface}|${roofSurfaceIncl}` + const { roofSurface, roofSurfaceIncl, roofSurfaceNorthModuleYn } = remaining[0] + const key = `${roofSurface}|${roofSurfaceIncl}|${roofSurfaceNorthModuleYn}` // 해당 그룹 추출 - const group = remaining.filter((item) => item.roofSurface === roofSurface && item.roofSurfaceIncl === roofSurfaceIncl) + const group = remaining.filter( + (item) => + item.roofSurface === roofSurface && item.roofSurfaceIncl === roofSurfaceIncl && item.roofSurfaceNorthModuleYn === roofSurfaceNorthModuleYn, + ) // 이미 처리했는지 체크 후 저장 if (!seen.has(key)) { @@ -152,7 +162,14 @@ export function useCircuitTrestle(executeEffect = false) { } // remaining에서 제거 - remaining = remaining.filter((item) => !(item.roofSurface === roofSurface && item.roofSurfaceIncl === roofSurfaceIncl)) + remaining = remaining.filter( + (item) => + !( + item.roofSurface === roofSurface && + item.roofSurfaceIncl === roofSurfaceIncl && + item.roofSurfaceNorthModuleYn === roofSurfaceNorthModuleYn + ), + ) } return result