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