모듈 선택 db 연동

This commit is contained in:
yjnoh 2025-01-31 14:39:26 +09:00
parent d9f782639f
commit 9a9b76482d
3 changed files with 67 additions and 43 deletions

View File

@ -42,17 +42,6 @@ export default function Module({ setTabNum }) {
const [moduleSelectionData, setModuleSelectionData] = useRecoilState(moduleSelectionDataState) // const [moduleSelectionData, setModuleSelectionData] = useRecoilState(moduleSelectionDataState) //
const dataRef = useRef({
selectedSurfaceType,
installHeight,
standardWindSpeed,
verticalSnowCover,
})
useEffect(() => {
console.log('dataRef', dataRef)
}, [])
const [tempModuleSelectionData, setTempModuleSelectionData] = useReducer((prevState, nextState) => { const [tempModuleSelectionData, setTempModuleSelectionData] = useReducer((prevState, nextState) => {
return { ...prevState, ...nextState } return { ...prevState, ...nextState }
}, moduleSelectionData) }, moduleSelectionData)

View File

@ -5,19 +5,11 @@ import { useMessage } from '@/hooks/useMessage'
import { useMasterController } from '@/hooks/common/useMasterController' import { useMasterController } from '@/hooks/common/useMasterController'
import { useCommonCode } from '@/hooks/common/useCommonCode' import { useCommonCode } from '@/hooks/common/useCommonCode'
import { moduleSelectionDataState, moduleSelectionInitParamsState, selectedModuleState } from '@/store/selectedModuleOptions' import { moduleSelectionDataState, moduleSelectionInitParamsState, selectedModuleState } from '@/store/selectedModuleOptions'
import { isObjectNotEmpty } from '@/util/common-utils' import { isObjectNotEmpty, isEqualObjects } from '@/util/common-utils'
import QSelectBox from '@/components/common/select/QSelectBox' import QSelectBox from '@/components/common/select/QSelectBox'
import { addedRoofsState } from '@/store/settingAtom' import { addedRoofsState } from '@/store/settingAtom'
export default function ModuleTabContents({ export default function ModuleTabContents({ tabIndex, addRoof, setAddedRoofs, roofTab, tempModuleSelectionData, setTempModuleSelectionData }) {
tabIndex,
addRoof,
setAddedRoofs,
roofTab,
tempModuleSelectionData,
setTempModuleSelectionData,
moduleSelectionInitParams,
}) {
const { getMessage } = useMessage() const { getMessage } = useMessage()
const [roofMaterial, setRoofMaterial] = useState(addRoof) //` const [roofMaterial, setRoofMaterial] = useState(addRoof) //`
@ -45,7 +37,8 @@ export default function ModuleTabContents({
const [constructionParams, setConstructionParams] = useState({}) // api const [constructionParams, setConstructionParams] = useState({}) // api
const [roofBaseParams, setRoofBaseParams] = useState({}) // api const [roofBaseParams, setRoofBaseParams] = useState({}) // api
// const moduleSelectionInitParams = useRecoilValue(moduleSelectionInitParamsState) // ex) , const moduleSelectionInitParams = useRecoilValue(moduleSelectionInitParamsState) // ex) ,
const moduleSelectionInitOriginData = useRef(moduleSelectionInitParams)
const { getTrestleList, getConstructionList } = useMasterController() const { getTrestleList, getConstructionList } = useMasterController()
@ -69,8 +62,6 @@ export default function ModuleTabContents({
const hajebichiRef = useRef() const hajebichiRef = useRef()
const lengthRef = useRef() const lengthRef = useRef()
const originalModuleSelectionData = useRef(moduleSelectionData)
// //
const handleChangeRaftBase = (option) => { const handleChangeRaftBase = (option) => {
setSelectedRaftBase(option) setSelectedRaftBase(option)
@ -118,7 +109,7 @@ export default function ModuleTabContents({
// //
useEffect(() => { useEffect(() => {
if ( if (
moduleSelectionData.roofConstructions.length > 0 && isObjectNotEmpty(moduleSelectionData.roofConstructions[tabIndex]) &&
isObjectNotEmpty(moduleSelectionData.roofConstructions[tabIndex].trestle) && isObjectNotEmpty(moduleSelectionData.roofConstructions[tabIndex].trestle) &&
isObjectNotEmpty(moduleSelectionData.roofConstructions[tabIndex].construction) isObjectNotEmpty(moduleSelectionData.roofConstructions[tabIndex].construction)
) { ) {
@ -311,9 +302,6 @@ export default function ModuleTabContents({
construction: selectedConstruction, construction: selectedConstruction,
} }
console.log('newRoofConstructions', newRoofConstructions)
console.log('roofTab', roofTab)
const index = tempModuleSelectionData.roofConstructions.findIndex((obj) => obj.roofIndex === tabIndex) const index = tempModuleSelectionData.roofConstructions.findIndex((obj) => obj.roofIndex === tabIndex)
if (index > -1) { if (index > -1) {
@ -341,7 +329,6 @@ export default function ModuleTabContents({
if (type === 'trestle') { if (type === 'trestle') {
setTrestleList(optionsList.data) setTrestleList(optionsList.data)
if (isExistData) { if (isExistData) {
// setSelectedTrestle({ ...moduleConstructionSelectionData?.trestle })
handleChangeTrestle(moduleConstructionSelectionData?.trestle) handleChangeTrestle(moduleConstructionSelectionData?.trestle)
} else { } else {
setConstMthdList([]) setConstMthdList([])
@ -364,17 +351,43 @@ export default function ModuleTabContents({
} }
useEffect(() => { useEffect(() => {
console.log('originalModuleSelectionData', originalModuleSelectionData) //
console.log('moduleSelectionInitParams', moduleSelectionInitParams) if (moduleSelectionInitOriginData.current.moduleItemId && moduleSelectionInitOriginData.current.moduleTpCd) {
// `
if (!isEqualObjects(moduleSelectionInitOriginData.current, moduleSelectionInitParams)) {
// console.log('moduleSelectionInitParams', moduleSelectionInitParams)
//
setSelectedTrestle({})
//
setSelectedConstMthd({})
//
setSelectedRoofBase({})
//
setConstructionList([])
//
setModuleSelectionData({
...moduleSelectionData,
roofConstructions: [],
})
//
setModuleConstructionSelectionData({
addRoof: addRoof,
trestle: {},
construction: {},
})
// console.log('moduleSelectionInitParams', moduleSelectionInitParams) setTempModuleSelectionData({
// setSelectedTrestle({}) ...moduleSelectionData,
// setSelectedConstMthd({}) roofConstructions: [],
// setSelectedRoofBase({}) })
// setModuleSelectionData({
// ...moduleSelectionData, //
// roofConstructions: [], setIsExistData(false)
// })
// ref
moduleSelectionInitOriginData.current = moduleSelectionInitParams
}
}
}, [moduleSelectionInitParams]) }, [moduleSelectionInitParams])
// useEffect(() => { // useEffect(() => {
@ -596,22 +609,22 @@ export default function ModuleTabContents({
<div className="d-check-box pop"> <div className="d-check-box pop">
<input <input
type="checkbox" type="checkbox"
id={`ch01_${roofTab}`} id={`ch01_${tabIndex}`}
disabled={cvrYn === 'N' ? true : false} disabled={cvrYn === 'N' ? true : false}
checked={cvrChecked} checked={cvrChecked}
onChange={handleCvrChecked} onChange={handleCvrChecked}
/> />
<label htmlFor={`ch01_${roofTab}`}>{getMessage('modal.module.basic.setting.module.eaves.bar.fitting')}</label> <label htmlFor={`ch01_${tabIndex}`}>{getMessage('modal.module.basic.setting.module.eaves.bar.fitting')}</label>
</div> </div>
<div className="d-check-box pop"> <div className="d-check-box pop">
<input <input
type="checkbox" type="checkbox"
id={`ch02_${roofTab}`} id={`ch02_${tabIndex}`}
disabled={snowGdPossYn === 'N' ? true : false} disabled={snowGdPossYn === 'N' ? true : false}
checked={snowGdChecked} checked={snowGdChecked}
onChange={handleSnowGdChecked} onChange={handleSnowGdChecked}
/> />
<label htmlFor={`ch02_${roofTab}`}>{getMessage('modal.module.basic.setting.module.blind.metal.fitting')}</label> <label htmlFor={`ch02_${tabIndex}`}>{getMessage('modal.module.basic.setting.module.blind.metal.fitting')}</label>
</div> </div>
</div> </div>
</div> </div>

View File

@ -153,3 +153,25 @@ export const unescapeString = (str) => {
export const isNullOrUndefined = (value) => { export const isNullOrUndefined = (value) => {
return value === null || value === undefined return value === null || value === undefined
} }
export const isEqualObjects = (obj1, obj2) => {
const keys1 = Object.keys(obj1)
const keys2 = Object.keys(obj2)
if (keys1.length !== keys2.length) return false
for (let key of keys1) {
const val1 = obj1[key]
const val2 = obj2[key]
const areObjects = isObject(val1) && isObject(val2)
if (areObjects && !deepEqual(val1, val2)) return false
if (!areObjects && val1 !== val2) return false
}
return true
}
function isObject(value) {
return value !== null && typeof value === 'object'
}