diff --git a/src/components/floor-plan/modal/basic/BasicSetting.jsx b/src/components/floor-plan/modal/basic/BasicSetting.jsx index 49aabd0d..3200ac05 100644 --- a/src/components/floor-plan/modal/basic/BasicSetting.jsx +++ b/src/components/floor-plan/modal/basic/BasicSetting.jsx @@ -11,6 +11,10 @@ import { usePopup } from '@/hooks/usePopup' import { Orientation } from '@/components/floor-plan/modal/basic/step/Orientation' import { useModuleBasicSetting } from '@/hooks/module/useModuleBasicSetting' import { useEvent } from '@/hooks/useEvent' +import { moduleSelectionDataState } from '@/store/selectedModuleOptions' +import { addedRoofsState } from '@/store/settingAtom' +import { isObjectNotEmpty } from '@/util/common-utils' +import Swal from 'sweetalert2' export default function BasicSetting({ id, pos = { x: 50, y: 230 } }) { const { getMessage } = useMessage() @@ -20,13 +24,32 @@ export default function BasicSetting({ id, pos = { x: 50, y: 230 } }) { const orientationRef = useRef(null) const { initEvent } = useEvent() const [isManualModuleSetup, setIsManualModuleSetup] = useRecoilState(isManualModuleSetupState) + const moduleSelectionData = useRecoilValue(moduleSelectionDataState) + const addedRoofs = useRecoilValue(addedRoofsState) // const { initEvent } = useContext(EventContext) const { manualModuleSetup, autoModuleSetup, manualFlatroofModuleSetup, autoFlatroofModuleSetup } = useModuleBasicSetting() const handleBtnNextStep = () => { if (tabNum === 1) { orientationRef.current.handleNextStep() + } else if (tabNum === 2) { + if (!isObjectNotEmpty(moduleSelectionData.module)) { + Swal.fire({ + title: getMessage('module.not.found'), + icon: 'warning', + }) + return + } + + if (addedRoofs.length !== moduleSelectionData.roofConstructions.length) { + Swal.fire({ + title: getMessage('construction.length.difference'), + icon: 'warning', + }) + return + } } + setTabNum(tabNum + 1) } diff --git a/src/components/floor-plan/modal/basic/step/Module.jsx b/src/components/floor-plan/modal/basic/step/Module.jsx index b3dbb0d3..811b21d3 100644 --- a/src/components/floor-plan/modal/basic/step/Module.jsx +++ b/src/components/floor-plan/modal/basic/step/Module.jsx @@ -8,6 +8,7 @@ import { useModuleSelection } from '@/hooks/module/useModuleSelection' import ModuleTabContents from './ModuleTabContents' import { useDebounceValue } from 'usehooks-ts' import { moduleSelectionDataState } from '@/store/selectedModuleOptions' +import { useCanvasPopupStatusController } from '@/hooks/common/useCanvasPopupStatusController' export default function Module({ setTabNum }) { const { getMessage } = useMessage() @@ -31,8 +32,8 @@ export default function Module({ setTabNum }) { handleChangeVerticalSnowCover, } = useModuleSelection({ addedRoofs }) - const [inputInstallHeight, setInputInstallHeight] = useState(installHeight) - const [inputVerticalSnowCover, setInputVerticalSnowCover] = useState(verticalSnowCover) + const [inputInstallHeight, setInputInstallHeight] = useState()`` + const [inputVerticalSnowCover, setInputVerticalSnowCover] = useState() const [debouncedInstallHeight] = useDebounceValue(inputInstallHeight, 500) const [debouncedVerticalSnowCover] = useDebounceValue(inputVerticalSnowCover, 500) @@ -43,15 +44,31 @@ export default function Module({ setTabNum }) { }, moduleSelectionData) useEffect(() => { - setModuleSelectionData(tempModuleSelectionData) + if (installHeight) { + setInputInstallHeight(installHeight) + } + if (verticalSnowCover) { + setInputVerticalSnowCover(verticalSnowCover) + } + }, [installHeight, verticalSnowCover]) + + useEffect(() => { + if (tempModuleSelectionData) { + setModuleSelectionData(tempModuleSelectionData) + moduleSelectedDataTrigger(tempModuleSelectionData) + } }, [tempModuleSelectionData]) useEffect(() => { - handleChangeInstallHeight(debouncedInstallHeight) + if (debouncedInstallHeight) { + handleChangeInstallHeight(debouncedInstallHeight) + } }, [debouncedInstallHeight]) useEffect(() => { - handleChangeVerticalSnowCover(debouncedVerticalSnowCover) + if (debouncedVerticalSnowCover) { + handleChangeVerticalSnowCover(debouncedVerticalSnowCover) + } }, [debouncedVerticalSnowCover]) const moduleData = { @@ -71,6 +88,12 @@ export default function Module({ setTabNum }) { setRoofTab(tab) } + const { trigger: moduleSelectedDataTrigger } = useCanvasPopupStatusController(2) + + useEffect(() => { + console.log('moduleSelectionData', moduleSelectionData) + }, []) + return ( <>
diff --git a/src/components/floor-plan/modal/basic/step/ModuleTabContents.jsx b/src/components/floor-plan/modal/basic/step/ModuleTabContents.jsx index 30691d4e..9d644984 100644 --- a/src/components/floor-plan/modal/basic/step/ModuleTabContents.jsx +++ b/src/components/floor-plan/modal/basic/step/ModuleTabContents.jsx @@ -464,7 +464,7 @@ export default function ModuleTabContents({ addRoof, roofTab, tempModuleSelectio type="checkbox" id={`ch01_${roofTab}`} disabled={cvrYn === 'N' ? true : false} - defaultChecked={cvrChecked} + checked={cvrChecked} onChange={handleCvrChecked} /> @@ -474,7 +474,7 @@ export default function ModuleTabContents({ addRoof, roofTab, tempModuleSelectio type="checkbox" id={`ch02_${roofTab}`} disabled={snowGdPossYn === 'N' ? true : false} - defaultChecked={snowGdChecked} + checked={snowGdChecked} onChange={handleSnowGdChecked} /> diff --git a/src/hooks/common/useCanvasPopupStatusController.js b/src/hooks/common/useCanvasPopupStatusController.js index 4138c239..feddf30d 100644 --- a/src/hooks/common/useCanvasPopupStatusController.js +++ b/src/hooks/common/useCanvasPopupStatusController.js @@ -18,7 +18,7 @@ export function useCanvasPopupStatusController(param = 1) { const { getFetcher, postFetcher } = useAxios() const currentCanvasPlan = useRecoilValue(currentCanvasPlanState) - console.log('πŸš€ ~ Orientation ~ currentCanvasPlan:', currentCanvasPlan) + // console.log('πŸš€ ~ Orientation ~ currentCanvasPlan:', currentCanvasPlan) const { data: popupStatus, @@ -30,7 +30,7 @@ export function useCanvasPopupStatusController(param = 1) { ) useEffect(() => { - console.log('πŸš€ ~ useEffect ~ popupStatus:', popupStatus) + // console.log('πŸš€ ~ useEffect ~ popupStatus:', popupStatus) if (popupStatus) { switch (parseInt(popupStatus?.popupType)) { case 1: diff --git a/src/hooks/module/useModuleBasicSetting.js b/src/hooks/module/useModuleBasicSetting.js index 098ae26a..305dcda0 100644 --- a/src/hooks/module/useModuleBasicSetting.js +++ b/src/hooks/module/useModuleBasicSetting.js @@ -1308,13 +1308,13 @@ export function useModuleBasicSetting() { const pointX2 = coords[2].x + ((coords[2].y - top) / (coords[2].y - coords[1].y)) * (coords[1].x - coords[2].x) const pointY2 = top - const finalLine = new QLine([pointX1, pointY1, pointX2, pointY2], { - stroke: 'red', - strokeWidth: 1, - selectable: true, - }) - canvas?.add(finalLine) - canvas?.renderAll() + // const finalLine = new QLine([pointX1, pointY1, pointX2, pointY2], { + // stroke: 'red', + // strokeWidth: 1, + // selectable: true, + // }) + // canvas?.add(finalLine) + // canvas?.renderAll() let rtnObj //ν‰ν‰ν•˜λ©΄ @@ -1431,13 +1431,13 @@ export function useModuleBasicSetting() { const pointX2 = top const pointY2 = coords[2].y + ((coords[2].x - top) / (coords[2].x - coords[1].x)) * (coords[1].y - coords[2].y) - const finalLine = new QLine([pointX1, pointY1, pointX2, pointY2], { - stroke: 'red', - strokeWidth: 1, - selectable: true, - }) - canvas?.add(finalLine) - canvas?.renderAll() + // const finalLine = new QLine([pointX1, pointY1, pointX2, pointY2], { + // stroke: 'red', + // strokeWidth: 1, + // selectable: true, + // }) + // canvas?.add(finalLine) + // canvas?.renderAll() let rtnObj //ν‰ν‰ν•˜λ©΄ diff --git a/src/hooks/module/useModuleSelection.js b/src/hooks/module/useModuleSelection.js index 1b775fc6..6bd8ca3b 100644 --- a/src/hooks/module/useModuleSelection.js +++ b/src/hooks/module/useModuleSelection.js @@ -15,28 +15,37 @@ export function useModuleSelection(props) { const [selectedModules, setSelectedModules] = useRecoilState(selectedModuleState) //μ„ νƒλœ λͺ¨λ“ˆ const [selectedSurfaceType, setSelectedSurfaceType] = useState({}) //μ„ νƒλœ 면쑰도 - const [installHeight, setInstallHeight] = useState(managementState?.installHeight) //μ„€μΉ˜ 높이 + const [installHeight, setInstallHeight] = useState() //μ„€μΉ˜ 높이 const [standardWindSpeed, setStandardWindSpeed] = useState({}) //기쀀풍속 - const [verticalSnowCover, setVerticalSnowCover] = useState(managementState?.verticalSnowCover) //μˆ˜μ§μ μ„€λŸ‰ + const [verticalSnowCover, setVerticalSnowCover] = useState() //μˆ˜μ§μ μ„€λŸ‰ const [moduleSelectionInitParams, setModuleSelectionInitParams] = useRecoilState(moduleSelectionInitParamsState) //λͺ¨λ“ˆ κΈ°λ³Έ 데이터 ex) 면쑰도, 높이등등 const { getModuleTypeItemList } = useMasterController() const { findCommonCode } = useCommonCode() - //탭별 νŒŒλΌλ©”ν„° μ΄ˆκΈ°ν™” - useEffect(() => { + const bindInitData = () => { setInstallHeight(managementState?.installHeight) setStandardWindSpeed(managementState?.standardWindSpeedId) setVerticalSnowCover(managementState?.verticalSnowCover) setSelectedSurfaceType(managementState?.surfaceType) + } + //탭별 νŒŒλΌλ©”ν„° μ΄ˆκΈ°ν™” + useEffect(() => { + bindInitData() const initParams = { illuminationTp: managementState?.surfaceTypeValue, //면쑰도 instHt: managementState?.installHeight, //μ„€μΉ˜λ†’μ΄ stdWindSpeed: managementState?.standardWindSpeedId, //기쀀풍속 stdSnowLd: managementState?.verticalSnowCover, //κΈ°μ€€μ μ„€λŸ‰ } + + if (selectedModules) { + initParams.moduleTpCd = selectedModules.itemTp + initParams.moduleItemId = selectedModules.itemId + } + setModuleSelectionInitParams(initParams) }, [managementState]) @@ -64,9 +73,13 @@ export function useModuleSelection(props) { return } + console.log('managementState', managementState) + //μƒˆλ‘œκ³ μΉ¨μ‹œ 데이터 λ‚ μ•„κ°€λŠ”κ±° λ°©μ§€ - if (!managementState) { + if (managementState === null) { setManagementState(managementStateLoaded) + } else { + bindInitData() } getModuleData(roofsIds) @@ -101,12 +114,23 @@ export function useModuleSelection(props) { ...moduleSelectionInitParams, illuminationTp: option.clCode, }) + + setManagementState({ + ...managementState, + surfaceType: option.clCodeNm, + surfaceTypeValue: option.clCode, + }) } const handleChangeWindSpeed = (option) => { setModuleSelectionInitParams({ ...moduleSelectionInitParams, - surfaceType: option.clCode, + stdWindSpeed: option.clCode, + }) + + setManagementState({ + ...managementState, + standardWindSpeedId: option.clCode, }) } @@ -116,15 +140,24 @@ export function useModuleSelection(props) { ...moduleSelectionInitParams, instHt: option, }) + + setManagementState({ + ...managementState, + installHeight: option, + }) } const handleChangeVerticalSnowCover = (option) => { setVerticalSnowCover(option) - setModuleSelectionInitParams({ ...moduleSelectionInitParams, stdSnowLd: option, }) + + setManagementState({ + ...managementState, + verticalSnowCover: option, + }) } useEffect(() => { diff --git a/src/locales/ko.json b/src/locales/ko.json index d2113d2e..3cf57205 100644 --- a/src/locales/ko.json +++ b/src/locales/ko.json @@ -987,5 +987,7 @@ "module.place.no.surface": "μ„ νƒλœ λͺ¨λ“ˆ μ„€μΉ˜λ©΄μ΄ μ—†μŠ΅λ‹ˆλ‹€.", "module.place.select.module": "λͺ¨λ“ˆμ„ μ„ νƒν•΄μ£Όμ„Έμš”.", "module.place.select.one.module": "λͺ¨λ“ˆμ€ ν•˜λ‚˜λ§Œ μ„ νƒν•΄μ£Όμ„Έμš”.", - "batch.canvas.delete.all": "배치면 λ‚΄μš©μ„ μ „λΆ€ μ‚­μ œν•˜μ‹œκ² μŠ΅λ‹ˆκΉŒ?" + "batch.canvas.delete.all": "배치면 λ‚΄μš©μ„ μ „λΆ€ μ‚­μ œν•˜μ‹œκ² μŠ΅λ‹ˆκΉŒ?", + "module.not.found": "μ„€μΉ˜ λͺ¨λ“ˆμ„ μ„ νƒν•˜μ„Έμš”.", + "construction.length.difference": "μ§€λΆ•λ©΄ 곡법을 μ „λΆ€ μ„ νƒν•΄μ£Όμ„Έμš”." }