208 lines
6.7 KiB
JavaScript
208 lines
6.7 KiB
JavaScript
import { useRecoilState, useRecoilValue, useResetRecoilState } from 'recoil'
|
|
import { useContext, useEffect, useState } from 'react'
|
|
import { GlobalDataContext } from '@/app/GlobalDataProvider'
|
|
import { useMasterController } from '@/hooks/common/useMasterController'
|
|
import { useCommonCode } from '@/hooks/common/useCommonCode'
|
|
import { selectedModuleState, moduleSelectionDataState } from '@/store/selectedModuleOptions'
|
|
import { isObjectNotEmpty } from '@/util/common-utils'
|
|
import { canvasState } from '@/store/canvasAtom'
|
|
import { POLYGON_TYPE } from '@/common/common'
|
|
import { moduleStatisticsState } from '@/store/circuitTrestleAtom'
|
|
import { useModuleBasicSetting } from '@/hooks/module/useModuleBasicSetting'
|
|
|
|
export function useModuleSelection(props) {
|
|
const canvas = useRecoilValue(canvasState)
|
|
const { managementState, setManagementState } = useContext(GlobalDataContext)
|
|
const [roughnessCodes, setRoughnessCodes] = useState([]) //면조도 목록
|
|
const [windSpeedCodes, setWindSpeedCodes] = useState([]) //기준풍속 목록
|
|
const [moduleList, setModuleList] = useState([{}]) //모듈 목록
|
|
const [selectedSurfaceType, setSelectedSurfaceType] = useState({}) //선택된 면조도
|
|
const [installHeight, setInstallHeight] = useState(managementState?.installHeight) //설치 높이
|
|
const [standardWindSpeed, setStandardWindSpeed] = useState() //기준풍속
|
|
const [verticalSnowCover, setVerticalSnowCover] = useState(managementState?.verticalSnowCover) //수직적설량
|
|
const [selectedModules, setSelectedModules] = useRecoilState(selectedModuleState) //선택된 모듈
|
|
|
|
// const [moduleSelectionInitParams, setModuleSelectionInitParams] = useRecoilState(moduleSelectionInitParamsState) //모듈 기본 데이터 ex) 면조도, 높이등등
|
|
const { getModuleTypeItemList } = useMasterController()
|
|
const { findCommonCode } = useCommonCode()
|
|
const resetStatisticsData = useResetRecoilState(moduleStatisticsState)
|
|
const { restoreModuleInstArea } = useModuleBasicSetting()
|
|
|
|
const bindInitData = () => {
|
|
setInstallHeight(managementState?.installHeight)
|
|
setStandardWindSpeed(managementState?.standardWindSpeedId)
|
|
setVerticalSnowCover(managementState?.verticalSnowCover)
|
|
setSelectedSurfaceType(managementState?.surfaceType)
|
|
}
|
|
|
|
const [moduleSelectionData, setModuleSelectionData] = useRecoilState(moduleSelectionDataState) //다음으로 넘어가는 최종 데이터
|
|
|
|
//탭별 파라메터 초기화
|
|
useEffect(() => {
|
|
bindInitData()
|
|
// const initParams = {
|
|
// illuminationTp: managementState?.surfaceTypeValue, //면조도
|
|
// illuminationTpNm: managementState?.surfaceType, //면조도명
|
|
// instHt: managementState?.installHeight, //설치높이
|
|
// stdWindSpeed: managementState?.standardWindSpeedId, //기준풍속
|
|
// stdSnowLd: managementState?.verticalSnowCover, //기준적설량
|
|
// saleStoreNorthFlg: managementState?.saleStoreNorthFlg, //북쪽 설치 여부
|
|
// }
|
|
|
|
// if (selectedModules) {
|
|
// initParams.moduleTpCd = selectedModules.itemTp
|
|
// initParams.moduleItemId = selectedModules.itemId
|
|
// }
|
|
|
|
// setModuleSelectionInitParams(initParams)
|
|
}, [managementState])
|
|
|
|
useEffect(() => {
|
|
// 113700 면조도
|
|
const roughnessCodeList = findCommonCode('113700')
|
|
roughnessCodeList.forEach((obj) => {
|
|
obj.name = obj.clCodeNm
|
|
obj.id = obj.clCode
|
|
})
|
|
setRoughnessCodes(roughnessCodeList)
|
|
|
|
// 202000 풍속
|
|
const windCodeList = findCommonCode('202000')
|
|
|
|
windCodeList.forEach((obj) => {
|
|
obj.name = obj.clCodeNm
|
|
obj.id = obj.clCode
|
|
})
|
|
setWindSpeedCodes(windCodeList)
|
|
|
|
//지붕재 선택
|
|
const roofsIds = props.addedRoofs.filter((obj) => obj.roofMatlCd).map((obj) => obj.roofMatlCd)
|
|
|
|
if (roofsIds.length === 0) {
|
|
return
|
|
}
|
|
|
|
//새로고침시 데이터 날아가는거 방지
|
|
if (managementState === null) {
|
|
setManagementState(managementState)
|
|
} else {
|
|
bindInitData()
|
|
}
|
|
|
|
getModuleData(roofsIds)
|
|
|
|
//모듈설치면 초기화
|
|
// restoreModuleInstArea()
|
|
resetStatisticsData()
|
|
}, [])
|
|
|
|
const getModuleData = async (roofsIds) => {
|
|
const list = await getModuleTypeItemList(roofsIds)
|
|
if (list.data.length > 0) {
|
|
//selectbox에 이름을 넣는다
|
|
list.data.forEach((item) => {
|
|
item.name = item.itemNm
|
|
})
|
|
//셀렉트박스 데이터 초기화
|
|
setModuleList(list.data)
|
|
}
|
|
}
|
|
|
|
//데이터가 있으면 모듈 자동 선택
|
|
//1번 모듈 리스트 조회
|
|
useEffect(() => {
|
|
//모듈리스트의 데이터가 변경 되면 모듈 선택으로 이벤트
|
|
if (moduleList.length > 0 && isObjectNotEmpty(moduleSelectionData.module)) {
|
|
handleChangeModule(moduleSelectionData.module)
|
|
}
|
|
}, [moduleList])
|
|
|
|
const handleChangeModule = (option) => {
|
|
//선택된 모듈
|
|
setSelectedModules(option) //선택값 저장
|
|
|
|
//init 데이터에 선택된 모듈 추가
|
|
// setModuleSelectionInitParams({
|
|
// ...moduleSelectionInitParams,
|
|
// moduleTpCd: option.itemTp,
|
|
// moduleItemId: option.itemId,
|
|
// })
|
|
}
|
|
|
|
const handleChangeSurfaceType = (option) => {
|
|
// setModuleSelectionInitParams({
|
|
// ...moduleSelectionInitParams,
|
|
// illuminationTp: option.clCode,
|
|
// illuminationTpNm: option.clCodeNm,
|
|
// })
|
|
|
|
setManagementState({
|
|
...managementState,
|
|
surfaceType: option.clCodeNm,
|
|
surfaceTypeValue: option.clCode,
|
|
})
|
|
}
|
|
|
|
const handleChangeWindSpeed = (option) => {
|
|
// setModuleSelectionInitParams({
|
|
// ...moduleSelectionInitParams,
|
|
// stdWindSpeed: option.clCode,
|
|
// })
|
|
|
|
setManagementState({
|
|
...managementState,
|
|
standardWindSpeedId: option.clCode,
|
|
})
|
|
}
|
|
|
|
const handleChangeInstallHeight = (option) => {
|
|
setInstallHeight(option)
|
|
// setModuleSelectionInitParams({
|
|
// ...moduleSelectionInitParams,
|
|
// instHt: option,
|
|
// })
|
|
|
|
setManagementState({
|
|
...managementState,
|
|
installHeight: option,
|
|
})
|
|
}
|
|
|
|
const handleChangeVerticalSnowCover = (option) => {
|
|
setVerticalSnowCover(option)
|
|
// setModuleSelectionInitParams({
|
|
// ...moduleSelectionInitParams,
|
|
// stdSnowLd: option,
|
|
// })
|
|
|
|
setManagementState({
|
|
...managementState,
|
|
verticalSnowCover: option,
|
|
})
|
|
}
|
|
|
|
return {
|
|
// moduleSelectionInitParams,
|
|
selectedModules,
|
|
roughnessCodes,
|
|
windSpeedCodes,
|
|
managementState,
|
|
setManagementState,
|
|
moduleList,
|
|
setSelectedModules,
|
|
selectedSurfaceType,
|
|
setSelectedSurfaceType,
|
|
installHeight,
|
|
setInstallHeight,
|
|
standardWindSpeed,
|
|
setStandardWindSpeed,
|
|
verticalSnowCover,
|
|
setVerticalSnowCover,
|
|
handleChangeModule,
|
|
handleChangeSurfaceType,
|
|
handleChangeWindSpeed,
|
|
handleChangeInstallHeight,
|
|
handleChangeVerticalSnowCover,
|
|
}
|
|
}
|