모듈 선택 저장 로직 관련 작업

This commit is contained in:
lelalela 2025-01-17 13:01:29 +09:00
parent 5e62a3492f
commit 6e5b4d65d2
5 changed files with 19 additions and 31 deletions

View File

@ -13,6 +13,7 @@ export default function Module({ setTabNum }) {
const { getMessage } = useMessage() const { getMessage } = useMessage()
const addedRoofs = useRecoilValue(addedRoofsState) // const addedRoofs = useRecoilValue(addedRoofsState) //
const [roofTab, setRoofTab] = useState(0) // const [roofTab, setRoofTab] = useState(0) //
const currentCanvasPlan = useRecoilValue(currentCanvasPlanState)
const { const {
moduleSelectionInitParams, moduleSelectionInitParams,
@ -40,18 +41,10 @@ export default function Module({ setTabNum }) {
const [moduleSelectionData, setModuleSelectionData] = useRecoilState(moduleSelectionDataState) // const [moduleSelectionData, setModuleSelectionData] = useRecoilState(moduleSelectionDataState) //
const [moduleSelectionDataPlanList, setModuleSelectionDataPlanList] = useRecoilState(moduleSelectionDataPlanListState) const [moduleSelectionDataPlanList, setModuleSelectionDataPlanList] = useRecoilState(moduleSelectionDataPlanListState)
const currentCanvasPlan = useRecoilValue(currentCanvasPlanState)
const [tempModuleSelectionData, setTempModuleSelectionData] = useReducer((prevState, nextState) => { const [tempModuleSelectionData, setTempModuleSelectionData] = useReducer((prevState, nextState) => {
return { ...prevState, ...nextState } return { ...prevState, ...nextState }
}, moduleSelectionData) }, moduleSelectionData)
useEffect(() => {
if (moduleSelectionDataPlanList) {
setModuleSelectionData(moduleSelectionDataPlanList[currentCanvasPlan.id])
}
}, [])
useEffect(() => { useEffect(() => {
handleChangeInstallHeight(debouncedInstallHeight) handleChangeInstallHeight(debouncedInstallHeight)
}, [debouncedInstallHeight]) }, [debouncedInstallHeight])
@ -118,9 +111,9 @@ export default function Module({ setTabNum }) {
</thead> </thead>
<tbody> <tbody>
{selectedModules.itemList && {selectedModules.itemList &&
selectedModules.itemList.map((row) => ( selectedModules.itemList.map((row, index) => (
<> <>
<tr> <tr key={index}>
<td> <td>
<div className="color-wrap"> <div className="color-wrap">
<span className="color-box" style={{ backgroundColor: row.color }}></span> <span className="color-box" style={{ backgroundColor: row.color }}></span>
@ -242,8 +235,7 @@ export default function Module({ setTabNum }) {
tempModuleSelectionData={tempModuleSelectionData} tempModuleSelectionData={tempModuleSelectionData}
setTempModuleSelectionData={setTempModuleSelectionData} setTempModuleSelectionData={setTempModuleSelectionData}
selectedModule={selectedModules} selectedModule={selectedModules}
moduleSelectionDataPlanList={moduleSelectionDataPlanList} setModuleSelectionData={setModuleSelectionData}
setModuleSelectionDataPlanList={setModuleSelectionDataPlanList}
/> />
</div> </div>
))} ))}

View File

@ -15,8 +15,7 @@ export default function ModuleTabContents({
tempModuleSelectionData, tempModuleSelectionData,
setTempModuleSelectionData, setTempModuleSelectionData,
selectedModule, selectedModule,
moduleSelectionDataPlanList, setModuleSelectionData,
setModuleSelectionDataPlanList,
}) { }) {
const { getMessage } = useMessage() const { getMessage } = useMessage()
const [roofMaterial, setRoofMaterial] = useState(addRoof) //` const [roofMaterial, setRoofMaterial] = useState(addRoof) //`
@ -164,8 +163,6 @@ export default function ModuleTabContents({
} }
useEffect(() => { useEffect(() => {
console.log('tempModuleSelectionData', tempModuleSelectionData)
if (isObjectNotEmpty(selectedRoofBase) && isObjectNotEmpty(selectedConstruction)) { if (isObjectNotEmpty(selectedRoofBase) && isObjectNotEmpty(selectedConstruction)) {
const newRoofConstructions = { const newRoofConstructions = {
roofIndex: roofTab, roofIndex: roofTab,
@ -246,7 +243,6 @@ export default function ModuleTabContents({
if (isModuleLoaded) { if (isModuleLoaded) {
setTrestleParams({ moduleTpCd: moduleSelectionInitParams.moduleTpCd, roofMatlCd: addRoof.roofMatlCd, raftBaseCd: addRoof.raftBaseCd }) setTrestleParams({ moduleTpCd: moduleSelectionInitParams.moduleTpCd, roofMatlCd: addRoof.roofMatlCd, raftBaseCd: addRoof.raftBaseCd })
setConstructionList([]) setConstructionList([])
setTempModuleSelectionData({ common: moduleSelectionInitParams, module: selectedModule })
if (isObjectNotEmpty(moduleConstructionSelectionData)) { if (isObjectNotEmpty(moduleConstructionSelectionData)) {
// //
@ -255,11 +251,11 @@ export default function ModuleTabContents({
setCvrChecked(moduleConstructionSelectionData.construction.setupCover) setCvrChecked(moduleConstructionSelectionData.construction.setupCover)
setSnowGdChecked(moduleConstructionSelectionData.construction.setupSnowCover) setSnowGdChecked(moduleConstructionSelectionData.construction.setupSnowCover)
setIsExistData(true) setIsExistData(true)
setTempModuleSelectionData({ roofConstructions: [{ ...moduleConstructionSelectionData }] })
} }
} }
} }
setTempModuleSelectionData({ common: moduleSelectionInitParams, module: selectedModule })
}, [moduleSelectionInitParams]) }, [moduleSelectionInitParams])
useEffect(() => { useEffect(() => {
@ -288,8 +284,8 @@ export default function ModuleTabContents({
useEffect(() => { useEffect(() => {
if (isObjectNotEmpty(tempModuleSelectionData)) { if (isObjectNotEmpty(tempModuleSelectionData)) {
setModuleSelectionDataPlanList({ ...moduleSelectionDataPlanList, [currentCanvasPlan.id]: tempModuleSelectionData }) // setModuleSelectionDataPlanList({ ...moduleSelectionDataPlanList, [currentCanvasPlan.id]: tempModuleSelectionData })
// setModuleSelectionData(tempModuleSelectionData) setModuleSelectionData(tempModuleSelectionData)
} }
}, [tempModuleSelectionData]) }, [tempModuleSelectionData])

View File

@ -3,7 +3,7 @@ import { useMessage } from '@/hooks/useMessage'
import { useModuleBasicSetting } from '@/hooks/module/useModuleBasicSetting' import { useModuleBasicSetting } from '@/hooks/module/useModuleBasicSetting'
import { checkedModuleState, currentCanvasPlanState } from '@/store/canvasAtom' import { checkedModuleState, currentCanvasPlanState } from '@/store/canvasAtom'
import { useRecoilValue, useSetRecoilState } from 'recoil' import { useRecoilValue, useSetRecoilState } from 'recoil'
import { moduleSelectionDataPlanListState } from '@/store/selectedModuleOptions' import { moduleSelectionDataPlanListState, moduleSelectionDataState } from '@/store/selectedModuleOptions'
import { useModulePlace } from '@/hooks/module/useModulePlace' import { useModulePlace } from '@/hooks/module/useModulePlace'
const Placement = forwardRef((props, refs) => { const Placement = forwardRef((props, refs) => {
@ -21,6 +21,7 @@ const Placement = forwardRef((props, refs) => {
const setCheckedModules = useSetRecoilState(checkedModuleState) const setCheckedModules = useSetRecoilState(checkedModuleState)
const moduleSelectionDataPlanList = useRecoilValue(moduleSelectionDataPlanListState) const moduleSelectionDataPlanList = useRecoilValue(moduleSelectionDataPlanListState)
const moduleSelectionData = useRecoilValue(moduleSelectionDataState)
// //
useEffect(() => { useEffect(() => {
@ -28,7 +29,7 @@ const Placement = forwardRef((props, refs) => {
if (moduleSelectionDataPlanList) { if (moduleSelectionDataPlanList) {
//1 //1
const isChidroriValue = moduleSelectionDataPlanList[currentCanvasPlan.id].roofConstructions.some((item) => item.construction.plvrYn === 'N') const isChidroriValue = moduleSelectionData.roofConstructions.some((item) => item.construction.plvrYn === 'N')
if (isChidroriValue) { if (isChidroriValue) {
setIsChidoriNotAble(true) setIsChidoriNotAble(true)
} }

View File

@ -850,7 +850,7 @@ export function useModuleBasicSetting() {
leftMargin = j === 0 ? 0 : intvVer * j leftMargin = j === 0 ? 0 : intvVer * j
chidoriLength = 0 chidoriLength = 0
if (isChidori) { if (isChidori) {
chidoriLength = i % 2 === 0 ? 0 : height / 2 - intvHor chidoriLength = i % 2 === 0 ? 0 : height / 2
} }
square = [ square = [

View File

@ -1,12 +1,13 @@
import { useEffect, useState } from 'react' import { useEffect, useState } from 'react'
import { useRecoilState, useRecoilValue } from 'recoil' import { useRecoilState, useRecoilValue } from 'recoil'
import { moduleSelectionDataPlanListState, selectedModuleState } from '@/store/selectedModuleOptions' import { moduleSelectionDataPlanListState, moduleSelectionDataState, selectedModuleState } from '@/store/selectedModuleOptions'
import { useMasterController } from '@/hooks/common/useMasterController' import { useMasterController } from '@/hooks/common/useMasterController'
import { canvasState, currentCanvasPlanState } from '@/store/canvasAtom' import { canvasState, currentCanvasPlanState } from '@/store/canvasAtom'
export function useModulePlace() { export function useModulePlace() {
const canvas = useRecoilValue(canvasState) const canvas = useRecoilValue(canvasState)
const moduleSelectionDataPlanList = useRecoilValue(moduleSelectionDataPlanListState) //다음으로 넘어가는 최종 데이터 const moduleSelectionDataPlanList = useRecoilValue(moduleSelectionDataPlanListState) //다음으로 넘어가는 최종 데이터
const moduleSelectionData = useRecoilValue(moduleSelectionDataState)
const currentCanvasPlan = useRecoilValue(currentCanvasPlanState) const currentCanvasPlan = useRecoilValue(currentCanvasPlanState)
const [trestleDetailParams, setTrestleDetailParams] = useState([]) const [trestleDetailParams, setTrestleDetailParams] = useState([])
const [trestleDetailList, setTrestleDetailList] = useState([]) const [trestleDetailList, setTrestleDetailList] = useState([])
@ -14,9 +15,9 @@ export function useModulePlace() {
const { getTrestleDetailList } = useMasterController() const { getTrestleDetailList } = useMasterController()
useEffect(() => { useEffect(() => {
if (moduleSelectionDataPlanList) { if (moduleSelectionData) {
const common = moduleSelectionDataPlanList[currentCanvasPlan.id].common const common = moduleSelectionData.common
const roofConstructions = moduleSelectionDataPlanList[currentCanvasPlan.id].roofConstructions const roofConstructions = moduleSelectionData.roofConstructions
const listParams = roofConstructions.map((item) => { const listParams = roofConstructions.map((item) => {
return { return {
@ -35,7 +36,7 @@ export function useModulePlace() {
}) })
setTrestleDetailParams(listParams) setTrestleDetailParams(listParams)
} }
}, [moduleSelectionDataPlanList]) }, [moduleSelectionData])
const getTrestleDetailListData = async () => { const getTrestleDetailListData = async () => {
const trestleDetailList = await getTrestleDetailList(trestleDetailParams) const trestleDetailList = await getTrestleDetailList(trestleDetailParams)
@ -49,8 +50,6 @@ export function useModulePlace() {
}, [trestleDetailParams]) }, [trestleDetailParams])
useEffect(() => { useEffect(() => {
console.log('🚀 ~ useModulePlace ~ trestleDetailList:', trestleDetailList)
//지붕을 가져옴 //지붕을 가져옴
canvas canvas
.getObjects() .getObjects()