From 6f4c5e885e04a51fcdf8b7a76f8f5237bd1f0f00 Mon Sep 17 00:00:00 2001 From: yoosangwook Date: Thu, 16 Jan 2025 10:52:32 +0900 Subject: [PATCH 1/5] =?UTF-8?q?feat:=20=ED=9A=8C=EB=A1=9C=20=ED=95=A0?= =?UTF-8?q?=EB=8B=B9=20=EC=9E=91=EC=97=85=EC=A0=84=20=EC=BD=94=EB=93=9C=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 --- .../floor-plan/modal/circuitTrestle/step/StepUp.jsx | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/components/floor-plan/modal/circuitTrestle/step/StepUp.jsx b/src/components/floor-plan/modal/circuitTrestle/step/StepUp.jsx index 287d9ff8..8bb39d4e 100644 --- a/src/components/floor-plan/modal/circuitTrestle/step/StepUp.jsx +++ b/src/components/floor-plan/modal/circuitTrestle/step/StepUp.jsx @@ -1,6 +1,9 @@ -import QSelectBox from '@/components/common/select/QSelectBox' -import { useMessage } from '@/hooks/useMessage' import { useState } from 'react' +import { useRecoilValue } from 'recoil' +import { useCanvasPopupStatusController } from '@/hooks/common/useCanvasPopupStatusController' +import { canvasPopupStatusStore } from '@/store/canvasPopupStatusAtom' +import { useMessage } from '@/hooks/useMessage' +import QSelectBox from '@/components/common/select/QSelectBox' const SelectOption01 = [{ name: '0' }, { name: '0' }, { name: '0' }, { name: '0' }] @@ -8,6 +11,12 @@ export default function StepUp({}) { const { getMessage } = useMessage() const [moduleTab, setModuleTab] = useState(1) const [arrayLength, setArrayLength] = useState(3) //module-table-inner의 반복 개수 + + useCanvasPopupStatusController(6) + const canvasPopupStatusState = useRecoilValue(canvasPopupStatusStore) + if (Object.keys(canvasPopupStatusState[6]).length !== 0) { + } + return ( <>
From 153c1e1f38fcd1528032e848c44c4f5846adfa4f Mon Sep 17 00:00:00 2001 From: yoosangwook Date: Thu, 16 Jan 2025 10:53:03 +0900 Subject: [PATCH 2/5] =?UTF-8?q?feat:=20=ED=8C=9D=EC=97=85=20=EB=82=B4?= =?UTF-8?q?=EC=9A=A9=20=EC=A0=80=EC=9E=A5=20=EB=B0=8F=20=EC=A1=B0=ED=9A=8C?= =?UTF-8?q?=20=EA=B3=B5=ED=86=B5=20hooks=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Playground.jsx | 8 ++++++ .../common/useCanvasPopupStatusController.js | 28 +++++++++++++++++++ src/store/canvasPopupStatusAtom.js | 13 +++++++++ 3 files changed, 49 insertions(+) create mode 100644 src/hooks/common/useCanvasPopupStatusController.js create mode 100644 src/store/canvasPopupStatusAtom.js diff --git a/src/components/Playground.jsx b/src/components/Playground.jsx index 230eecd1..a55f4e46 100644 --- a/src/components/Playground.jsx +++ b/src/components/Playground.jsx @@ -25,6 +25,8 @@ import SampleReducer from './sample/SampleReducer' import styles from './playground.module.css' import useSWR from 'swr' import useSWRMutation from 'swr/mutation' +import { useCanvasPopupStatusController } from '@/hooks/common/useCanvasPopupStatusController' +import { canvasPopupStatusStore } from '@/store/canvasPopupStatusAtom' export default function Playground() { const [useCadFile, setUseCadFile] = useRecoilState(useCadFileState) @@ -267,6 +269,12 @@ export default function Playground() { return
Error...
} + useCanvasPopupStatusController(1) + + const [canvasPopupStatusState, setCanvasPopupStatusState] = useRecoilState(canvasPopupStatusStore) + useEffect(() => { + console.log('🚀 ~ Playground ~ canvasPopupStatusState:', canvasPopupStatusState) + }, [canvasPopupStatusState]) return ( <>
diff --git a/src/hooks/common/useCanvasPopupStatusController.js b/src/hooks/common/useCanvasPopupStatusController.js new file mode 100644 index 00000000..88b2207a --- /dev/null +++ b/src/hooks/common/useCanvasPopupStatusController.js @@ -0,0 +1,28 @@ +'use client' + +import { useEffect } from 'react' +import useSWR from 'swr' +import useSWRMutation from 'swr/mutation' +import { useAxios } from '../useAxios' +import { useRecoilState } from 'recoil' +import { canvasPopupStatusStore } from '@/store/canvasPopupStatusAtom' + +export function useCanvasPopupStatusController(popupType) { + const [canvasPopupStatusState, setCanvasPopupStatusState] = useRecoilState(canvasPopupStatusStore) + const { getFetcher, postFetcher } = useAxios() + const { + data: popupStatus, + error, + isLoading, + } = useSWR(popupType ? 'canvas-popup-status--data' : null, () => getFetcher(`http://localhost:8080/api/tutorial?popupType=${popupType}`)) + + useEffect(() => { + if (popupStatus) { + setCanvasPopupStatusState({ ...canvasPopupStatusState, [popupType]: popupStatus }) + } + }, [popupStatus]) + + const { trigger, isMutating } = useSWRMutation('canvas-popup-status-update', postFetcher) + + return { trigger } +} diff --git a/src/store/canvasPopupStatusAtom.js b/src/store/canvasPopupStatusAtom.js new file mode 100644 index 00000000..74aafb7d --- /dev/null +++ b/src/store/canvasPopupStatusAtom.js @@ -0,0 +1,13 @@ +import { atom } from 'recoil' + +export const canvasPopupStatusStore = atom({ + key: 'canvasPopupStatusState', + default: { + 1: {}, + 2: {}, + 3: {}, + 4: {}, + 5: {}, + 6: {}, + }, +}) From e306c9bafc8257f277c01657d29b8608e4bf8ad6 Mon Sep 17 00:00:00 2001 From: yoosangwook Date: Thu, 16 Jan 2025 11:00:04 +0900 Subject: [PATCH 3/5] =?UTF-8?q?fix:=20=EB=B0=B0=EC=B9=98=EB=A9=B4=20?= =?UTF-8?q?=EC=B4=88=EA=B8=B0=20=EC=84=A4=EC=A0=95=20=EC=A0=80=EC=9E=A5?= =?UTF-8?q?=EC=8B=9C=20=ED=8C=9D=EC=97=85=20=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 저장 이후 팝업이 남아있던 문제 해결 --- src/hooks/option/useCanvasSetting.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/hooks/option/useCanvasSetting.js b/src/hooks/option/useCanvasSetting.js index 6d576a30..d8d97238 100644 --- a/src/hooks/option/useCanvasSetting.js +++ b/src/hooks/option/useCanvasSetting.js @@ -34,6 +34,7 @@ import { useMasterController } from '@/hooks/common/useMasterController' import { ROOF_MATERIAL_LAYOUT } from '@/components/floor-plan/modal/placementShape/PlacementShapeSetting' import { useCanvasMenu } from '../common/useCanvasMenu' import { menuTypeState } from '@/store/menuAtom' +import { usePopup } from '../usePopup' const defaultDotLineGridSetting = { INTERVAL: { @@ -116,6 +117,8 @@ export function useCanvasSetting() { const selectedRoofMaterial = useRecoilValue(selectedRoofMaterialSelector) + const { closeAll } = usePopup() + useEffect(() => { setFetchRoofMaterials(!fetchRoofMaterials) if (fetchRoofMaterials) { @@ -426,6 +429,7 @@ export function useCanvasSetting() { } catch (error) { swalFire({ text: error.message, icon: 'error' }) } + closeAll() } // CanvasSetting 조회 및 초기화 From 2b60a0ccb597caf0a449dcf54eebd55cced6f0b5 Mon Sep 17 00:00:00 2001 From: changkyu choi Date: Thu, 16 Jan 2025 11:03:40 +0900 Subject: [PATCH 4/5] =?UTF-8?q?canvasSetting=20Recoil=EC=97=90=20basicSett?= =?UTF-8?q?ing=20=EC=A0=80=EC=9E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/hooks/option/useCanvasSetting.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hooks/option/useCanvasSetting.js b/src/hooks/option/useCanvasSetting.js index 6d576a30..e0785701 100644 --- a/src/hooks/option/useCanvasSetting.js +++ b/src/hooks/option/useCanvasSetting.js @@ -369,7 +369,7 @@ export function useCanvasSetting() { if (!(Object.keys(canvasSetting).length === 0 && canvasSetting.constructor === Object)) { setBasicSettings({ ...canvasSetting }) } - //setCanvasSetting({ ...basicSetting }) + setCanvasSetting({ ...basicSetting }) } // 기본설정(PlacementShapeSetting) 저장 From 3404843733e0089f9981d0f0252cc0cc22db7677 Mon Sep 17 00:00:00 2001 From: changkyu choi Date: Thu, 16 Jan 2025 12:29:57 +0900 Subject: [PATCH 5/5] =?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=EC=84=9C=EA=B9=8C=EB=9E=98=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/placementShape/PlacementShapeSetting.jsx | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/components/floor-plan/modal/placementShape/PlacementShapeSetting.jsx b/src/components/floor-plan/modal/placementShape/PlacementShapeSetting.jsx index 0a539ac2..a9619c2f 100644 --- a/src/components/floor-plan/modal/placementShape/PlacementShapeSetting.jsx +++ b/src/components/floor-plan/modal/placementShape/PlacementShapeSetting.jsx @@ -344,8 +344,7 @@ export default function PlacementShapeSetting({ id, pos = { x: 50, y: 180 }, set options={raftCodes} ref={roofRef.rafter} title={ - raftCodes.find((r) => r.clCode === (currentRoof?.raft === undefined ? currentRoof?.raftBaseCd : currentRoof?.raft)) - .clCodeNm + raftCodes.find((r) => r.clCode === (currentRoof?.raft === undefined ? currentRoof?.raftBaseCd : currentRoof?.raft)).clCodeNm } value={currentRoof?.raft === undefined ? currentRoof?.raftBaseCd : currentRoof?.raft} onChange={(e) => handleRafterChange(e.clCode)} @@ -367,7 +366,7 @@ export default function PlacementShapeSetting({ id, pos = { x: 50, y: 180 }, set )}
)} - {currentRoof && ['C', 'R'].includes(currentRoof.roofPchAuth) && ( + {currentRoof && ['C', 'R'].includes(currentRoof?.roofPchAuth) && (
{getMessage('hajebichi')}
@@ -376,10 +375,10 @@ export default function PlacementShapeSetting({ id, pos = { x: 50, y: 180 }, set className="input-origin block" name={`hajebichi`} ref={roofRef.hajebichi} - value={parseInt(currentRoof.hajebichi)} + value={parseInt(currentRoof?.hajebichi)} onChange={(e) => onlyNumberInputChange(e, changeInput)} - readOnly={currentRoof.roofPchAuth === 'R'} - disabled={currentRoof.roofSizeSet === '3'} + readOnly={currentRoof?.roofPchAuth === 'R'} + disabled={currentRoof?.roofSizeSet === '3'} />