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 f56fd3bd..015fbf1c 100644 --- a/src/hooks/option/useCanvasSetting.js +++ b/src/hooks/option/useCanvasSetting.js @@ -171,7 +171,8 @@ export function useCanvasSetting() { (!previousObjectNoRef.current && !correntObjectNo && previousObjectNoRef.current !== correntObjectNo) || (roofMaterials.length !== 0 && JSON.stringify(previousRoofMaterialsRef.current) !== JSON.stringify(roofMaterials)) ) { - if (roofMaterials) { + // 1회만 실행 + if (roofMaterials && previousRoofMaterialsYn === 'N') { fetchBasicSettings() previousRoofMaterialsYn = 'Y' } @@ -292,10 +293,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), @@ -446,7 +449,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 })) @@ -541,20 +544,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 }) @@ -679,7 +679,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() @@ -779,6 +779,7 @@ export function useCanvasSetting() { adsorptionRange, setAdsorptionRange, fetchSettings, + fetchBasicSettings, frontSettings, globalFont, setGlobalFont, 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) } }) } 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)