배치면 초기 설정 수정

This commit is contained in:
김민식 2025-01-13 21:43:18 +09:00
parent 369e62615f
commit 2a389fd6ea
4 changed files with 87 additions and 55 deletions

View File

@ -295,15 +295,16 @@ export default function CanvasMenu(props) {
}, [type, globalLocale]) }, [type, globalLocale])
useEffect(() => { useEffect(() => {
if ([2, 3].some((num) => num === canvasSetting?.roofSizeSet)) { setMenuNumber(1)
setMenuNumber(3) // if ([2, 3].some((num) => num === canvasSetting?.roofSizeSet)) {
setType('surface') // setMenuNumber(3)
setCurrentMenu(MENU.BATCH_CANVAS.BATCH_DRAWING) // setType('surface')
} else { // setCurrentMenu(MENU.BATCH_CANVAS.BATCH_DRAWING)
setMenuNumber(2) // } else {
setType('outline') // setMenuNumber(2)
setCurrentMenu(MENU.ROOF_COVERING.EXTERIOR_WALL_LINE) // setType('outline')
} // setCurrentMenu(MENU.ROOF_COVERING.EXTERIOR_WALL_LINE)
// }
}, [canvasSetting]) }, [canvasSetting])
const checkMenuState = (menu) => { const checkMenuState = (menu) => {

View File

@ -58,9 +58,9 @@ export default function useMenu() {
if (type === 'surface') { if (type === 'surface') {
switch (currentMenu) { switch (currentMenu) {
case MENU.BATCH_CANVAS.SLOPE_SETTING: // case MENU.BATCH_CANVAS.SLOPE_SETTING:
addPopup(popupId, 1, <Slope id={popupId} />) // addPopup(popupId, 1, <Slope id={popupId} />)
break // break
case MENU.BATCH_CANVAS.BATCH_DRAWING: case MENU.BATCH_CANVAS.BATCH_DRAWING:
addPopup(popupId, 1, <PlacementShapeDrawing id={popupId} />) addPopup(popupId, 1, <PlacementShapeDrawing id={popupId} />)
break break

View File

@ -7,6 +7,7 @@ import {
planSizeSettingState, planSizeSettingState,
dotLineGridSettingState, dotLineGridSettingState,
canvasSettingState, canvasSettingState,
currentMenuState,
} from '@/store/canvasAtom' } from '@/store/canvasAtom'
import { globalLocaleStore } from '@/store/localeAtom' import { globalLocaleStore } from '@/store/localeAtom'
import { useMessage } from '@/hooks/useMessage' import { useMessage } from '@/hooks/useMessage'
@ -23,13 +24,15 @@ import {
selectedRoofMaterialSelector, selectedRoofMaterialSelector,
addedRoofsState, addedRoofsState,
} from '@/store/settingAtom' } from '@/store/settingAtom'
import { POLYGON_TYPE } from '@/common/common' import { MENU, POLYGON_TYPE } from '@/common/common'
import { globalFontAtom } from '@/store/fontAtom' import { globalFontAtom } from '@/store/fontAtom'
import { dimensionLineSettingsState } from '@/store/commonUtilsAtom' import { dimensionLineSettingsState } from '@/store/commonUtilsAtom'
import { gridColorState } from '@/store/gridAtom' import { gridColorState } from '@/store/gridAtom'
import { useColor } from 'react-color-palette' import { useColor } from 'react-color-palette'
import { useMasterController } from '@/hooks/common/useMasterController' import { useMasterController } from '@/hooks/common/useMasterController'
import { ROOF_MATERIAL_LAYOUT } from '@/components/floor-plan/modal/placementShape/PlacementShapeSetting' import { ROOF_MATERIAL_LAYOUT } from '@/components/floor-plan/modal/placementShape/PlacementShapeSetting'
import { useCanvasMenu } from '../common/useCanvasMenu'
import { menuTypeState } from '@/store/menuAtom'
const defaultDotLineGridSetting = { const defaultDotLineGridSetting = {
INTERVAL: { INTERVAL: {
@ -43,7 +46,7 @@ const defaultDotLineGridSetting = {
LINE: false, LINE: false,
} }
let previousRoofMaterialsYn = 'N'; // 지붕재 select 정보 비교 후 변경된 것이 없으면 1회만 실행 let previousRoofMaterialsYn = 'N' // 지붕재 select 정보 비교 후 변경된 것이 없으면 1회만 실행
export function useCanvasSetting() { export function useCanvasSetting() {
const canvas = useRecoilValue(canvasState) const canvas = useRecoilValue(canvasState)
@ -73,7 +76,7 @@ export function useCanvasSetting() {
) )
const [gridColor, setGridColor] = useRecoilState(gridColorState) const [gridColor, setGridColor] = useRecoilState(gridColorState)
const [color, setColor] = useColor(gridColor ?? '#FF0000') const [color, setColor] = useColor(gridColor ?? '#FF0000')
const { menuNumber, setMenuNumber } = useCanvasMenu()
const [settingsData, setSettingsData] = useState({ const [settingsData, setSettingsData] = useState({
...settingModalFirstOptions, ...settingModalFirstOptions,
...settingModalSecondOptions, ...settingModalSecondOptions,
@ -99,7 +102,8 @@ export function useCanvasSetting() {
const { getRoofMaterialList, getModuleTypeItemList } = useMasterController() const { getRoofMaterialList, getModuleTypeItemList } = useMasterController()
const [roofMaterials, setRoofMaterials] = useRecoilState(roofMaterialsAtom) const [roofMaterials, setRoofMaterials] = useRecoilState(roofMaterialsAtom)
const [addedRoofs, setAddedRoofs] = useRecoilState(addedRoofsState) const [addedRoofs, setAddedRoofs] = useRecoilState(addedRoofsState)
const [type, setType] = useRecoilState(menuTypeState)
const setCurrentMenu = useSetRecoilState(currentMenuState)
const SelectOptions = [ const SelectOptions = [
{ id: 1, name: getMessage('modal.canvas.setting.grid.dot.line.setting.line.origin'), value: 1 }, { id: 1, name: getMessage('modal.canvas.setting.grid.dot.line.setting.line.origin'), value: 1 },
{ id: 2, name: '1/2', value: 1 / 2 }, { id: 2, name: '1/2', value: 1 / 2 },
@ -149,21 +153,21 @@ export function useCanvasSetting() {
setBasicSettings({ ...basicSetting, selectedRoofMaterial: selectedRoofMaterial }) setBasicSettings({ ...basicSetting, selectedRoofMaterial: selectedRoofMaterial })
} }
const previousRoofMaterialsRef = useRef(null); const previousRoofMaterialsRef = useRef(null)
useEffect(() => { useEffect(() => {
// 지붕재 select 정보가 존재해야 배치면초기설정 DB 정보 비교 후 지붕재 정보를 가져올 수 있음 // 지붕재 select 정보가 존재해야 배치면초기설정 DB 정보 비교 후 지붕재 정보를 가져올 수 있음
if (roofMaterials.length !== 0 && JSON.stringify(previousRoofMaterialsRef.current) !== JSON.stringify(roofMaterials)) { if (roofMaterials.length !== 0 && JSON.stringify(previousRoofMaterialsRef.current) !== JSON.stringify(roofMaterials)) {
// 지붕재 select 정보 비교 후 변경된 것이 없으면 1회만 실행 // 지붕재 select 정보 비교 후 변경된 것이 없으면 1회만 실행
if (roofMaterials && previousRoofMaterialsYn === 'N') { if (roofMaterials && previousRoofMaterialsYn === 'N') {
fetchBasicSettings(); fetchBasicSettings()
previousRoofMaterialsYn = 'Y'; previousRoofMaterialsYn = 'Y'
} }
// 이전 값을 업데이트 // 이전 값을 업데이트
previousRoofMaterialsRef.current = roofMaterials; previousRoofMaterialsRef.current = roofMaterials
} }
}, [roofMaterials]); }, [roofMaterials])
useEffect(() => { useEffect(() => {
if (!canvas) { if (!canvas) {
@ -275,7 +279,6 @@ export function useCanvasSetting() {
const fetchBasicSettings = async () => { const fetchBasicSettings = async () => {
try { try {
await get({ url: `/api/canvas-management/canvas-basic-settings/by-object/${correntObjectNo}` }).then((res) => { await get({ url: `/api/canvas-management/canvas-basic-settings/by-object/${correntObjectNo}` }).then((res) => {
let roofsRow = {} let roofsRow = {}
let roofsArray = {} let roofsArray = {}
@ -327,25 +330,30 @@ export function useCanvasSetting() {
const addRoofs = [] const addRoofs = []
roofMaterials?.map((material) => { roofMaterials?.map((material) => {
if (material.roofMatlCd === roofsArray[0].roofMatlCd) { if (material.roofMatlCd === roofsArray[0].roofMatlCd) {
addRoofs.push({ ...material, selected: true addRoofs.push({
, index: 0 ...material,
, width: roofsArray[0].roofWidth selected: true,
, length: roofsArray[0].roofHeight index: 0,
, hajebichi: roofsArray[0].roofHajebichi width: roofsArray[0].roofWidth,
, raft: roofsArray[0].roofGap length: roofsArray[0].roofHeight,
, layout: roofsArray[0].roofLayout hajebichi: roofsArray[0].roofHajebichi,
, roofSizeSet: roofsRow[0].roofSizeSet raft: roofsArray[0].roofGap,
, roofAngleSet: roofsRow[0].roofAngleSet layout: roofsArray[0].roofLayout,
, pitch: roofsArray[0].roofPitch roofSizeSet: roofsRow[0].roofSizeSet,
, angle: roofsArray[0].roofAngle roofAngleSet: roofsRow[0].roofAngleSet,
}) pitch: roofsArray[0].roofPitch,
angle: roofsArray[0].roofAngle,
})
setAddedRoofs(addRoofs) setAddedRoofs(addRoofs)
setBasicSettings({ ...basicSetting, roofMaterials: addRoofs[0] setBasicSettings({
, roofSizeSet: roofsRow[0].roofSizeSet ...basicSetting,
, roofAngleSet: roofsRow[0].roofAngleSet roofMaterials: addRoofs[0],
, roofsData: roofsArray roofSizeSet: roofsRow[0].roofSizeSet,
, selectedRoofMaterial: addRoofs[0] }) roofAngleSet: roofsRow[0].roofAngleSet,
roofsData: roofsArray,
selectedRoofMaterial: addRoofs[0],
})
} }
}) })
}) })
@ -370,14 +378,26 @@ export function useCanvasSetting() {
{ {
roofApply: true, roofApply: true,
roofSeq: 0, roofSeq: 0,
roofMatlCd: basicSetting.roofsData.roofMatlCd === null || basicSetting.roofsData.roofMatlCd === undefined ? 'ROOF_ID_WA_53A' : basicSetting.roofsData.roofMatlCd, roofMatlCd:
roofWidth: basicSetting.roofsData.roofWidth === null || basicSetting.roofsData.roofWidth === undefined ? 0 : basicSetting.roofsData.roofWidth, basicSetting.roofsData.roofMatlCd === null || basicSetting.roofsData.roofMatlCd === undefined
roofHeight: basicSetting.roofsData.roofHeight === null || basicSetting.roofsData.roofHeight === undefined ? 0 : basicSetting.roofsData.roofHeight, ? 'ROOF_ID_WA_53A'
roofHajebichi: basicSetting.roofsData.roofHajebichi === null || basicSetting.roofsData.roofHajebichi === undefined ? 0 : basicSetting.roofsData.roofHajebichi, : basicSetting.roofsData.roofMatlCd,
roofGap: basicSetting.roofsData.roofGap === null || basicSetting.roofsData.roofGap === undefined ? 'HEI_455' : basicSetting.roofsData.roofGap, roofWidth:
roofLayout: basicSetting.roofsData.roofLayout === null || basicSetting.roofsData.roofLayout === undefined ? 'P' : basicSetting.roofsData.roofLayout, basicSetting.roofsData.roofWidth === null || basicSetting.roofsData.roofWidth === undefined ? 0 : basicSetting.roofsData.roofWidth,
roofPitch: basicSetting.roofsData.roofPitch === null || basicSetting.roofsData.roofPitch === undefined ? 0 : basicSetting.roofsData.roofPitch, roofHeight:
roofAngle: basicSetting.roofsData.roofAngle === null || basicSetting.roofsData.roofAngle === undefined ? 0 : basicSetting.roofsData.roofAngle, 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 설정 //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() fetchBasicSettings()
} catch (error) { } catch (error) {
swalFire({ text: error.message, icon: 'error' }) swalFire({ text: error.message, icon: 'error' })

View File

@ -49,11 +49,11 @@ export const subMenusState = atom({
], ],
surface: [ surface: [
// 배치면 // 배치면
{ id: 0, name: 'plan.menu.placement.surface.slope.setting', menu: MENU.BATCH_CANVAS.SLOPE_SETTING }, // { 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: 0, 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: 1, 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: 2, 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: 3, name: 'plan.menu.placement.surface.all.remove', menu: MENU.BATCH_CANVAS.ALL_REMOVE },
], ],
module: [ module: [
// 모듈, 회로 구성 // 모듈, 회로 구성