From 36c9357e8baa165355e28a12d17c9813aa179200 Mon Sep 17 00:00:00 2001 From: "hyojun.choi" Date: Mon, 20 Jan 2025 09:46:48 +0900 Subject: [PATCH 1/3] =?UTF-8?q?=EB=B0=A9=EC=9C=84=20=EA=B8=80=EC=9E=90=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=20=EC=8B=9C=20=EA=B2=80=EC=82=AC=20=EC=A1=B0?= =?UTF-8?q?=EA=B1=B4=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/hooks/usePolygon.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hooks/usePolygon.js b/src/hooks/usePolygon.js index 3e24920c..61a3f672 100644 --- a/src/hooks/usePolygon.js +++ b/src/hooks/usePolygon.js @@ -429,7 +429,7 @@ export const usePolygon = () => { const sameDirectionCnt = canvas.getObjects().filter((obj) => { const onlyStrDirection = obj.directionText?.replace(/[0-9]/g, '') - return obj.name === POLYGON_TYPE.ROOF && onlyStrDirection === text + return obj.name === POLYGON_TYPE.ROOF && obj.visible && obj !== polygon && onlyStrDirection === text }) text = text + (sameDirectionCnt.length + 1) From 4edef1c87d871c6d4bba68b50eb313c01c4e5840 Mon Sep 17 00:00:00 2001 From: Daseul Kim Date: Mon, 20 Jan 2025 11:18:54 +0900 Subject: [PATCH 2/3] =?UTF-8?q?fix:=20plan=20=EC=B4=88=EA=B8=B0=20?= =?UTF-8?q?=EC=83=9D=EC=84=B1=20=EC=8B=9C=20=EC=9D=B4=EC=A0=84=20=EB=AC=BC?= =?UTF-8?q?=EA=B1=B4=20=20plan=EC=9D=B4=20=EA=B0=99=EC=9D=B4=20=EB=B3=B4?= =?UTF-8?q?=EC=9D=B4=EB=8A=94=20=ED=98=84=EC=83=81=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/hooks/usePlan.js | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/hooks/usePlan.js b/src/hooks/usePlan.js index 510b7874..6a25fd50 100644 --- a/src/hooks/usePlan.js +++ b/src/hooks/usePlan.js @@ -14,6 +14,7 @@ import { SAVE_KEY } from '@/common/common' import { readImage, removeImage } from '@/lib/fileAction' import { FloorPlanContext } from '@/app/floor-plan/FloorPlanProvider' import { useEstimateController } from '@/hooks/floorPlan/estimate/useEstimateController' + export function usePlan(params = {}) { const { floorPlanState } = useContext(FloorPlanContext) @@ -159,7 +160,7 @@ export function usePlan(params = {}) { /** * 신규 canvas 데이터를 저장 */ - const postCanvasStatus = async (userId, objectNo, canvasStatus) => { + const postCanvasStatus = async (userId, objectNo, canvasStatus, isInitPlan = false) => { const planNo = await postObjectPlan(userId, objectNo) if (!planNo) return @@ -173,7 +174,12 @@ export function usePlan(params = {}) { } await promisePost({ url: '/api/canvas-management/canvas-statuses', data: planData }) .then((res) => { - setPlans((plans) => [...plans, { id: res.data, objectNo: objectNo, planNo: planNo, userId: userId, canvasStatus: canvasStatus }]) + if (isInitPlan) { + // 초기 플랜 생성인 경우 플랜 목록 초기화 + setPlans([{ id: res.data, objectNo: objectNo, planNo: planNo, userId: userId, canvasStatus: canvasStatus }]) + } else { + setPlans((plans) => [...plans, { id: res.data, objectNo: objectNo, planNo: planNo, userId: userId, canvasStatus: canvasStatus }]) + } updateCurrentPlan(res.data) }) .catch((error) => { @@ -313,13 +319,13 @@ export function usePlan(params = {}) { text: `Plan ${currentCanvasPlan.planNo} ` + getMessage('plan.message.confirm.copy'), type: 'confirm', confirmFn: async () => { - await postCanvasStatus(userId, objectNo, currentCanvasData()) + await postCanvasStatus(userId, objectNo, currentCanvasData(), false) }, denyFn: async () => { - await postCanvasStatus(userId, objectNo, '') + await postCanvasStatus(userId, objectNo, '', false) }, }) - : await postCanvasStatus(userId, objectNo, '') + : await postCanvasStatus(userId, objectNo, '', false) } /** @@ -373,7 +379,7 @@ export function usePlan(params = {}) { setPlans(res) updateCurrentPlan(res.find((plan) => plan.planNo === planNo).id) } else { - postCanvasStatus(userId, objectNo, '') + postCanvasStatus(userId, objectNo, '', true) } }) } From e460f7daaee0330d78c9518f3046e190b5720526 Mon Sep 17 00:00:00 2001 From: changkyu choi Date: Mon, 20 Jan 2025 11:27:26 +0900 Subject: [PATCH 3/3] =?UTF-8?q?=EB=B0=B0=EC=B9=98=EB=A9=B4=EA=B8=B0?= =?UTF-8?q?=EB=B3=B8=EC=84=A4=EC=A0=95=20=EB=B0=8F=20Canvas=EC=84=A4?= =?UTF-8?q?=EC=A0=95=20=EC=B4=88=EA=B8=B0=20=EB=8D=B0=EC=9D=B4=ED=84=B0=20?= =?UTF-8?q?=EC=84=A4=EC=A0=95=20=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/floor-plan/FloorPlan.jsx | 5 ++-- src/hooks/option/useCanvasSetting.js | 31 +++++++++++++------------ 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/src/components/floor-plan/FloorPlan.jsx b/src/components/floor-plan/FloorPlan.jsx index 0769af0a..a2e92bf2 100644 --- a/src/components/floor-plan/FloorPlan.jsx +++ b/src/components/floor-plan/FloorPlan.jsx @@ -15,7 +15,7 @@ export default function FloorPlan({ children }) { //const [correntObjectNo, setCorrentObjectNo] = useRecoilState(correntObjectNoState) const { closeAll } = usePopup() const { menuNumber, setMenuNumber } = useCanvasMenu() - const { fetchSettings } = useCanvasSetting() + const { fetchSettings, fetchBasicSettings } = useCanvasSetting() const modalProps = { menuNumber, @@ -26,7 +26,8 @@ export default function FloorPlan({ children }) { ///setCorrentObjectNo(floorPlanState.objectNo) //console.log('FloorPlan objectNo ', floorPlanState.objectNo, correntObjectNo) setMenuNumber(1) - fetchSettings() + fetchSettings() // Canvas 설정 정보 조회 + fetchBasicSettings() // 기본 설정 정보 조회 return () => { closeAll() } diff --git a/src/hooks/option/useCanvasSetting.js b/src/hooks/option/useCanvasSetting.js index c8139893..a1a3eebc 100644 --- a/src/hooks/option/useCanvasSetting.js +++ b/src/hooks/option/useCanvasSetting.js @@ -165,9 +165,10 @@ export function useCanvasSetting() { useEffect(() => { //console.log('🚀 ~ useEffect ~ roofMaterials 22 :', previousRoofMaterialsYn, roofMaterials.length , JSON.stringify(previousRoofMaterialsRef.current) !== JSON.stringify(roofMaterials)) // 지붕재 select 정보가 존재해야 배치면초기설정 DB 정보 비교 후 지붕재 정보를 가져올 수 있음 - if (!previousObjectNoRef.current && !correntObjectNo && previousObjectNoRef.current !== correntObjectNo - || roofMaterials.length !== 0 && JSON.stringify(previousRoofMaterialsRef.current) !== JSON.stringify(roofMaterials)) { - + if ( + (!previousObjectNoRef.current && !correntObjectNo && previousObjectNoRef.current !== correntObjectNo) || + (roofMaterials.length !== 0 && JSON.stringify(previousRoofMaterialsRef.current) !== JSON.stringify(roofMaterials)) + ) { // 1회만 실행 if (roofMaterials && previousRoofMaterialsYn === 'N') { fetchBasicSettings() @@ -290,10 +291,12 @@ export function useCanvasSetting() { const fetchBasicSettings = async () => { try { await get({ url: `/api/canvas-management/canvas-basic-settings/by-object/${correntObjectNo}` }).then((res) => { + console.log('🚀 ~ fetchBasicSettings ~ res >>>>>>>>>> :', res) + let roofsRow = {} let roofsArray = {} - if (res) { + if (res.length > 0) { roofsRow = res.map((item) => { return { roofSizeSet: String(item.roofSizeSet), @@ -444,7 +447,7 @@ export function useCanvasSetting() { const res = await get({ url: `/api/canvas-management/canvas-settings/by-object/${correntObjectNo}` }) console.log('res', res) - if (res.length > 0) { + if (Object.keys(res).length > 0) { const optionData1 = settingModalFirstOptions.option1.map((item) => ({ ...item, selected: res[item.column] })) const optionData2 = settingModalFirstOptions.option2.map((item) => ({ ...item, selected: res[item.column] })) const optionData3 = settingModalSecondOptions.option3.map((item) => ({ ...item })) @@ -539,20 +542,17 @@ export function useCanvasSetting() { setAdsorptionPointMode({ ...adsorptionPointMode, adsorptionPoint: false }) //치수선 설정 - setDimensionLineSettings({ ...dimensionLineSettings }) + setDimensionLineSettings({ ...dimensionLineSettings, ...dimensionLineSettingsState.default }) //도면크기 설정 - setPlanSizeSettingMode({ ...planSizeSettingMode }) + setPlanSizeSettingMode({ ...planSizeSettingMode, ...planSizeSettingModeState.default }) // 데이터 설정 - setSettingModalFirstOptions({ - ...settingModalFirstOptions, - }) - setSettingModalSecondOptions({ - ...settingModalSecondOptions, - }) + setSettingModalFirstOptions(...settingModalFirstOptions, ...settingModalFirstOptionsState.default) - setGlobalFont({ ...globalFont }) + setSettingModalSecondOptions(...settingModalSecondOptions, ...settingModalSecondOptionsState.default) + + setGlobalFont({ ...globalFont, ...globalFontState.default }) //점/선 그리드 setDotLineGridSettingState({ ...defaultDotLineGridSetting }) @@ -677,7 +677,7 @@ export function useCanvasSetting() { // HTTP POST 요청 보내기 await post({ url: `/api/canvas-management/canvas-settings`, data: patternData }) .then((res) => { - swalFire({ text: getMessage(res.returnMessage) }) + //swalFire({ text: getMessage(res.returnMessage) }) // Canvas 디스플레이 설정 시 해당 옵션 적용 frontSettings() @@ -777,6 +777,7 @@ export function useCanvasSetting() { adsorptionRange, setAdsorptionRange, fetchSettings, + fetchBasicSettings, frontSettings, globalFont, setGlobalFont,