From 2a389fd6ea5ad0cf4b07327bbb5cac5a4eb7037a 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, 13 Jan 2025 21:43:18 +0900 Subject: [PATCH] =?UTF-8?q?=EB=B0=B0=EC=B9=98=EB=A9=B4=20=EC=B4=88?= =?UTF-8?q?=EA=B8=B0=20=EC=84=A4=EC=A0=95=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/floor-plan/CanvasMenu.jsx | 19 ++-- src/hooks/common/useMenu.js | 6 +- src/hooks/option/useCanvasSetting.js | 107 +++++++++++++++-------- src/store/menuAtom.js | 10 +-- 4 files changed, 87 insertions(+), 55 deletions(-) diff --git a/src/components/floor-plan/CanvasMenu.jsx b/src/components/floor-plan/CanvasMenu.jsx index b06f5e6e..0fbd67a8 100644 --- a/src/components/floor-plan/CanvasMenu.jsx +++ b/src/components/floor-plan/CanvasMenu.jsx @@ -295,15 +295,16 @@ export default function CanvasMenu(props) { }, [type, globalLocale]) useEffect(() => { - if ([2, 3].some((num) => num === canvasSetting?.roofSizeSet)) { - setMenuNumber(3) - setType('surface') - setCurrentMenu(MENU.BATCH_CANVAS.BATCH_DRAWING) - } else { - setMenuNumber(2) - setType('outline') - setCurrentMenu(MENU.ROOF_COVERING.EXTERIOR_WALL_LINE) - } + setMenuNumber(1) + // if ([2, 3].some((num) => num === canvasSetting?.roofSizeSet)) { + // setMenuNumber(3) + // setType('surface') + // setCurrentMenu(MENU.BATCH_CANVAS.BATCH_DRAWING) + // } else { + // setMenuNumber(2) + // setType('outline') + // setCurrentMenu(MENU.ROOF_COVERING.EXTERIOR_WALL_LINE) + // } }, [canvasSetting]) const checkMenuState = (menu) => { diff --git a/src/hooks/common/useMenu.js b/src/hooks/common/useMenu.js index 75905a73..a7b6519c 100644 --- a/src/hooks/common/useMenu.js +++ b/src/hooks/common/useMenu.js @@ -58,9 +58,9 @@ export default function useMenu() { if (type === 'surface') { switch (currentMenu) { - case MENU.BATCH_CANVAS.SLOPE_SETTING: - addPopup(popupId, 1, ) - break + // case MENU.BATCH_CANVAS.SLOPE_SETTING: + // addPopup(popupId, 1, ) + // break case MENU.BATCH_CANVAS.BATCH_DRAWING: addPopup(popupId, 1, ) break diff --git a/src/hooks/option/useCanvasSetting.js b/src/hooks/option/useCanvasSetting.js index 19bb7e8e..b3c3b1c7 100644 --- a/src/hooks/option/useCanvasSetting.js +++ b/src/hooks/option/useCanvasSetting.js @@ -7,6 +7,7 @@ import { planSizeSettingState, dotLineGridSettingState, canvasSettingState, + currentMenuState, } from '@/store/canvasAtom' import { globalLocaleStore } from '@/store/localeAtom' import { useMessage } from '@/hooks/useMessage' @@ -23,13 +24,15 @@ import { selectedRoofMaterialSelector, addedRoofsState, } from '@/store/settingAtom' -import { POLYGON_TYPE } from '@/common/common' +import { MENU, POLYGON_TYPE } from '@/common/common' import { globalFontAtom } from '@/store/fontAtom' import { dimensionLineSettingsState } from '@/store/commonUtilsAtom' import { gridColorState } from '@/store/gridAtom' import { useColor } from 'react-color-palette' 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' const defaultDotLineGridSetting = { INTERVAL: { @@ -43,7 +46,7 @@ const defaultDotLineGridSetting = { LINE: false, } -let previousRoofMaterialsYn = 'N'; // 지붕재 select 정보 비교 후 변경된 것이 없으면 1회만 실행 +let previousRoofMaterialsYn = 'N' // 지붕재 select 정보 비교 후 변경된 것이 없으면 1회만 실행 export function useCanvasSetting() { const canvas = useRecoilValue(canvasState) @@ -73,7 +76,7 @@ export function useCanvasSetting() { ) const [gridColor, setGridColor] = useRecoilState(gridColorState) const [color, setColor] = useColor(gridColor ?? '#FF0000') - + const { menuNumber, setMenuNumber } = useCanvasMenu() const [settingsData, setSettingsData] = useState({ ...settingModalFirstOptions, ...settingModalSecondOptions, @@ -99,7 +102,8 @@ export function useCanvasSetting() { const { getRoofMaterialList, getModuleTypeItemList } = useMasterController() const [roofMaterials, setRoofMaterials] = useRecoilState(roofMaterialsAtom) const [addedRoofs, setAddedRoofs] = useRecoilState(addedRoofsState) - + const [type, setType] = useRecoilState(menuTypeState) + const setCurrentMenu = useSetRecoilState(currentMenuState) const SelectOptions = [ { id: 1, name: getMessage('modal.canvas.setting.grid.dot.line.setting.line.origin'), value: 1 }, { id: 2, name: '1/2', value: 1 / 2 }, @@ -113,7 +117,7 @@ export function useCanvasSetting() { if (roofMaterials.length !== 0) { return } - addRoofMaterials() + addRoofMaterials() }, []) //지붕재 초기세팅 @@ -149,21 +153,21 @@ export function useCanvasSetting() { setBasicSettings({ ...basicSetting, selectedRoofMaterial: selectedRoofMaterial }) } - const previousRoofMaterialsRef = useRef(null); + const previousRoofMaterialsRef = useRef(null) useEffect(() => { // 지붕재 select 정보가 존재해야 배치면초기설정 DB 정보 비교 후 지붕재 정보를 가져올 수 있음 if (roofMaterials.length !== 0 && JSON.stringify(previousRoofMaterialsRef.current) !== JSON.stringify(roofMaterials)) { // 지붕재 select 정보 비교 후 변경된 것이 없으면 1회만 실행 if (roofMaterials && previousRoofMaterialsYn === 'N') { - fetchBasicSettings(); - previousRoofMaterialsYn = 'Y'; + fetchBasicSettings() + previousRoofMaterialsYn = 'Y' } // 이전 값을 업데이트 - previousRoofMaterialsRef.current = roofMaterials; + previousRoofMaterialsRef.current = roofMaterials } - }, [roofMaterials]); + }, [roofMaterials]) useEffect(() => { if (!canvas) { @@ -275,7 +279,6 @@ export function useCanvasSetting() { const fetchBasicSettings = async () => { try { await get({ url: `/api/canvas-management/canvas-basic-settings/by-object/${correntObjectNo}` }).then((res) => { - let roofsRow = {} let roofsArray = {} @@ -327,25 +330,30 @@ export function useCanvasSetting() { const addRoofs = [] roofMaterials?.map((material) => { if (material.roofMatlCd === roofsArray[0].roofMatlCd) { - addRoofs.push({ ...material, selected: true - , index: 0 - , width: roofsArray[0].roofWidth - , length: roofsArray[0].roofHeight - , hajebichi: roofsArray[0].roofHajebichi - , raft: roofsArray[0].roofGap - , layout: roofsArray[0].roofLayout - , roofSizeSet: roofsRow[0].roofSizeSet - , roofAngleSet: roofsRow[0].roofAngleSet - , pitch: roofsArray[0].roofPitch - , angle: roofsArray[0].roofAngle - }) - + addRoofs.push({ + ...material, + selected: true, + index: 0, + width: roofsArray[0].roofWidth, + length: roofsArray[0].roofHeight, + hajebichi: roofsArray[0].roofHajebichi, + raft: roofsArray[0].roofGap, + layout: roofsArray[0].roofLayout, + roofSizeSet: roofsRow[0].roofSizeSet, + roofAngleSet: roofsRow[0].roofAngleSet, + pitch: roofsArray[0].roofPitch, + angle: roofsArray[0].roofAngle, + }) + setAddedRoofs(addRoofs) - setBasicSettings({ ...basicSetting, roofMaterials: addRoofs[0] - , roofSizeSet: roofsRow[0].roofSizeSet - , roofAngleSet: roofsRow[0].roofAngleSet - , roofsData: roofsArray - , selectedRoofMaterial: addRoofs[0] }) + setBasicSettings({ + ...basicSetting, + roofMaterials: addRoofs[0], + roofSizeSet: roofsRow[0].roofSizeSet, + roofAngleSet: roofsRow[0].roofAngleSet, + roofsData: roofsArray, + selectedRoofMaterial: addRoofs[0], + }) } }) }) @@ -370,14 +378,26 @@ export function useCanvasSetting() { { roofApply: true, roofSeq: 0, - roofMatlCd: basicSetting.roofsData.roofMatlCd === null || basicSetting.roofsData.roofMatlCd === undefined ? 'ROOF_ID_WA_53A' : basicSetting.roofsData.roofMatlCd, - roofWidth: basicSetting.roofsData.roofWidth === null || basicSetting.roofsData.roofWidth === undefined ? 0 : basicSetting.roofsData.roofWidth, - roofHeight: basicSetting.roofsData.roofHeight === null || basicSetting.roofsData.roofHeight === undefined ? 0 : basicSetting.roofsData.roofHeight, - roofHajebichi: basicSetting.roofsData.roofHajebichi === null || basicSetting.roofsData.roofHajebichi === undefined ? 0 : basicSetting.roofsData.roofHajebichi, - roofGap: basicSetting.roofsData.roofGap === null || basicSetting.roofsData.roofGap === undefined ? 'HEI_455' : basicSetting.roofsData.roofGap, - roofLayout: basicSetting.roofsData.roofLayout === null || basicSetting.roofsData.roofLayout === undefined ? 'P' : basicSetting.roofsData.roofLayout, - roofPitch: basicSetting.roofsData.roofPitch === null || basicSetting.roofsData.roofPitch === undefined ? 0 : basicSetting.roofsData.roofPitch, - roofAngle: basicSetting.roofsData.roofAngle === null || basicSetting.roofsData.roofAngle === undefined ? 0 : basicSetting.roofsData.roofAngle, + roofMatlCd: + basicSetting.roofsData.roofMatlCd === null || basicSetting.roofsData.roofMatlCd === undefined + ? 'ROOF_ID_WA_53A' + : basicSetting.roofsData.roofMatlCd, + roofWidth: + basicSetting.roofsData.roofWidth === null || basicSetting.roofsData.roofWidth === undefined ? 0 : basicSetting.roofsData.roofWidth, + roofHeight: + basicSetting.roofsData.roofHeight === null || basicSetting.roofsData.roofHeight === undefined ? 0 : basicSetting.roofsData.roofHeight, + roofHajebichi: + basicSetting.roofsData.roofHajebichi === null || basicSetting.roofsData.roofHajebichi === undefined + ? 0 + : basicSetting.roofsData.roofHajebichi, + roofGap: + basicSetting.roofsData.roofGap === null || basicSetting.roofsData.roofGap === undefined ? 'HEI_455' : basicSetting.roofsData.roofGap, + roofLayout: + basicSetting.roofsData.roofLayout === null || basicSetting.roofsData.roofLayout === undefined ? 'P' : basicSetting.roofsData.roofLayout, + roofPitch: + basicSetting.roofsData.roofPitch === null || basicSetting.roofsData.roofPitch === undefined ? 0 : basicSetting.roofsData.roofPitch, + roofAngle: + basicSetting.roofsData.roofAngle === null || basicSetting.roofsData.roofAngle === undefined ? 0 : basicSetting.roofsData.roofAngle, }, ], } @@ -390,7 +410,18 @@ export function useCanvasSetting() { }) //Recoil 설정 - //setCanvasSetting({ ...basicSetting }) + //setCanvasSetting({ ...basicSetting })\ + console.log(basicSetting) + + if (['2', '3'].includes(basicSetting?.roofSizeSet)) { + setMenuNumber(3) + setType('surface') + setCurrentMenu(MENU.BATCH_CANVAS.BATCH_DRAWING) + } else { + setMenuNumber(2) + setType('outline') + setCurrentMenu(MENU.ROOF_COVERING.EXTERIOR_WALL_LINE) + } fetchBasicSettings() } catch (error) { swalFire({ text: error.message, icon: 'error' }) diff --git a/src/store/menuAtom.js b/src/store/menuAtom.js index 834498f0..2cf4b841 100644 --- a/src/store/menuAtom.js +++ b/src/store/menuAtom.js @@ -49,11 +49,11 @@ export const subMenusState = atom({ ], surface: [ // 배치면 - { id: 0, name: 'plan.menu.placement.surface.slope.setting', menu: MENU.BATCH_CANVAS.SLOPE_SETTING }, - { id: 1, name: 'plan.menu.placement.surface.drawing', menu: MENU.BATCH_CANVAS.BATCH_DRAWING }, - { id: 2, name: 'plan.menu.placement.surface.arrangement', menu: MENU.BATCH_CANVAS.SURFACE_SHAPE_BATCH }, - { id: 3, name: 'plan.menu.placement.surface.object', menu: MENU.BATCH_CANVAS.OBJECT_BATCH }, - { id: 4, name: 'plan.menu.placement.surface.all.remove', menu: MENU.BATCH_CANVAS.ALL_REMOVE }, + // { id: 0, name: 'plan.menu.placement.surface.slope.setting', menu: MENU.BATCH_CANVAS.SLOPE_SETTING }, + { id: 0, name: 'plan.menu.placement.surface.drawing', menu: MENU.BATCH_CANVAS.BATCH_DRAWING }, + { id: 1, name: 'plan.menu.placement.surface.arrangement', menu: MENU.BATCH_CANVAS.SURFACE_SHAPE_BATCH }, + { id: 2, name: 'plan.menu.placement.surface.object', menu: MENU.BATCH_CANVAS.OBJECT_BATCH }, + { id: 3, name: 'plan.menu.placement.surface.all.remove', menu: MENU.BATCH_CANVAS.ALL_REMOVE }, ], module: [ // 모듈, 회로 구성