diff --git a/src/components/floor-plan/modal/basic/step/Module.jsx b/src/components/floor-plan/modal/basic/step/Module.jsx index 78189124..06bf2b8f 100644 --- a/src/components/floor-plan/modal/basic/step/Module.jsx +++ b/src/components/floor-plan/modal/basic/step/Module.jsx @@ -1,13 +1,13 @@ import { useEffect, useState, useReducer } from 'react' import { useRecoilValue, useRecoilState } from 'recoil' import { addedRoofsState } from '@/store/settingAtom' -import { canvasSettingState, pitchSelector } from '@/store/canvasAtom' +import { canvasSettingState, currentCanvasPlanState, pitchSelector } from '@/store/canvasAtom' import { useMessage } from '@/hooks/useMessage' import QSelectBox from '@/components/common/select/QSelectBox' import { useModuleSelection } from '@/hooks/module/useModuleSelection' import ModuleTabContents from './ModuleTabContents' import { useDebounceCallback, useDebounceValue } from 'usehooks-ts' -import { moduleSelectionDataState } from '@/store/selectedModuleOptions' +import { moduleSelectionDataPlanListState, moduleSelectionDataState } from '@/store/selectedModuleOptions' export default function Module({ setTabNum }) { const { getMessage } = useMessage() @@ -38,6 +38,9 @@ export default function Module({ setTabNum }) { const [debouncedVerticalSnowCover] = useDebounceValue(inputVerticalSnowCover, 500) const [moduleSelectionData, setModuleSelectionData] = useRecoilState(moduleSelectionDataState) //다음으로 넘어가는 최종 데이터 + const [moduleSelectionDataPlanList, setModuleSelectionDataPlanList] = useRecoilState(moduleSelectionDataPlanListState) + + const [currentCanvasPlan, setCurrentCanvasPlan] = useRecoilState(currentCanvasPlanState) const [tempModuleSelectionData, setTempModuleSelectionData] = useReducer((prevState, nextState) => { return { ...prevState, ...nextState } @@ -69,11 +72,15 @@ export default function Module({ setTabNum }) { rows: [], } + useEffect(() => { + console.log('currentCanvasPlan', currentCanvasPlan) + }, []) + useEffect(() => {}, [roofTab]) useEffect(() => { - console.log('moduleSelectionData', moduleSelectionData) - }, []) + setModuleSelectionDataPlanList({ ...moduleSelectionDataPlanList, [currentCanvasPlan.id]: moduleSelectionData }) + }, [moduleSelectionData]) const handleRoofTab = (tab) => { setRoofTab(tab) @@ -239,6 +246,7 @@ export default function Module({ setTabNum }) { setModuleSelectionData={setModuleSelectionData} tempModuleSelectionData={tempModuleSelectionData} setTempModuleSelectionData={setTempModuleSelectionData} + selectedModule={selectedModules} /> ))} diff --git a/src/components/floor-plan/modal/basic/step/ModuleTabContents.jsx b/src/components/floor-plan/modal/basic/step/ModuleTabContents.jsx index 7fcbc0bb..3fee925e 100644 --- a/src/components/floor-plan/modal/basic/step/ModuleTabContents.jsx +++ b/src/components/floor-plan/modal/basic/step/ModuleTabContents.jsx @@ -15,6 +15,7 @@ export default function ModuleTabContents({ setModuleSelectionData, tempModuleSelectionData, setTempModuleSelectionData, + selectedModule, }) { const { getMessage } = useMessage() const [roofMaterial, setRoofMaterial] = useState(addRoof) //지붕재` @@ -242,6 +243,7 @@ export default function ModuleTabContents({ setConstructionList([]) if (isObjectNotEmpty(moduleConstructionSelectionData)) { + //기존에 데이터가 있으면 setConstructionParams({ ...moduleConstructionSelectionData.trestle, constMthdCd: '', roofBaseCd: '' }) setRoofBaseParams({ ...moduleConstructionSelectionData.trestle, roofBaseCd: '' }) setCvrChecked(moduleConstructionSelectionData.construction.setupCover) @@ -251,7 +253,7 @@ export default function ModuleTabContents({ } } - setTempModuleSelectionData({ common: moduleSelectionInitParams }) + setTempModuleSelectionData({ common: moduleSelectionInitParams, module: selectedModule }) }, [moduleSelectionInitParams]) useEffect(() => { diff --git a/src/components/floor-plan/modal/basic/step/Placement.jsx b/src/components/floor-plan/modal/basic/step/Placement.jsx index 8e48a42c..d400881a 100644 --- a/src/components/floor-plan/modal/basic/step/Placement.jsx +++ b/src/components/floor-plan/modal/basic/step/Placement.jsx @@ -8,7 +8,9 @@ import { useModulePlace } from '@/hooks/module/useModulePlace' const Placement = forwardRef((props, refs) => { const { getMessage } = useMessage() - const [isChidori, setIsChidori] = useState('false') + const [isChidori, setIsChidori] = useState(false) + const [isChidoriNotAble, setIsChidoriNotAble] = useState(false) + const [setupLocation, setSetupLocation] = useState('center') const [isMaxSetup, setIsMaxSetup] = useState('false') const [selectedItems, setSelectedItems] = useState({}) @@ -21,9 +23,13 @@ const Placement = forwardRef((props, refs) => { //모듈 배치면 생성 useEffect(() => { - console.log('🚀 ~ Placement ~ moduleSelectionData:', moduleSelectionData) - console.log('🚀 ~ Placement ~ selectedModules:', selectedModules) makeModuleInstArea() + + //1개라도 치도리 불가가 있으면 치도리 불가 + const isChidroriValue = moduleSelectionData.roofConstructions.some((item) => item.construction.plvrYn === 'N') + if (isChidroriValue) { + setIsChidoriNotAble(true) + } }, []) //체크된 모듈 데이터 @@ -127,19 +133,19 @@ const Placement = forwardRef((props, refs) => {
- +
- +
diff --git a/src/hooks/module/useModuleBasicSetting.js b/src/hooks/module/useModuleBasicSetting.js index eff37226..965a1045 100644 --- a/src/hooks/module/useModuleBasicSetting.js +++ b/src/hooks/module/useModuleBasicSetting.js @@ -479,7 +479,8 @@ export function useModuleBasicSetting() { //안겹치면 넣는다 // tempModule.setCoords() moduleOptions.surfaceId = trestlePolygon.id - let manualModule = new QPolygon(tempModule.points, { ...moduleOptions }) + + let manualModule = new QPolygon(tempModule.points, { ...moduleOptions, moduleInfo: checkedModule[0] }) canvas?.add(manualModule) manualDrawModules.push(manualModule) } else { @@ -747,7 +748,7 @@ export function useModuleBasicSetting() { leftMargin = i === 0 ? 0 : intvHor * i chidoriLength = 0 if (isChidori) { - chidoriLength = j % 2 === 0 ? 0 : width / 2 + chidoriLength = j % 2 === 0 ? 0 : width / 2 - intvHor } square = [ @@ -762,7 +763,7 @@ export function useModuleBasicSetting() { let turfCoordnates = squarePolygon.geometry.coordinates[0].slice(0, -1) let points = turfCoordnates.map((coord) => ({ x: coord[0], y: coord[1] })) - moduleOptions = { ...moduleOptions, fill: module.color, surfaceId: moduleSetupSurface.id } + moduleOptions = { ...moduleOptions, fill: module.color, surfaceId: moduleSetupSurface.id, moduleInfo: module } let tempModule = new QPolygon(points, { ...moduleOptions, turfPoints: squarePolygon }) let disjointFromTrestle = checkModuleDisjointSurface(squarePolygon, polygonToTurfPolygon(moduleSetupSurface, true)) @@ -848,7 +849,7 @@ export function useModuleBasicSetting() { leftMargin = j === 0 ? 0 : intvVer * j chidoriLength = 0 if (isChidori) { - chidoriLength = i % 2 === 0 ? 0 : height / 2 + chidoriLength = i % 2 === 0 ? 0 : height / 2 - intvHor } square = [ @@ -864,7 +865,7 @@ export function useModuleBasicSetting() { let points = turfCoordnates.map((coord) => ({ x: coord[0], y: coord[1] })) // if (disjointFromTrestle && isDisjoint) { - moduleOptions = { ...moduleOptions, fill: module.color, surfaceId: moduleSetupSurface.id } + moduleOptions = { ...moduleOptions, fill: module.color, surfaceId: moduleSetupSurface.id, moduleInfo: module } let tempModule = new QPolygon(points, { ...moduleOptions, turfPoints: squarePolygon }) let disjointFromTrestle = checkModuleDisjointSurface(squarePolygon, polygonToTurfPolygon(moduleSetupSurface, true)) let isDisjoint = checkModuleDisjointObjects(squarePolygon, containsBatchObjects) @@ -959,7 +960,7 @@ export function useModuleBasicSetting() { leftMargin = i === 0 ? 0 : intvHor * i chidoriLength = 0 if (isChidori) { - chidoriLength = j % 2 === 0 ? 0 : width / 2 + chidoriLength = j % 2 === 0 ? 0 : width / 2 - intvHor } square = [ @@ -975,7 +976,7 @@ export function useModuleBasicSetting() { let points = turfCoordnates.map((coord) => ({ x: coord[0], y: coord[1] })) // if (disjointFromTrestle && isDisjoint) { - moduleOptions = { ...moduleOptions, fill: module.color, surfaceId: moduleSetupSurface.id } + moduleOptions = { ...moduleOptions, fill: module.color, surfaceId: moduleSetupSurface.id, moduleInfo: module } let tempModule = new QPolygon(points, { ...moduleOptions, turfPoints: squarePolygon }) let disjointFromTrestle = checkModuleDisjointSurface(squarePolygon, polygonToTurfPolygon(moduleSetupSurface, true)) @@ -1059,7 +1060,7 @@ export function useModuleBasicSetting() { chidoriLength = 0 if (isChidori) { - chidoriLength = i % 2 === 0 ? 0 : height / 2 + chidoriLength = i % 2 === 0 ? 0 : height / 2 - intvHor } square = [ @@ -1075,7 +1076,7 @@ export function useModuleBasicSetting() { let points = turfCoordnates.map((coord) => ({ x: coord[0], y: coord[1] })) // if (disjointFromTrestle && isDisjoint) { - moduleOptions = { ...moduleOptions, fill: module.color, surfaceId: moduleSetupSurface.id } + moduleOptions = { ...moduleOptions, fill: module.color, surfaceId: moduleSetupSurface.id, moduleInfo: module } let tempModule = new QPolygon(points, { ...moduleOptions, turfPoints: squarePolygon }) let disjointFromTrestle = checkModuleDisjointSurface(squarePolygon, polygonToTurfPolygon(moduleSetupSurface, true)) let isDisjoint = checkModuleDisjointObjects(squarePolygon, containsBatchObjects) diff --git a/src/hooks/module/useModulePlace.js b/src/hooks/module/useModulePlace.js index 856c7abb..d46f789f 100644 --- a/src/hooks/module/useModulePlace.js +++ b/src/hooks/module/useModulePlace.js @@ -12,10 +12,6 @@ export function useModulePlace() { const selectedModules = useRecoilValue(selectedModuleState) const { getTrestleDetailList } = useMasterController() - useEffect(() => { - console.log('🚀 ~ useModulePlace ~ moduleSelectionData:', moduleSelectionData) - }, []) - useEffect(() => { const common = moduleSelectionData.common const roofConstructions = moduleSelectionData.roofConstructions diff --git a/src/store/selectedModuleOptions.js b/src/store/selectedModuleOptions.js index faa979fd..b09c9294 100644 --- a/src/store/selectedModuleOptions.js +++ b/src/store/selectedModuleOptions.js @@ -85,3 +85,9 @@ export const moduleSelectionDataState = atom({ }, dangerouslyAllowMutability: true, }) + +export const moduleSelectionDataPlanListState = atom({ + key: 'moduleSelectionDataPlanListState', + default: {}, + dangerouslyAllowMutability: true, +})