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/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 ( <>
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'} />
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/hooks/option/useCanvasSetting.js b/src/hooks/option/useCanvasSetting.js index 6d576a30..299d7e67 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) { @@ -369,7 +372,7 @@ export function useCanvasSetting() { if (!(Object.keys(canvasSetting).length === 0 && canvasSetting.constructor === Object)) { setBasicSettings({ ...canvasSetting }) } - //setCanvasSetting({ ...basicSetting }) + setCanvasSetting({ ...basicSetting }) } // 기본설정(PlacementShapeSetting) 저장 @@ -426,6 +429,7 @@ export function useCanvasSetting() { } catch (error) { swalFire({ text: error.message, icon: 'error' }) } + closeAll() } // CanvasSetting 조회 및 초기화 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: {}, + }, +})