diff --git a/src/components/floor-plan/CanvasMenu.jsx b/src/components/floor-plan/CanvasMenu.jsx
index 235c0f61..017e025e 100644
--- a/src/components/floor-plan/CanvasMenu.jsx
+++ b/src/components/floor-plan/CanvasMenu.jsx
@@ -18,6 +18,7 @@ import { outerLinePointsState } from '@/store/outerLineAtom'
import { appMessageStore, globalLocaleStore } from '@/store/localeAtom'
import {
addedRoofsSelector,
+ addedRoofsState,
basicSettingState,
roofMaterialsSelector,
selectedRoofMaterialSelector,
@@ -85,8 +86,9 @@ export default function CanvasMenu(props) {
const { floorPlanState, setFloorPlanState } = useContext(FloorPlanContext)
const { restoreModuleInstArea } = useModuleBasicSetting()
- const addedRoofs = useRecoilValue(addedRoofsSelector)
+ const addedRoofs = useRecoilValue(addedRoofsState)
const [basicSetting, setBasicSetting] = useRecoilState(basicSettingState)
+ const selectedRoofMaterial = useRecoilValue(selectedRoofMaterialSelector)
//견적서버튼 노출용
const [buttonStyle, setButtonStyle] = useState('')
@@ -307,7 +309,14 @@ export default function CanvasMenu(props) {
{addedRoofs.length > 0 && (
diff --git a/src/components/floor-plan/modal/placementShape/PlacementShapeSetting.jsx b/src/components/floor-plan/modal/placementShape/PlacementShapeSetting.jsx
index 31ac8eb5..6e526018 100644
--- a/src/components/floor-plan/modal/placementShape/PlacementShapeSetting.jsx
+++ b/src/components/floor-plan/modal/placementShape/PlacementShapeSetting.jsx
@@ -25,12 +25,14 @@ export default function PlacementShapeSetting({ id, pos = { x: 50, y: 180 }, set
const { closePopup } = usePopup()
const { getMessage } = useMessage()
const roofMaterials = useRecoilValue(roofMaterialsAtom)
- const { basicSetting, setBasicSettings, fetchBasicSettings, basicSettingSave } = useCanvasSetting()
+
+ const globalLocale = useRecoilValue(globalLocaleStore)
+ const { basicSetting, setBasicSettings, fetchBasicSettings, basicSettingSave, addedRoofs, setAddedRoofs } = useCanvasSetting()
const { findCommonCode } = useCommonCode()
const [raftCodes, setRaftCodes] = useState([])
- const [currentRoofMaterial, setCurrentRoofMaterial] = useState(basicSetting.selectedRoofMaterial)
- const globalLocale = useRecoilValue(globalLocaleStore)
- const [roofLayout, setRoofLayout] = useState(basicSetting.selectedRoofMaterial.layout)
+ //const [currentRoofMaterial, setCurrentRoofMaterial] = useState(basicSetting.selectedRoofMaterial)
+ const [currentRoofMaterial, setCurrentRoofMaterial] = useState(addedRoofs[0]) // 지붕재 정보
+ const [roofLayout, setRoofLayout] = useState(addedRoofs[0].layout) // 지붕 레이아웃
const roofRef = {
roofCd: useRef(null),
@@ -47,6 +49,28 @@ export default function PlacementShapeSetting({ id, pos = { x: 50, y: 180 }, set
setRaftCodes(raftCodeList)
}, [])
+ useEffect(() => {
+ //console.log('currentRoofMaterial >>>>>>>>>>>>>>>>>>> ', currentRoofMaterial)
+
+ console.log(' basicSetting.roofs[0] >>>>>>>>>>>>>>>>>>> ', basicSetting.roofs[0])
+ //console.log('basicSetting >>>>>>>>>>>>>>>>>>> ', basicSetting)
+ console.log('roofLayout >>>>>>>>>>>>>>>>>>> ', roofLayout)
+
+ setBasicSettings({
+ ...basicSetting,
+ roofsData: {
+ roofApply: true,
+ roofSeq: 1,
+ roofMatlCd: currentRoofMaterial.roofMatlCd === null ? 'ROOF_ID_WA_53A' : currentRoofMaterial.roofMatlCd,
+ roofWidth: currentRoofMaterial.width === null ? 0 : currentRoofMaterial.width,
+ roofHeight: currentRoofMaterial.length === null ? 0 : currentRoofMaterial.length,
+ roofHajebichi: currentRoofMaterial.hajebichi === null ? 0 : currentRoofMaterial.hajebichi,
+ roofGap: currentRoofMaterial.raftBaseCd === null ? 'HEI_455' : currentRoofMaterial.raftBaseCd,
+ roofLayout: roofLayout,
+ },
+ })
+ }, [currentRoofMaterial, roofLayout, basicSetting.roofSizeSet, basicSetting.roofAngleSet])
+
// Function to update the roofType and corresponding values
const handleRoofTypeChange = (value) => {
const selectedRoofMaterial = roofMaterials.find((roof) => roof.roofMatlCd === value)
@@ -71,8 +95,12 @@ export default function PlacementShapeSetting({ id, pos = { x: 50, y: 180 }, set
layout: roofLayout,
}
- const addedRoofs = []
- addedRoofs.push(roofInfo)
+ const newAddedRoofs = [...addedRoofs]
+ if (addedRoofs.length === 1) {
+ newAddedRoofs[0] = roofInfo
+
+ setAddedRoofs(newAddedRoofs)
+ }
console.log('save Info', {
...basicSetting,
@@ -80,7 +108,6 @@ export default function PlacementShapeSetting({ id, pos = { x: 50, y: 180 }, set
// 선택된 지붕재 정보
roofInfo,
},
- roofs: addedRoofs,
roofsData: {
roofApply: true,
roofSeq: 1,
@@ -92,6 +119,7 @@ export default function PlacementShapeSetting({ id, pos = { x: 50, y: 180 }, set
roofLayout: roofLayout,
},
})
+
setBasicSettings({
...basicSetting,
selectedRoofMaterial: {
@@ -100,6 +128,7 @@ export default function PlacementShapeSetting({ id, pos = { x: 50, y: 180 }, set
},
roofs: addedRoofs,
})
+
basicSettingSave()
}
diff --git a/src/components/floor-plan/modal/roofAllocation/RoofAllocationSetting.jsx b/src/components/floor-plan/modal/roofAllocation/RoofAllocationSetting.jsx
index 5dda26f7..3a485b0e 100644
--- a/src/components/floor-plan/modal/roofAllocation/RoofAllocationSetting.jsx
+++ b/src/components/floor-plan/modal/roofAllocation/RoofAllocationSetting.jsx
@@ -51,6 +51,7 @@ export default function RoofAllocationSetting(props) {
{getMessage('modal.roof.alloc.select.roof.material')}
{
@@ -88,7 +89,7 @@ export default function RoofAllocationSetting(props) {
r.id === roof.id)}
+ title={roofMaterials.find((r) => r.id === roof.id).name}
onChange={(e) => handleChangeRoofMaterial(e, index)}
/>
diff --git a/src/hooks/option/useCanvasSetting.js b/src/hooks/option/useCanvasSetting.js
index 35d304c9..0af5a95f 100644
--- a/src/hooks/option/useCanvasSetting.js
+++ b/src/hooks/option/useCanvasSetting.js
@@ -22,6 +22,7 @@ import {
settingsState,
roofMaterialsAtom,
selectedRoofMaterialSelector,
+ addedRoofsState,
} from '@/store/settingAtom'
import { POLYGON_TYPE } from '@/common/common'
import { globalFontAtom } from '@/store/fontAtom'
@@ -97,6 +98,7 @@ export function useCanvasSetting() {
const [basicSetting, setBasicSettings] = useRecoilState(basicSettingState)
const { getRoofMaterialList, getModuleTypeItemList } = useMasterController()
const [roofMaterials, setRoofMaterials] = useRecoilState(roofMaterialsAtom)
+ const [addedRoofs, setAddedRoofs] = useRecoilState(addedRoofsState)
const SelectOptions = [
{ id: 1, name: getMessage('modal.canvas.setting.grid.dot.line.setting.line.origin'), value: 1 },
@@ -129,7 +131,7 @@ export function useCanvasSetting() {
return
}
const { data } = await getRoofMaterialList()
-
+
const roofLists = data.map((item, idx) => ({
...item,
id: item.roofMatlCd,
@@ -144,9 +146,13 @@ export function useCanvasSetting() {
}))
setRoofMaterials(roofLists)
const selectedRoofMaterial = roofLists[0]
- const addRoofs = []
- addRoofs.push({ ...selectedRoofMaterial, selected: true })
- setBasicSettings({ ...basicSetting, roofMaterials: selectedRoofMaterial, roofs: addRoofs })
+
+ if (addedRoofs.length === 0) {
+ const newAddedRoofs = []
+ newAddedRoofs.push({ ...selectedRoofMaterial, selected: true })
+ setAddedRoofs(newAddedRoofs)
+ }
+ setBasicSettings({ ...basicSetting, roofMaterials: selectedRoofMaterial })
}
useEffect(() => {
@@ -262,73 +268,78 @@ export function useCanvasSetting() {
console.log('fetchBasicSettings res ', res)
//if (res.length == 0) return
- let roofsRow = {}
- let roofsArray = {}
+ let roofsRow = {}
+ let roofsArray = {}
- if (res.length > 0) {
- roofsRow = res.map((item) => {
- return {
- roofSizeSet: item.roofSizeSet,
- roofAngleSet: item.roofAngleSet,
+ if (res.length > 0) {
+ roofsRow = res.map((item) => {
+ return {
+ roofSizeSet: item.roofSizeSet,
+ roofAngleSet: item.roofAngleSet,
+ }
+
+ roofsArray = {
+ roofApply: true,
+ roofSeq: 1,
+ roofMatlCd: 'ROOF_ID_WA_53A',
+ roofWidth: 265,
+ roofHeight: 235,
+ roofHajebichi: 0,
+ roofGap: 'HEI_455',
+ roofLayout: 'P',
+ }
+ })
+ } else {
+ roofsRow = [
+ {
+ roofSizeSet: 1,
+ roofAngleSet: 'slope',
+ },
+ ]
+
+ roofsArray = [
+ {
+ roofApply: true,
+ roofSeq: 1,
+ roofMatlCd: 'ROOF_ID_WA_53A',
+ roofWidth: 265,
+ roofHeight: 235,
+ roofHajebichi: 0,
+ roofGap: 'HEI_455',
+ roofLayout: 'P',
+ },
+ ]
+ }
+
+ // 나머지 데이터와 함께 'roofs' 배열을 patternData에 넣음
+ const patternData = {
+ roofSizeSet: roofsRow[0].roofSizeSet,
+ roofAngleSet: roofsRow[0].roofAngleSet,
+ roofs: roofsArray, // 만들어진 roofs 배열
+ }
+
+ console.log('patternData', patternData)
+
+ // 데이터 설정
+ //setBasicSettings({ ...basicSetting, roofSizeSet: roofsRow[0].roofSizeSet, roofAngleSet: roofsRow[0].roofAngleSet, roofsData: roofsArray})
+ const addRoofs = []
+ roofMaterials.map((material) => {
+ if (material.id === roofsArray[0].roofMatlCd) {
+ //setRoofMaterials({ ...roofMaterials, layout: roofsArray[0].roofLayout })
+ addRoofs.push({ ...material, selected: true, layout: roofsArray[0].roofLayout })
+ setBasicSettings({
+ ...basicSetting,
+ roofMaterials: material,
+ roofs: addRoofs,
+ roofSizeSet: roofsRow[0].roofSizeSet,
+ roofAngleSet: roofsRow[0].roofAngleSet,
+ roofsData: roofsArray,
+ })
}
})
- roofsArray = res.map((item) => {
- return {
- roofApply: item.roofApply === '' || item.roofApply === false ? false : true,
- roofSeq: item.roofSeq,
- roofMatlCd: item.roofMatlCd,
- roofWidth: item.roofWidth,
- roofHeight: item.roofHeight,
- roofHajebichi: item.roofHajebichi,
- roofGap: item.roofGap,
- roofLayout: item.roofLayout,
- }
- })
-
- } else {
-
- roofsRow = [{
- roofSizeSet: 1,
- roofAngleSet: 'slope',
- }]
-
- roofsArray = [{
- roofApply: true,
- roofSeq: 1,
- roofMatlCd: 'ROOF_ID_WA_53A',
- roofWidth: 265,
- roofHeight: 235,
- roofHajebichi: 0,
- roofGap: 'HEI_455',
- roofLayout: 'P',
- }]
- }
-
- // 나머지 데이터와 함께 'roofs' 배열을 patternData에 넣음
- const patternData = {
- roofSizeSet: roofsRow[0].roofSizeSet,
- roofAngleSet: roofsRow[0].roofAngleSet,
- roofs: roofsArray, // 만들어진 roofs 배열
- }
-
- console.log('patternData', patternData)
-
- // 데이터 설정
- //setBasicSettings({ ...basicSetting, roofSizeSet: roofsRow[0].roofSizeSet, roofAngleSet: roofsRow[0].roofAngleSet, roofsData: roofsArray})
- const addRoofs = []
- roofMaterials.map((material) => {
- if (material.id === roofsArray[0].roofMatlCd) {
- //setRoofMaterials({ ...roofMaterials, layout: roofsArray[0].roofLayout })
- addRoofs.push({ ...material, selected: true, layout: roofsArray[0].roofLayout })
- setBasicSettings({ ...basicSetting, roofMaterials: material
- , roofs: addRoofs
- , roofSizeSet: roofsRow[0].roofSizeSet
- , roofAngleSet: roofsRow[0].roofAngleSet
- , roofsData: roofsArray })
- }
- })
-
+ // 데이터 설정
+ setBasicSettings({ ...basicSetting, roofSizeSet: roofsRow[0].roofSizeSet, roofAngleSet: roofsRow[0].roofAngleSet, roofsData: roofsArray })
})
} catch (error) {
console.error('Data fetching error:', error)
@@ -347,22 +358,24 @@ export function useCanvasSetting() {
objectNo: correntObjectNo,
roofSizeSet: basicSetting.roofSizeSet,
roofAngleSet: basicSetting.roofAngleSet,
- roofMaterialsAddList: [{
- roofApply: true,
- roofSeq: 1,
- roofMatlCd: basicSetting.roofsData.roofMatlCd === null ? 'ROOF_ID_WA_53A' : basicSetting.roofsData.roofMatlCd,
- roofWidth: basicSetting.roofsData.roofWidth === null ? 0 : basicSetting.roofsData.roofWidth,
- roofHeight: basicSetting.roofsData.roofHeight === null ? 0 : basicSetting.roofsData.roofHeight,
- roofHajebichi: basicSetting.roofsData.roofHajebichi === null ? 0 : basicSetting.roofsData.roofHajebichi,
- roofGap: basicSetting.roofsData.roofGap === null ? 'HEI_455' : basicSetting.roofsData.roofGap,
- roofLayout: basicSetting.roofsData.roofLayout,
- }],
+ roofMaterialsAddList: [
+ {
+ roofApply: true,
+ roofSeq: 1,
+ roofMatlCd: basicSetting.roofsData.roofMatlCd === null ? 'ROOF_ID_WA_53A' : basicSetting.roofsData.roofMatlCd,
+ roofWidth: basicSetting.roofsData.roofWidth === null ? 0 : basicSetting.roofsData.roofWidth,
+ roofHeight: basicSetting.roofsData.roofHeight === null ? 0 : basicSetting.roofsData.roofHeight,
+ roofHajebichi: basicSetting.roofsData.roofHajebichi === null ? 0 : basicSetting.roofsData.roofHajebichi,
+ roofGap: basicSetting.roofsData.roofGap === null ? 'HEI_455' : basicSetting.roofsData.roofGap,
+ roofLayout: basicSetting.roofsData.roofLayout,
+ },
+ ],
}
console.log('patternData 55', patternData)
await post({ url: `/api/canvas-management/canvas-basic-settings`, data: patternData }).then((res) => {
- swalFire({ text: getMessage(res.returnMessage) })
+ swalFire({ text: getMessage(res.returnMessage) })
})
//Recoil 설정
@@ -746,5 +759,7 @@ export function useCanvasSetting() {
setSettingsData,
settingsDataSave,
setSettingsDataSave,
+ addedRoofs,
+ setAddedRoofs,
}
}
diff --git a/src/hooks/roofcover/useRoofAllocationSetting.js b/src/hooks/roofcover/useRoofAllocationSetting.js
index 6b9ce8af..83242d2e 100644
--- a/src/hooks/roofcover/useRoofAllocationSetting.js
+++ b/src/hooks/roofcover/useRoofAllocationSetting.js
@@ -3,7 +3,7 @@ import { canvasState, currentMenuState, currentObjectState } from '@/store/canva
import { useEffect, useRef, useState } from 'react'
import { useSwal } from '@/hooks/useSwal'
import { usePolygon } from '@/hooks/usePolygon'
-import { basicSettingState, roofDisplaySelector, roofMaterialsSelector, selectedRoofMaterialSelector } from '@/store/settingAtom'
+import { addedRoofsState, basicSettingState, roofDisplaySelector, roofMaterialsSelector, selectedRoofMaterialSelector } from '@/store/settingAtom'
import { usePopup } from '@/hooks/usePopup'
import { POLYGON_TYPE } from '@/common/common'
import { v4 as uuidv4 } from 'uuid'
@@ -30,7 +30,7 @@ export function useRoofAllocationSetting(id) {
const selectedRoofMaterial = useRecoilValue(selectedRoofMaterialSelector)
const [basicSetting, setBasicSetting] = useRecoilState(basicSettingState)
const [currentRoofMaterial, setCurrentRoofMaterial] = useState(roofMaterials[0]) // 팝업 내 기준 지붕재
- const [roofList, setRoofList] = useState(basicSetting.roofs) // 배치면 초기설정에서 선택한 지붕재 배열
+ const [roofList, setRoofList] = useRecoilState(addedRoofsState) // 배치면 초기설정에서 선택한 지붕재 배열
const [editingLines, setEditingLines] = useState([])
const isFirstRef = useRef(0)
diff --git a/src/store/settingAtom.js b/src/store/settingAtom.js
index 02c8d0c8..8d309263 100644
--- a/src/store/settingAtom.js
+++ b/src/store/settingAtom.js
@@ -209,6 +209,11 @@ export const basicSettingState = atom({
dangerouslyAllowMutability: true,
})
+export const addedRoofsState = atom({
+ key: 'addedRoofsState',
+ default: [],
+})
+
// db에 등록된 지붕재 목록
export const roofMaterialsAtom = atom({
key: 'roofMaterialState',