From 25b58dafec512099dd1a0480343f2e030ded3cf8 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: Thu, 20 Feb 2025 17:52:52 +0900
Subject: [PATCH 01/18] =?UTF-8?q?-=20=EC=B9=98=EC=88=98=20=EC=9E=85?=
=?UTF-8?q?=EB=A0=A5=20=EB=B0=A9=EB=B2=95=EC=9D=B4=20=EC=9C=A1=EC=A7=80?=
=?UTF-8?q?=EB=B6=95=EC=9D=BC=20=EB=95=8C=20=EC=84=A0=20=EC=86=8D=EC=84=B1?=
=?UTF-8?q?=20=EC=84=A4=EC=A0=95=20=EC=83=9D=EB=9E=B5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/hooks/surface/usePlacementShapeDrawing.js | 7 ++++++-
src/hooks/surface/useSurfaceShapeBatch.js | 5 +++--
2 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/src/hooks/surface/usePlacementShapeDrawing.js b/src/hooks/surface/usePlacementShapeDrawing.js
index c2b7ff98..6ebd1414 100644
--- a/src/hooks/surface/usePlacementShapeDrawing.js
+++ b/src/hooks/surface/usePlacementShapeDrawing.js
@@ -3,6 +3,7 @@ import {
adsorptionPointAddModeState,
adsorptionPointModeState,
adsorptionRangeState,
+ canvasSettingState,
canvasState,
dotLineIntervalSelector,
globalPitchState,
@@ -49,7 +50,7 @@ export function usePlacementShapeDrawing(id) {
const { addPolygonByLines, drawDirectionArrow } = usePolygon()
const { tempGridMode } = useTempGrid()
const { setSurfaceShapePattern } = useRoofFn()
-
+ const canvasSetting = useRecoilValue(canvasSettingState)
const verticalHorizontalMode = useRecoilValue(verticalHorizontalModeState)
const adsorptionPointAddMode = useRecoilValue(adsorptionPointAddModeState)
const adsorptionPointMode = useRecoilValue(adsorptionPointModeState)
@@ -246,6 +247,10 @@ export function usePlacementShapeDrawing(id) {
setPoints([])
canvas?.renderAll()
+ if (+canvasSetting?.roofSizeSet === 3) {
+ closePopup(id)
+ return
+ }
addPopup(id, 1, , false)
}
diff --git a/src/hooks/surface/useSurfaceShapeBatch.js b/src/hooks/surface/useSurfaceShapeBatch.js
index abb3688b..7b0efec8 100644
--- a/src/hooks/surface/useSurfaceShapeBatch.js
+++ b/src/hooks/surface/useSurfaceShapeBatch.js
@@ -2,7 +2,7 @@
import { useEffect } from 'react'
import { useRecoilState, useRecoilValue, useResetRecoilState } from 'recoil'
-import { canvasState, currentCanvasPlanState, globalPitchState } from '@/store/canvasAtom'
+import { canvasSettingState, canvasState, currentCanvasPlanState, globalPitchState } from '@/store/canvasAtom'
import { MENU, POLYGON_TYPE } from '@/common/common'
import { getIntersectionPoint } from '@/util/canvas-util'
import { degreesToRadians } from '@turf/turf'
@@ -29,7 +29,7 @@ export function useSurfaceShapeBatch({ isHidden, setIsHidden }) {
const lengthTextFont = useRecoilValue(fontSelector('lengthText'))
const resetOuterLinePoints = useResetRecoilState(outerLinePointsState)
const resetPlacementShapeDrawingPoints = useResetRecoilState(placementShapeDrawingPointsState)
-
+ const canvasSetting = useRecoilValue(canvasSettingState)
const canvas = useRecoilValue(canvasState)
const globalPitch = useRecoilValue(globalPitchState)
const roofDisplay = useRecoilValue(roofDisplaySelector)
@@ -200,6 +200,7 @@ export function useSurfaceShapeBatch({ isHidden, setIsHidden }) {
// closePopup(id)
initEvent()
+ if (+canvasSetting?.roofSizeSet === 3) return
const popupId = uuidv4()
addPopup(popupId, 2, )
})
From 76725cef94ec143a898fbdd456899476f54c5510 Mon Sep 17 00:00:00 2001
From: yoosangwook
Date: Thu, 20 Feb 2025 18:03:46 +0900
Subject: [PATCH 02/18] =?UTF-8?q?=F0=9F=93=8Cfix:=20=EB=B0=B0=EC=B9=98?=
=?UTF-8?q?=EB=A9=B4=20=EC=82=AD=EC=A0=9C=ED=95=A0=20=EA=B2=BD=EC=9A=B0=20?=
=?UTF-8?q?=EC=9D=B4=EB=AF=B8=EC=A7=80=20=EC=9E=88=EC=9D=84=EB=95=8C?=
=?UTF-8?q?=EB=A7=8C=20=EC=9D=B4=EB=AF=B8=EC=A7=80=20=EC=82=AD=EC=A0=9C=20?=
=?UTF-8?q?=EB=A1=9C=EC=A7=81=20=ED=86=B5=EA=B3=BC=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
---
src/hooks/surface/useSurfaceShapeBatch.js | 44 ++++++++++++-----------
1 file changed, 23 insertions(+), 21 deletions(-)
diff --git a/src/hooks/surface/useSurfaceShapeBatch.js b/src/hooks/surface/useSurfaceShapeBatch.js
index abb3688b..46c4ad82 100644
--- a/src/hooks/surface/useSurfaceShapeBatch.js
+++ b/src/hooks/surface/useSurfaceShapeBatch.js
@@ -734,28 +734,30 @@ export function useSurfaceShapeBatch({ isHidden, setIsHidden }) {
confirmFn: () => {
canvas.clear()
- fabric.Image.fromURL(`${backgroundImage.path}`, function (img) {
- console.log('๐ ~ img:', img)
- img.set({
- left: 0,
- top: 0,
- width: img.width,
- height: img.height,
- name: 'backGroundImage',
- selectable: false,
- hasRotatingPoint: false, // ํ์ ํธ๋ค ํ์ฑํ
- lockMovementX: false,
- lockMovementY: false,
- lockRotation: false,
- lockScalingX: false,
- lockScalingY: false,
+ if (backgroundImage) {
+ fabric.Image.fromURL(`${backgroundImage.path}`, function (img) {
+ console.log('๐ ~ img:', img)
+ img.set({
+ left: 0,
+ top: 0,
+ width: img.width,
+ height: img.height,
+ name: 'backGroundImage',
+ selectable: false,
+ hasRotatingPoint: false, // ํ์ ํธ๋ค ํ์ฑํ
+ lockMovementX: false,
+ lockMovementY: false,
+ lockRotation: false,
+ lockScalingX: false,
+ lockScalingY: false,
+ })
+ // image = img
+ canvas?.add(img)
+ canvas?.sendToBack(img)
+ canvas?.renderAll()
+ // setBackImg(img)
})
- // image = img
- canvas?.add(img)
- canvas?.sendToBack(img)
- canvas?.renderAll()
- // setBackImg(img)
- })
+ }
resetOuterLinePoints()
resetPlacementShapeDrawingPoints()
From e0006875c7964aaae6bed305d59f2134618e5e38 Mon Sep 17 00:00:00 2001
From: yoosangwook
Date: Thu, 20 Feb 2025 18:27:52 +0900
Subject: [PATCH 03/18] =?UTF-8?q?=F0=9F=93=8Cfix:=20metadata=20=EC=88=98?=
=?UTF-8?q?=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/app/layout.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/app/layout.js b/src/app/layout.js
index 8071159a..c88dd7d8 100644
--- a/src/app/layout.js
+++ b/src/app/layout.js
@@ -17,8 +17,8 @@ import Footer from '@/components/footer/Footer'
import GlobalLoadingProvider from './GlobalLoadingProvider'
export const metadata = {
- title: 'Create Next App',
- description: 'Generated by create next app',
+ title: 'HANASYS่จญ่จ',
+ description: 'HANASYS่จญ่จ',
}
export default async function RootLayout({ children }) {
From c52034ab53bdb5f45ca9def40f52a87993b5de20 Mon Sep 17 00:00:00 2001
From: "hyojun.choi"
Date: Fri, 21 Feb 2025 11:22:40 +0900
Subject: [PATCH 04/18] =?UTF-8?q?-=20=EB=AA=A8=EB=93=88=EC=9D=B4=20?=
=?UTF-8?q?=EC=9E=88=EB=8A=94=20=EA=B2=BD=EC=9A=B0=20=EB=B0=B0=EC=B9=98?=
=?UTF-8?q?=EB=A9=B4=EC=9C=BC=EB=A1=9C=20=EB=8B=A4=EC=8B=9C=20=EC=A7=84?=
=?UTF-8?q?=EC=9E=85=20=EC=8B=9C=20=EB=AA=A8=EB=93=88=20=EC=A0=9C=EA=B1=B0?=
=?UTF-8?q?=20=EB=B0=8F=20=EC=A7=80=EB=B6=95=EB=A9=B4=20=ED=95=A0=EB=8B=B9?=
=?UTF-8?q?=20=EC=9E=AC=20=EC=8B=A4=ED=96=89,=20=EB=A9=94=EB=89=B4=20?=
=?UTF-8?q?=EB=B0=B0=EC=B9=98=EB=A9=B4=EC=9C=BC=EB=A1=9C=20=EC=88=98?=
=?UTF-8?q?=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/components/floor-plan/CanvasMenu.jsx | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/src/components/floor-plan/CanvasMenu.jsx b/src/components/floor-plan/CanvasMenu.jsx
index 1ed413cf..db11d3d1 100644
--- a/src/components/floor-plan/CanvasMenu.jsx
+++ b/src/components/floor-plan/CanvasMenu.jsx
@@ -48,6 +48,7 @@ import KO from '@/locales/ko.json'
import JA from '@/locales/ja.json'
import { QcastContext } from '@/app/QcastProvider'
+import { useRoofFn } from '@/hooks/common/useRoofFn'
export default function CanvasMenu(props) {
const { menuNumber, setMenuNumber } = props
const pathname = usePathname()
@@ -104,6 +105,7 @@ export default function CanvasMenu(props) {
const pwrGnrSimTypeRecoil = useRecoilValue(pwrGnrSimTypeState)
const { setIsGlobalLoading } = useContext(QcastContext)
+ const { setSurfaceShapePattern } = useRoofFn()
//์์
const { selectedPlan } = usePlan()
@@ -190,6 +192,14 @@ export default function CanvasMenu(props) {
canvas.remove(moduleSurface)
})
canvas.renderAll()
+ onClickNav(menu)
+ canvas
+ .getObjects()
+ .filter((obj) => obj.name === POLYGON_TYPE.ROOF)
+ .forEach((roof) => {
+ roof.set({ selectable: true })
+ setSurfaceShapePattern(roof, null, false, roof.roofMaterial)
+ })
}
setType('surface')
},
From 6c0e9c5c0d66e26efb402f0814851466e0e55aba Mon Sep 17 00:00:00 2001
From: "hyojun.choi"
Date: Fri, 21 Feb 2025 11:27:51 +0900
Subject: [PATCH 05/18] =?UTF-8?q?=EB=B0=B0=EC=B9=98=EB=A9=B4=EC=9C=BC?=
=?UTF-8?q?=EB=A1=9C=20=EB=8F=8C=EC=95=84=EC=98=A4=EB=8A=94=20=EA=B2=BD?=
=?UTF-8?q?=EC=9A=B0=20=EC=A7=80=EB=B6=95=20=EC=A0=95=EC=83=81=ED=99=94?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/components/floor-plan/CanvasMenu.jsx | 21 ++++++++++++++-------
1 file changed, 14 insertions(+), 7 deletions(-)
diff --git a/src/components/floor-plan/CanvasMenu.jsx b/src/components/floor-plan/CanvasMenu.jsx
index db11d3d1..8ccfff42 100644
--- a/src/components/floor-plan/CanvasMenu.jsx
+++ b/src/components/floor-plan/CanvasMenu.jsx
@@ -49,6 +49,7 @@ import JA from '@/locales/ja.json'
import { QcastContext } from '@/app/QcastProvider'
import { useRoofFn } from '@/hooks/common/useRoofFn'
+import { usePolygon } from '@/hooks/usePolygon'
export default function CanvasMenu(props) {
const { menuNumber, setMenuNumber } = props
const pathname = usePathname()
@@ -106,6 +107,7 @@ export default function CanvasMenu(props) {
const { setIsGlobalLoading } = useContext(QcastContext)
const { setSurfaceShapePattern } = useRoofFn()
+ const { drawDirectionArrow } = usePolygon()
//์์
const { selectedPlan } = usePlan()
@@ -175,6 +177,17 @@ export default function CanvasMenu(props) {
case 3:
if (menuNumber > menu.index) {
const modules = canvas.getObjects().filter((module) => module.name === POLYGON_TYPE.MODULE)
+
+ canvas
+ .getObjects()
+ .filter((obj) => obj.name === POLYGON_TYPE.ROOF)
+ .forEach((roof) => {
+ roof.set({ selectable: true })
+ delete roof.moduleCompass
+ drawDirectionArrow(roof)
+ setSurfaceShapePattern(roof, null, false, roof.roofMaterial)
+ })
+
if (modules.length > 0) {
swalFire({
text: getMessage('module.delete.confirm'),
@@ -187,19 +200,13 @@ export default function CanvasMenu(props) {
(obj) =>
obj.name === POLYGON_TYPE.MODULE_SETUP_SURFACE || obj.name === POLYGON_TYPE.MODULE || obj.name === POLYGON_TYPE.OBJECT_SURFACE,
)
+
if (moduleSurfacesArray.length > 0) {
moduleSurfacesArray.forEach((moduleSurface) => {
canvas.remove(moduleSurface)
})
canvas.renderAll()
onClickNav(menu)
- canvas
- .getObjects()
- .filter((obj) => obj.name === POLYGON_TYPE.ROOF)
- .forEach((roof) => {
- roof.set({ selectable: true })
- setSurfaceShapePattern(roof, null, false, roof.roofMaterial)
- })
}
setType('surface')
},
From dda24a11257f08cf3ebe403ef793ed58f49211a0 Mon Sep 17 00:00:00 2001
From: "hyojun.choi"
Date: Fri, 21 Feb 2025 11:34:08 +0900
Subject: [PATCH 06/18] =?UTF-8?q?=EB=AA=A8=EB=93=88=EB=A9=B4=20=EC=9E=88?=
=?UTF-8?q?=EC=9D=84=20=EA=B2=BD=EC=9A=B0=EB=A7=8C=20=EC=A7=80=EB=B6=95?=
=?UTF-8?q?=EB=A9=B4=20=ED=95=A0=EB=8B=B9=20=EB=8B=A4=EC=8B=9C=ED=95=B4?=
=?UTF-8?q?=EC=95=BC=ED=95=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/components/floor-plan/CanvasMenu.jsx | 20 +++++++++++---------
1 file changed, 11 insertions(+), 9 deletions(-)
diff --git a/src/components/floor-plan/CanvasMenu.jsx b/src/components/floor-plan/CanvasMenu.jsx
index 8ccfff42..99499e88 100644
--- a/src/components/floor-plan/CanvasMenu.jsx
+++ b/src/components/floor-plan/CanvasMenu.jsx
@@ -177,16 +177,12 @@ export default function CanvasMenu(props) {
case 3:
if (menuNumber > menu.index) {
const modules = canvas.getObjects().filter((module) => module.name === POLYGON_TYPE.MODULE)
+ const roofs = canvas.getObjects().filter((obj) => obj.name === POLYGON_TYPE.ROOF)
- canvas
- .getObjects()
- .filter((obj) => obj.name === POLYGON_TYPE.ROOF)
- .forEach((roof) => {
- roof.set({ selectable: true })
- delete roof.moduleCompass
- drawDirectionArrow(roof)
- setSurfaceShapePattern(roof, null, false, roof.roofMaterial)
- })
+ roofs.forEach((roof) => {
+ delete roof.moduleCompass
+ drawDirectionArrow(roof)
+ })
if (modules.length > 0) {
swalFire({
@@ -194,6 +190,7 @@ export default function CanvasMenu(props) {
type: 'confirm',
confirmFn: () => {
//ํด๋น ๋ฉ๋ด ์ด๋์ ๋ฐฐ์น๋ฉด ์ญ์
+
const moduleSurfacesArray = canvas
.getObjects()
.filter(
@@ -202,6 +199,11 @@ export default function CanvasMenu(props) {
)
if (moduleSurfacesArray.length > 0) {
+ // ๋ชจ๋๋ฉด ์์ ๊ฒฝ์ฐ ์ง๋ถ๋ฉด ํ ๋น ๋ค์ํด์ผํจ
+ roofs.forEach((roof) => {
+ roof.set({ selectable: true })
+ setSurfaceShapePattern(roof, null, false, roof.roofMaterial)
+ })
moduleSurfacesArray.forEach((moduleSurface) => {
canvas.remove(moduleSurface)
})
From 97d7798d565fffc7c4a2c9496fb4d58481fa71cc 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 12:56:06 +0900
Subject: [PATCH 07/18] =?UTF-8?q?-=20=EB=B3=80=20=EC=86=8D=EC=84=B1?=
=?UTF-8?q?=EC=97=90=20=EB=94=B0=EB=9D=BC=20surface=20margin=20=EA=B0=92?=
=?UTF-8?q?=20=EC=A0=81=EC=9A=A9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/hooks/module/useModuleBasicSetting.js | 25 +++++++++++++++++++++--
src/hooks/useMode.js | 2 ++
2 files changed, 25 insertions(+), 2 deletions(-)
diff --git a/src/hooks/module/useModuleBasicSetting.js b/src/hooks/module/useModuleBasicSetting.js
index 3c27393b..9fdab1f1 100644
--- a/src/hooks/module/useModuleBasicSetting.js
+++ b/src/hooks/module/useModuleBasicSetting.js
@@ -7,7 +7,7 @@ import offsetPolygon, { calculateAngle } from '@/util/qpolygon-utils'
import { QPolygon } from '@/components/fabric/QPolygon'
import { moduleSetupSurfaceState, moduleIsSetupState } from '@/store/canvasAtom'
import { useEvent } from '@/hooks/useEvent'
-import { POLYGON_TYPE, BATCH_TYPE } from '@/common/common'
+import { POLYGON_TYPE, BATCH_TYPE, LINE_TYPE } from '@/common/common'
import * as turf from '@turf/turf'
import { useSwal } from '@/hooks/useSwal'
import { compasDegAtom } from '@/store/orientationAtom'
@@ -22,6 +22,7 @@ import { v4 as uuidv4 } from 'uuid'
// import { useCircuitTrestle } from '@/hooks/useCirCuitTrestle'
import { isObjectNotEmpty } from '@/util/common-utils'
import { useCircuitTrestle } from '@/hooks/useCirCuitTrestle'
+import { useMode } from '../useMode'
export function useModuleBasicSetting(tabNum) {
const canvas = useRecoilValue(canvasState)
@@ -51,6 +52,7 @@ export function useModuleBasicSetting(tabNum) {
const [currentObject, setCurrentObject] = useRecoilState(currentObjectState)
const { setModuleStatisticsData } = useCircuitTrestle()
+ const { createRoofPolygon, createMarginPolygon } = useMode()
useEffect(() => {
// console.log('basicSetting', basicSetting)
@@ -131,6 +133,7 @@ export function useModuleBasicSetting(tabNum) {
//๊ฐ๋ ์์ธ ๋ฐ์ดํฐ ๋ค์ด์ค๋ฉด ์คํ
useEffect(() => {
if (trestleDetailList.length > 0) {
+ console.log('trestleDetailList', trestleDetailList)
//์ง๋ถ์ ๊ฐ์ ธ์ด
canvas
.getObjects()
@@ -143,6 +146,12 @@ export function useModuleBasicSetting(tabNum) {
if (Number(detail.data.roofIndex) === roofIndex) {
//roof์ ์์ธ ๋ฐ์ดํฐ ์ถ๊ฐ
roof.set({ trestleDetail: detail.data })
+ roof.lines.forEach((line) => {
+ line.attributes = {
+ ...line.attributes,
+ offset: getOffset(detail.data, line.attributes.type),
+ }
+ })
//๋ฐฐ์น๋ฉด ์ค์น ์์ญ
makeModuleInstArea(roof, detail.data)
//surface์ ์์ธ ๋ฐ์ดํฐ ์ถ๊ฐ
@@ -153,6 +162,18 @@ export function useModuleBasicSetting(tabNum) {
}
}, [trestleDetailList])
+ const getOffset = (data, type) => {
+ switch (type) {
+ case LINE_TYPE.WALLLINE.EAVES:
+ return data.eaveIntvl / 10
+ case LINE_TYPE.WALLLINE.GABLE:
+ return data.kerabaIntvl / 10
+ case LINE_TYPE.SUBLINE.RIDGE:
+ return data.ridgeIntvl / 10
+ default:
+ return 60
+ }
+ }
//์ ํ ๋ฐฐ์น๋ฉด ๋ฐฐ์ด`
let selectedModuleInstSurfaceArray = []
@@ -220,7 +241,7 @@ export function useModuleBasicSetting(tabNum) {
} else {
let offsetLength = canvasSetting.roofSizeSet === '3' ? -30 : (trestleDetail.eaveIntvl / 10) * -1
setSurfaceShapePattern(roof, roofDisplay.column, true, roof.roofMaterial) //ํจํด ๋ณ๊ฒฝ
- const offsetPoints = offsetPolygon(roof.points, offsetLength) //์์ชฝ offset
+ const offsetPoints = createMarginPolygon(createRoofPolygon(roof.getCurrentPoints()), roof.lines).vertices //์์ชฝ offset
//๋ชจ๋์ค์น์์ญ?? ์์ฑ
const surfaceId = uuidv4()
diff --git a/src/hooks/useMode.js b/src/hooks/useMode.js
index 06f1428a..4665baf8 100644
--- a/src/hooks/useMode.js
+++ b/src/hooks/useMode.js
@@ -5743,5 +5743,7 @@ export function useMode() {
drawCellManualInTrestle,
setDirectionTrestles,
cutHelpLines,
+ createRoofPolygon,
+ createMarginPolygon,
}
}
From 7b467a679637ac1cb6a0e1b0adf4ed1894440921 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 13:14:29 +0900
Subject: [PATCH 08/18] =?UTF-8?q?-=201=EC=B0=A8=20=ED=86=B5=ED=95=A9?=
=?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8(Integration=20Test)=20#803=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
---
src/hooks/module/useModuleBasicSetting.js | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/src/hooks/module/useModuleBasicSetting.js b/src/hooks/module/useModuleBasicSetting.js
index 9fdab1f1..0babe2df 100644
--- a/src/hooks/module/useModuleBasicSetting.js
+++ b/src/hooks/module/useModuleBasicSetting.js
@@ -712,7 +712,7 @@ export function useModuleBasicSetting(tabNum) {
canvas?.add(manualModule)
manualDrawModules.push(manualModule)
setModuleStatisticsData()
- getModuleStatistics()
+ // getModuleStatistics()
} else {
swalFire({ text: getMessage('module.place.overlab') })
}
@@ -2130,7 +2130,8 @@ export function useModuleBasicSetting(tabNum) {
})
moduleSetupSurface.set({ modules: moduleSetupArray })
- getModuleStatistics()
+ // getModuleStatistics()
+ setModuleStatisticsData()
// const moduleArray = [...moduleIsSetup]
// moduleArray.push({
// surfaceId: moduleSetupSurface.surfaceId,
@@ -2794,7 +2795,8 @@ export function useModuleBasicSetting(tabNum) {
}
})
}
- getModuleStatistics()
+ // getModuleStatistics()
+ setModuleStatisticsData()
} else {
if (moduleSetupSurfaces) {
//์๋๋ชจ๋ ํด์ ์ ๋ชจ๋ ์ค์น๋ฉด ์ ํ ์ ๊ธ
@@ -3210,7 +3212,8 @@ export function useModuleBasicSetting(tabNum) {
})
moduleSetupSurface.set({ modules: setupedModules })
- getModuleStatistics()
+ setModuleStatisticsData()
+ // getModuleStatistics()
// console.log('moduleSetupSurface', moduleSetupSurface)
// console.log('setupedModules', setupedModules)
From b0a24c7daf8912872fc03cd6ef1e8d6b8c4b60ca Mon Sep 17 00:00:00 2001
From: "hyojun.choi"
Date: Fri, 21 Feb 2025 15:12:07 +0900
Subject: [PATCH 09/18] =?UTF-8?q?contextmenu=20roof=20=EB=B3=B5=EC=82=AC?=
=?UTF-8?q?=20=ED=95=A0=20=EB=95=8C=20lines=20=EB=B3=B5=EC=82=AC=20?=
=?UTF-8?q?=EC=B6=94=EA=B0=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/hooks/common/useCommonUtils.js | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/src/hooks/common/useCommonUtils.js b/src/hooks/common/useCommonUtils.js
index b7e944c5..538ee8c5 100644
--- a/src/hooks/common/useCommonUtils.js
+++ b/src/hooks/common/useCommonUtils.js
@@ -593,6 +593,11 @@ export function useCommonUtils() {
clonedObj.setCoords()
clonedObj.fire('polygonMoved')
clonedObj.set({ direction: obj.direction, directionText: obj.directionText, roofMaterial: obj.roofMaterial })
+
+ obj.lines.forEach((line, index) => {
+ clonedObj.lines[index].set({ attributes: line.attributes })
+ })
+
canvas.renderAll()
addLengthText(clonedObj) //์์น ์ถ๊ฐ
drawDirectionArrow(clonedObj) //๋ฐฉํฅ ํ์ดํ ์ถ๊ฐ
From 476e2f7cbc34398916680f241a9621332aa88cb0 Mon Sep 17 00:00:00 2001
From: "hyojun.choi"
Date: Fri, 21 Feb 2025 16:02:29 +0900
Subject: [PATCH 10/18] =?UTF-8?q?=EB=AA=A8=EB=93=88=20=EC=84=A4=EC=B9=98?=
=?UTF-8?q?=20=EC=98=81=EC=97=AD=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/useModuleBasicSetting.js | 10 ++++++++--
src/hooks/useMode.js | 1 +
2 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/src/hooks/module/useModuleBasicSetting.js b/src/hooks/module/useModuleBasicSetting.js
index 0babe2df..c5ef9667 100644
--- a/src/hooks/module/useModuleBasicSetting.js
+++ b/src/hooks/module/useModuleBasicSetting.js
@@ -52,7 +52,7 @@ export function useModuleBasicSetting(tabNum) {
const [currentObject, setCurrentObject] = useRecoilState(currentObjectState)
const { setModuleStatisticsData } = useCircuitTrestle()
- const { createRoofPolygon, createMarginPolygon } = useMode()
+ const { createRoofPolygon, createMarginPolygon, createPaddingPolygon } = useMode()
useEffect(() => {
// console.log('basicSetting', basicSetting)
@@ -241,7 +241,13 @@ export function useModuleBasicSetting(tabNum) {
} else {
let offsetLength = canvasSetting.roofSizeSet === '3' ? -30 : (trestleDetail.eaveIntvl / 10) * -1
setSurfaceShapePattern(roof, roofDisplay.column, true, roof.roofMaterial) //ํจํด ๋ณ๊ฒฝ
- const offsetPoints = createMarginPolygon(createRoofPolygon(roof.getCurrentPoints()), roof.lines).vertices //์์ชฝ offset
+ let offsetPoints = null
+
+ if (['south', 'west'].includes(roof.direction)) {
+ offsetPoints = createPaddingPolygon(createRoofPolygon(roof.getCurrentPoints()), roof.lines).vertices //์์ชฝ offset
+ } else {
+ offsetPoints = createMarginPolygon(createRoofPolygon(roof.getCurrentPoints()), roof.lines).vertices //์์ชฝ offset
+ }
//๋ชจ๋์ค์น์์ญ?? ์์ฑ
const surfaceId = uuidv4()
diff --git a/src/hooks/useMode.js b/src/hooks/useMode.js
index 4665baf8..392711b0 100644
--- a/src/hooks/useMode.js
+++ b/src/hooks/useMode.js
@@ -5745,5 +5745,6 @@ export function useMode() {
cutHelpLines,
createRoofPolygon,
createMarginPolygon,
+ createPaddingPolygon,
}
}
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 11/18] =?UTF-8?q?-=20=EC=9C=A1=EC=A7=80=EB=B6=95=EC=9D=BC?=
=?UTF-8?q?=20=EB=95=8C=20=EC=84=A0=EC=86=8D=EC=84=B1=20=ED=8C=9D=EC=97=85?=
=?UTF-8?q?=20=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 12/18] =?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 13/18] =?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]
From 0ae09e17dd71a7a9b8c9a8375638217699bb3e9b Mon Sep 17 00:00:00 2001
From: "hyojun.choi"
Date: Fri, 21 Feb 2025 17:09:46 +0900
Subject: [PATCH 14/18] =?UTF-8?q?=EC=A0=80=EC=9E=A5=20=ED=9B=84=20?=
=?UTF-8?q?=EB=B6=88=EB=9F=AC=EC=98=AC=20=EB=95=8C=20lines=20attributes=20?=
=?UTF-8?q?=EC=84=B8=ED=8C=85?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/components/fabric/QPolygon.js | 15 +++++++++------
1 file changed, 9 insertions(+), 6 deletions(-)
diff --git a/src/components/fabric/QPolygon.js b/src/components/fabric/QPolygon.js
index b0c46798..b8c3bbed 100644
--- a/src/components/fabric/QPolygon.js
+++ b/src/components/fabric/QPolygon.js
@@ -162,9 +162,10 @@ export const QPolygon = fabric.util.createClass(fabric.Polygon, {
},
initLines() {
- // if (this.lines.length > 0) {
- // return
- // }
+ let attributes = null
+ if (this.lines.length > 0) {
+ attributes = this.lines.map((line) => line.attributes)
+ }
this.lines = []
@@ -174,9 +175,11 @@ export const QPolygon = fabric.util.createClass(fabric.Polygon, {
stroke: this.stroke,
strokeWidth: this.strokeWidth,
fontSize: this.fontSize,
- attributes: {
- offset: 0,
- },
+ attributes: attributes
+ ? attributes[i]
+ : {
+ offset: 0,
+ },
textVisible: false,
parent: this,
parentId: this.id,
From e99236fd3066150abcd5d2a976ff8a28d6108430 Mon Sep 17 00:00:00 2001
From: changkyu choi
Date: Fri, 21 Feb 2025 17:29:49 +0900
Subject: [PATCH 15/18] =?UTF-8?q?=EB=B0=B0=EC=B9=98=EB=A9=B4=EC=B4=88?=
=?UTF-8?q?=EA=B8=B0=EC=84=A4=EC=A0=95=20=EB=AF=B8=EC=A0=80=EC=9E=A5=20pla?=
=?UTF-8?q?n=EC=97=90=EC=84=9C=20=EC=A0=80=EC=9E=A5=ED=95=9C=20plan=20=20?=
=?UTF-8?q?=EC=9D=B4=EB=8F=99=20=EC=8B=9C=20=EB=B0=B0=EC=B9=98=EB=A9=B4?=
=?UTF-8?q?=EC=B4=88=EA=B8=B0=EC=84=A4=EC=A0=95=20=ED=99=94=EB=A9=B4=20?=
=?UTF-8?q?=EB=8B=AB=ED=9E=98=20=EC=B2=98=EB=A6=AC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../placementShape/PlacementShapeSetting.jsx | 4 ++++
src/hooks/option/useCanvasSetting.js | 21 ++++++++++++-------
2 files changed, 17 insertions(+), 8 deletions(-)
diff --git a/src/components/floor-plan/modal/placementShape/PlacementShapeSetting.jsx b/src/components/floor-plan/modal/placementShape/PlacementShapeSetting.jsx
index 05880782..ed400f95 100644
--- a/src/components/floor-plan/modal/placementShape/PlacementShapeSetting.jsx
+++ b/src/components/floor-plan/modal/placementShape/PlacementShapeSetting.jsx
@@ -33,6 +33,7 @@ export default function PlacementShapeSetting({ id, pos = { x: 50, y: 180 }, pla
const { findCommonCode } = useCommonCode()
const [raftCodes, setRaftCodes] = useState([]) // ์๊น๋ ์ ๋ณด
const [currentRoof, setCurrentRoof] = useState(null) // ํ์ฌ ์ ํ๋ ์ง๋ถ์ฌ ์ ๋ณด
+ const { closePopup } = usePopup() // usePopup์์ closeAll ํจ์ ๊ฐ์ ธ์ค๊ธฐ
const roofRef = {
roofCd: useRef(null),
@@ -213,6 +214,9 @@ export default function PlacementShapeSetting({ id, pos = { x: 50, y: 180 }, pla
roofInfo,
},
})
+
+ /* ์ ์ฅ ํ ํ๋ฉด ๋ซ๊ธฐ */
+ closePopup(id)
}
return (
diff --git a/src/hooks/option/useCanvasSetting.js b/src/hooks/option/useCanvasSetting.js
index 37161700..255cc9ee 100644
--- a/src/hooks/option/useCanvasSetting.js
+++ b/src/hooks/option/useCanvasSetting.js
@@ -139,7 +139,7 @@ export function useCanvasSetting() {
const selectedRoofMaterial = useRecoilValue(selectedRoofMaterialSelector) // ์ ํ๋ ์ง๋ถ์ฌ ์ ๋ณด
const { floorPlanState } = useContext(FloorPlanContext) // ํ๋ ์ํ
- const { closeAll } = usePopup() // ํ์
๋ซ๊ธฐ
+ const { closePopup } = usePopup() // ํ์
๋ซ๊ธฐ
useEffect(() => {
const tempFetchRoofMaterials = !fetchRoofMaterials
@@ -338,6 +338,11 @@ export function useCanvasSetting() {
roofAngle: item.roofAngle,
}
})
+
+ /* ๋ฐ์ดํฐ ์กด์ฌ ์ ํ๋ฉด ๋ซ๊ธฐ(๋ฉ๋ด/์ ์ฅ ํด๋ฆญ ์ ์ ์ธ) */
+ if (openPoint !== 'canvasMenus' && openPoint !== 'basicSettingSave') {
+ closePopup(popupId)
+ }
} else {
roofsRow = [
{
@@ -475,11 +480,8 @@ export function useCanvasSetting() {
roofSizeSet: String(params.roofSizeSet),
})
- /* ๋ฐฐ์น๋ฉด์ด๊ธฐ์ค์ ์กฐํ */
- fetchBasicSettings(params.planNo, null)
-
/* ๋ฉ๋ด ์ค์ */
- if (['2', '3'].includes(basicSetting?.roofSizeSet)) {
+ if (['2', '3'].includes(params.roofSizeSet)) {
setMenuNumber(3)
setType('surface')
setCurrentMenu(MENU.BATCH_CANVAS.BATCH_DRAWING)
@@ -489,6 +491,9 @@ export function useCanvasSetting() {
setCurrentMenu(MENU.ROOF_COVERING.EXTERIOR_WALL_LINE)
}
+ /* ๋ฐฐ์น๋ฉด์ด๊ธฐ์ค์ ์กฐํ */
+ fetchBasicSettings(params.planNo, 'basicSettingSave')
+
/* ๋ชจ๋ ์ ํ ๋ฐ์ดํฐ ์ด๊ธฐํ */
resetModuleSelectionData()
moduleSelectedDataTrigger({ common: {}, module: {}, roofConstructions: [] })
@@ -536,9 +541,6 @@ export function useCanvasSetting() {
roofSizeSet: String(params.roofSizeSet),
})
- /* ๋ฐฐ์น๋ฉด์ด๊ธฐ์ค์ ์กฐํ */
- fetchBasicSettings(Number(params.planNo), null)
-
/* ๋ฉ๋ด ์ค์ */
if (['2', '3'].includes(params?.roofSizeSet)) {
setMenuNumber(3)
@@ -550,6 +552,9 @@ export function useCanvasSetting() {
setCurrentMenu(MENU.ROOF_COVERING.EXTERIOR_WALL_LINE)
}
+ /* ๋ฐฐ์น๋ฉด์ด๊ธฐ์ค์ ์กฐํ */
+ fetchBasicSettings(Number(params.planNo), null)
+
/* ๋ชจ๋ ์ ํ ๋ฐ์ดํฐ ์ด๊ธฐํ */
resetModuleSelectionData()
moduleSelectedDataTrigger({ common: {}, module: {}, roofConstructions: [] })
From a7d9c7e5549441c462545d22d4b548051fba6c86 Mon Sep 17 00:00:00 2001
From: changkyu choi
Date: Fri, 21 Feb 2025 18:05:44 +0900
Subject: [PATCH 16/18] =?UTF-8?q?=EB=B0=B0=EC=B9=98=EB=A9=B4=EC=B4=88?=
=?UTF-8?q?=EA=B8=B0=EC=84=A4=EC=A0=95=20=EB=AF=B8=EC=A0=80=EC=9E=A5=20pla?=
=?UTF-8?q?n=EC=97=90=EC=84=9C=20=EC=A0=80=EC=9E=A5=ED=95=9C=20plan=20=20?=
=?UTF-8?q?=EC=9D=B4=EB=8F=99=20=EC=8B=9C=20=EB=B0=B0=EC=B9=98=EB=A9=B4?=
=?UTF-8?q?=EC=B4=88=EA=B8=B0=EC=84=A4=EC=A0=95=20=ED=99=94=EB=A9=B4=20?=
=?UTF-8?q?=EB=8B=AB=ED=9E=98=20=EC=B2=98=EB=A6=AC=20closeAll=20=EC=88=98?=
=?UTF-8?q?=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/hooks/option/useCanvasSetting.js | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/src/hooks/option/useCanvasSetting.js b/src/hooks/option/useCanvasSetting.js
index 255cc9ee..8cdecf1c 100644
--- a/src/hooks/option/useCanvasSetting.js
+++ b/src/hooks/option/useCanvasSetting.js
@@ -139,7 +139,7 @@ export function useCanvasSetting() {
const selectedRoofMaterial = useRecoilValue(selectedRoofMaterialSelector) // ์ ํ๋ ์ง๋ถ์ฌ ์ ๋ณด
const { floorPlanState } = useContext(FloorPlanContext) // ํ๋ ์ํ
- const { closePopup } = usePopup() // ํ์
๋ซ๊ธฐ
+ const { closePopup, closeAll } = usePopup() // ํ์
๋ซ๊ธฐ
useEffect(() => {
const tempFetchRoofMaterials = !fetchRoofMaterials
@@ -341,7 +341,8 @@ export function useCanvasSetting() {
/* ๋ฐ์ดํฐ ์กด์ฌ ์ ํ๋ฉด ๋ซ๊ธฐ(๋ฉ๋ด/์ ์ฅ ํด๋ฆญ ์ ์ ์ธ) */
if (openPoint !== 'canvasMenus' && openPoint !== 'basicSettingSave') {
- closePopup(popupId)
+ //closePopup(popupId)
+ closeAll()
}
} else {
roofsRow = [
@@ -553,7 +554,7 @@ export function useCanvasSetting() {
}
/* ๋ฐฐ์น๋ฉด์ด๊ธฐ์ค์ ์กฐํ */
- fetchBasicSettings(Number(params.planNo), null)
+ fetchBasicSettings(Number(params.planNo), 'basicSettingSave')
/* ๋ชจ๋ ์ ํ ๋ฐ์ดํฐ ์ด๊ธฐํ */
resetModuleSelectionData()
From 36497d5594327867cc6cfbdf7c9bed5d6d787c4f Mon Sep 17 00:00:00 2001
From: "hyojun.choi"
Date: Mon, 24 Feb 2025 10:11:30 +0900
Subject: [PATCH 17/18] =?UTF-8?q?=EB=B0=B0=EC=B9=98=EB=A9=B4=EC=9C=BC?=
=?UTF-8?q?=EB=A1=9C=20=EC=9D=B4=EB=8F=99=20=EC=8B=9C=20=EC=BB=A8=ED=8E=8C?=
=?UTF-8?q?=20=ED=99=95=EC=9D=B8=20=EB=88=8C=EB=A0=80=EC=9D=84=EB=95=8C?=
=?UTF-8?q?=EB=A7=8C=20=EC=A0=81=EC=9A=A9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/components/floor-plan/CanvasMenu.jsx | 16 +++++++---------
1 file changed, 7 insertions(+), 9 deletions(-)
diff --git a/src/components/floor-plan/CanvasMenu.jsx b/src/components/floor-plan/CanvasMenu.jsx
index 99499e88..b6b4520f 100644
--- a/src/components/floor-plan/CanvasMenu.jsx
+++ b/src/components/floor-plan/CanvasMenu.jsx
@@ -179,11 +179,6 @@ export default function CanvasMenu(props) {
const modules = canvas.getObjects().filter((module) => module.name === POLYGON_TYPE.MODULE)
const roofs = canvas.getObjects().filter((obj) => obj.name === POLYGON_TYPE.ROOF)
- roofs.forEach((roof) => {
- delete roof.moduleCompass
- drawDirectionArrow(roof)
- })
-
if (modules.length > 0) {
swalFire({
text: getMessage('module.delete.confirm'),
@@ -191,6 +186,13 @@ export default function CanvasMenu(props) {
confirmFn: () => {
//ํด๋น ๋ฉ๋ด ์ด๋์ ๋ฐฐ์น๋ฉด ์ญ์
+ roofs.forEach((roof) => {
+ roof.set({ selectable: true })
+ setSurfaceShapePattern(roof, null, false, roof.roofMaterial)
+ delete roof.moduleCompass
+ drawDirectionArrow(roof)
+ })
+
const moduleSurfacesArray = canvas
.getObjects()
.filter(
@@ -200,10 +202,6 @@ export default function CanvasMenu(props) {
if (moduleSurfacesArray.length > 0) {
// ๋ชจ๋๋ฉด ์์ ๊ฒฝ์ฐ ์ง๋ถ๋ฉด ํ ๋น ๋ค์ํด์ผํจ
- roofs.forEach((roof) => {
- roof.set({ selectable: true })
- setSurfaceShapePattern(roof, null, false, roof.roofMaterial)
- })
moduleSurfacesArray.forEach((moduleSurface) => {
canvas.remove(moduleSurface)
})
From eb48e11a5d693c0a0196d96d315d00173bda98f2 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: Mon, 24 Feb 2025 10:11:50 +0900
Subject: [PATCH 18/18] =?UTF-8?q?-=20surface=20=EC=83=9D=EC=84=B1=20?=
=?UTF-8?q?=EC=8B=9C=20padding=20/=20margin=20polygon=20=EA=B2=80=EC=A6=9D?=
=?UTF-8?q?=20=EB=A1=9C=EC=A7=81=20=EC=B6=94=EA=B0=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/hooks/module/useModuleBasicSetting.js | 18 ++++++++++++++----
1 file changed, 14 insertions(+), 4 deletions(-)
diff --git a/src/hooks/module/useModuleBasicSetting.js b/src/hooks/module/useModuleBasicSetting.js
index c5ef9667..53b03c01 100644
--- a/src/hooks/module/useModuleBasicSetting.js
+++ b/src/hooks/module/useModuleBasicSetting.js
@@ -171,7 +171,7 @@ export function useModuleBasicSetting(tabNum) {
case LINE_TYPE.SUBLINE.RIDGE:
return data.ridgeIntvl / 10
default:
- return 60
+ return 60 / 10
}
}
//์ ํ ๋ฐฐ์น๋ฉด ๋ฐฐ์ด`
@@ -241,13 +241,23 @@ export function useModuleBasicSetting(tabNum) {
} else {
let offsetLength = canvasSetting.roofSizeSet === '3' ? -30 : (trestleDetail.eaveIntvl / 10) * -1
setSurfaceShapePattern(roof, roofDisplay.column, true, roof.roofMaterial) //ํจํด ๋ณ๊ฒฝ
+ // let offsetPoints = createPaddingPolygon(createRoofPolygon(roof.points), roof.lines).vertices //์์ชฝ offset
let offsetPoints = null
+ console.log(roof, roof.getCurrentPoints())
+ const polygon = createRoofPolygon(roof.getCurrentPoints())
+ const originPolygon = new QPolygon(roof.getCurrentPoints(), { fontSize: 0 })
- if (['south', 'west'].includes(roof.direction)) {
- offsetPoints = createPaddingPolygon(createRoofPolygon(roof.getCurrentPoints()), roof.lines).vertices //์์ชฝ offset
+ let result = createPaddingPolygon(polygon, roof.lines).vertices
+
+ //margin polygon ์ point๊ฐ ๊ธฐ์ค polygon์ ๋ฐ์ ์๋์ง ํ๋จํ๋ค.
+ const allPointsOutside = result.every((point) => !originPolygon.inPolygon(point))
+
+ if (allPointsOutside) {
+ offsetPoints = createMarginPolygon(polygon, roof.lines).vertices
} else {
- offsetPoints = createMarginPolygon(createRoofPolygon(roof.getCurrentPoints()), roof.lines).vertices //์์ชฝ offset
+ offsetPoints = createPaddingPolygon(polygon, roof.lines).vertices
}
+
//๋ชจ๋์ค์น์์ญ?? ์์ฑ
const surfaceId = uuidv4()