import { forwardRef, useEffect, useState } from 'react' import { useMessage } from '@/hooks/useMessage' import { useModuleBasicSetting } from '@/hooks/module/useModuleBasicSetting' import { checkedModuleState, currentCanvasPlanState, isManualModuleSetupState } from '@/store/canvasAtom' import { useRecoilState, useRecoilValue, useSetRecoilState } from 'recoil' import { moduleSelectionDataState, selectedModuleState } from '@/store/selectedModuleOptions' import { isObjectNotEmpty } from '@/util/common-utils' const Placement = forwardRef((props, refs) => { const { getMessage } = useMessage() const [isChidori, setIsChidori] = useState(false) const [isChidoriNotAble, setIsChidoriNotAble] = useState(false) const [setupLocation, setSetupLocation] = useState('eaves') const [isMaxSetup, setIsMaxSetup] = useState('false') const [selectedItems, setSelectedItems] = useState({}) const [selectedModules, setSelectedModules] = useRecoilState(selectedModuleState) const setCheckedModules = useSetRecoilState(checkedModuleState) const moduleSelectionData = useRecoilValue(moduleSelectionDataState) const { makeModuleInitArea } = useModuleBasicSetting(3) const [isMultiModule, setIsMultiModule] = useState(false) const [isManualModuleSetup, setIsManualModuleSetup] = useRecoilState(isManualModuleSetupState) //모듈 배치면 생성 useEffect(() => { if (moduleSelectionData) { //1개라도 치도리 불가가 있으면 치도리 불가 const isChidroriValue = moduleSelectionData.roofConstructions.some((item) => item.construction.plvrYn === 'N') if (isChidroriValue) { setIsChidoriNotAble(true) } makeModuleInitArea(moduleSelectionData) } return () => { setIsManualModuleSetup(false) } }, []) //최초 지입시 체크 useEffect(() => { if (isObjectNotEmpty(moduleSelectionData)) { //두번째 선택한 데이터가를 기반으로 세번째 선택을 체크한다 if (moduleSelectionData.roofConstructions.length > 0 && moduleSelectionData.module.itemList.length > 0) { let initCheckedModule = {} moduleSelectionData.module.itemList.forEach((obj, index) => { if (index === 0) { initCheckedModule = { [obj.itemId]: true } } else { initCheckedModule = { ...initCheckedModule, [obj.itemId]: true } } }) setSelectedItems(initCheckedModule) setSelectedModules(moduleSelectionData.module) } //모듈 배치면 생성 if (isObjectNotEmpty(moduleSelectionData.module) && moduleSelectionData.module.itemList.length > 1) { setIsMultiModule(true) } } }, [moduleSelectionData]) //체크된 모듈 데이터 useEffect(() => { if (isObjectNotEmpty(selectedItems) && isObjectNotEmpty(selectedModules)) { const checkedModuleIds = Object.keys(selectedItems).filter((key) => selectedItems[key]) const moduleArray = selectedModules.itemList.filter((item) => { return checkedModuleIds.includes(item.itemId) }) setCheckedModules(moduleArray) } }, [selectedItems, selectedModules]) const moduleData = { header: [ { type: 'check', name: '', prop: 'check', width: 70 }, { type: 'color-box', name: getMessage('module'), prop: 'module' }, { type: 'text', name: `${getMessage('output')} (W)`, prop: 'output', width: 70 }, ], rows: [], } const handleChangeChidori = (e) => { const bool = e.target.value === 'true' ? true : false setIsChidori(bool) refs.isChidori.current = e.target.value } const handleSetupLocation = (e) => { setSetupLocation(e.target.value) refs.setupLocation.current = e.target.value } const handleMaxSetup = (e) => { if (e.target.checked) { setIsMaxSetup('true') refs.isMaxSetup.current = 'true' } else { setIsMaxSetup('false') refs.isMaxSetup.current = 'false' } } //체크된 모듈 아이디 추출 const handleSelectedItem = (e) => { setSelectedItems({ ...selectedItems, [e.target.name]: e.target.checked }) } return ( <>
{moduleData.header.map((data) => ( ))} {selectedModules.itemList && selectedModules.itemList.map((item, index) => ( ))}
{data.type === 'check' ? (
) : ( data.name )}
{item.itemNm}
{item.wpOut}
{getMessage('modal.module.basic.setting.module.placement.select.fitting.type')}
{getMessage('modal.module.basic.setting.module.placement.waterfowl.arrangement')}
handleChangeChidori(e)} />
handleChangeChidori(e)} />
{getMessage('modal.module.basic.setting.module.placement.arrangement.standard')}
{/*
*/}
) }) export default Placement