단수배치 작업

This commit is contained in:
yjnoh 2025-03-18 15:44:41 +09:00
parent 63db694efa
commit 8a5bd9f505
4 changed files with 409 additions and 369 deletions

View File

@ -97,13 +97,6 @@ export default function BasicSetting({ id, pos = { x: 50, y: 230 } }) {
setTabNum(tabNum + 1) setTabNum(tabNum + 1)
} }
const placementRef = {
isChidori: useRef('false'),
setupLocation: useRef('eaves'),
}
const layoutSetupRef = useRef([])
const placementFlatRef = { const placementFlatRef = {
setupLocation: useRef('south'), setupLocation: useRef('south'),
} }
@ -149,16 +142,18 @@ export default function BasicSetting({ id, pos = { x: 50, y: 230 } }) {
useEffect(() => { useEffect(() => {
if (basicSetting.roofSizeSet !== '3') { if (basicSetting.roofSizeSet !== '3') {
console.log('ManualSetupMode', manualSetupMode)
if (manualSetupMode.indexOf('manualSetup') > -1) { if (manualSetupMode.indexOf('manualSetup') > -1) {
manualModuleSetup(placementRef) manualModuleSetup()
} else if (manualSetupMode.indexOf('manualLayoutSetup') > -1) { } else if (manualSetupMode.indexOf('manualLayoutSetup') > -1) {
manualModuleLayoutSetup(layoutSetupRef) manualModuleLayoutSetup(layoutSetup)
} else if (manualSetupMode.indexOf('off') > -1) {
manualModuleSetup()
manualModuleLayoutSetup(layoutSetup)
} }
} else { } else {
manualFlatroofModuleSetup(placementFlatRef) manualFlatroofModuleSetup(placementFlatRef)
} }
if (isClosePopup.close) { if (isClosePopup.close) {
closePopup(isClosePopup.id) closePopup(isClosePopup.id)
} }
@ -166,12 +161,13 @@ export default function BasicSetting({ id, pos = { x: 50, y: 230 } }) {
useEffect(() => { useEffect(() => {
if (isManualModuleLayoutSetup) { if (isManualModuleLayoutSetup) {
manualModuleLayoutSetup(layoutSetupRef) manualModuleLayoutSetup(layoutSetup)
} }
}, [layoutSetup]) }, [layoutSetup])
useEffect(() => { useEffect(() => {
setIsManualModuleSetup(false) setIsManualModuleSetup(false)
setIsManualModuleLayoutSetup(false)
}, [checkedModules]) }, [checkedModules])
return ( return (
@ -189,13 +185,7 @@ export default function BasicSetting({ id, pos = { x: 50, y: 230 } }) {
{/*배치면 초기설정 - 입력방법: 복시도 입력 || 실측값 입력*/} {/*배치면 초기설정 - 입력방법: 복시도 입력 || 실측값 입력*/}
{basicSetting.roofSizeSet && basicSetting.roofSizeSet != '3' && tabNum === 2 && <Module setTabNum={setTabNum} />} {basicSetting.roofSizeSet && basicSetting.roofSizeSet != '3' && tabNum === 2 && <Module setTabNum={setTabNum} />}
{basicSetting.roofSizeSet && basicSetting.roofSizeSet != '3' && tabNum === 3 && ( {basicSetting.roofSizeSet && basicSetting.roofSizeSet != '3' && tabNum === 3 && (
<Placement <Placement setTabNum={setTabNum} layoutSetup={layoutSetup} setLayoutSetup={setLayoutSetup} />
setTabNum={setTabNum}
ref={placementRef}
layoutSetupRef={layoutSetupRef}
layoutSetup={layoutSetup}
setLayoutSetup={setLayoutSetup}
/>
)} )}
{/*배치면 초기설정 - 입력방법: 육지붕*/} {/*배치면 초기설정 - 입력방법: 육지붕*/}
@ -227,7 +217,7 @@ export default function BasicSetting({ id, pos = { x: 50, y: 230 } }) {
<button className={`btn-frame modal mr5 ${isManualModuleLayoutSetup ? 'act' : ''}`} onClick={handleManualModuleLayoutSetup}> <button className={`btn-frame modal mr5 ${isManualModuleLayoutSetup ? 'act' : ''}`} onClick={handleManualModuleLayoutSetup}>
레아이웃 수동설치 레아이웃 수동설치
</button> </button>
<button className="btn-frame modal act" onClick={() => autoModuleSetup(placementRef)}> <button className="btn-frame modal act" onClick={() => autoModuleSetup()}>
{getMessage('modal.module.basic.setting.auto.placement')} {getMessage('modal.module.basic.setting.auto.placement')}
</button> </button>
</> </>

View File

@ -3,10 +3,9 @@ import { useMessage } from '@/hooks/useMessage'
import { useModuleBasicSetting } from '@/hooks/module/useModuleBasicSetting' import { useModuleBasicSetting } from '@/hooks/module/useModuleBasicSetting'
import { import {
checkedModuleState, checkedModuleState,
currentCanvasPlanState,
isManualModuleLayoutSetupState, isManualModuleLayoutSetupState,
isManualModuleSetupState, isManualModuleSetupState,
isModuleChidoriSetupState, moduleSetupOptionState,
toggleManualSetupModeState, toggleManualSetupModeState,
} from '@/store/canvasAtom' } from '@/store/canvasAtom'
import { useRecoilState, useRecoilValue, useSetRecoilState } from 'recoil' import { useRecoilState, useRecoilValue, useSetRecoilState } from 'recoil'
@ -15,13 +14,10 @@ import { isObjectNotEmpty } from '@/util/common-utils'
const Placement = forwardRef((props, refs) => { const Placement = forwardRef((props, refs) => {
const { getMessage } = useMessage() const { getMessage } = useMessage()
const [isChidori, setIsChidori] = useRecoilState(isModuleChidoriSetupState)
const [isChidoriNotAble, setIsChidoriNotAble] = useState(false) const [isChidoriNotAble, setIsChidoriNotAble] = useState(false)
const [setupLocation, setSetupLocation] = useState('eaves')
const [isMaxSetup, setIsMaxSetup] = useState('false')
const [selectedItems, setSelectedItems] = useState({}) const [selectedItems, setSelectedItems] = useState({})
const [selectedModules, setSelectedModules] = useRecoilState(selectedModuleState) const [selectedModules, setSelectedModules] = useRecoilState(selectedModuleState)
const setCheckedModules = useSetRecoilState(checkedModuleState) const setCheckedModules = useSetRecoilState(checkedModuleState)
@ -35,6 +31,8 @@ const Placement = forwardRef((props, refs) => {
const setIsManualModuleLayoutSetup = useSetRecoilState(isManualModuleLayoutSetupState) const setIsManualModuleLayoutSetup = useSetRecoilState(isManualModuleLayoutSetupState)
const setManualSetupMode = useSetRecoilState(toggleManualSetupModeState) const setManualSetupMode = useSetRecoilState(toggleManualSetupModeState)
const [moduleSetupOption, setModuleSetupOption] = useRecoilState(moduleSetupOptionState) //
// //
useEffect(() => { useEffect(() => {
if (moduleSelectionData) { if (moduleSelectionData) {
@ -49,7 +47,7 @@ const Placement = forwardRef((props, refs) => {
return () => { return () => {
setIsManualModuleSetup(false) setIsManualModuleSetup(false)
setIsManualModuleLayoutSetup(false) setIsManualModuleLayoutSetup(false)
setManualSetupMode('') setManualSetupMode('off')
} }
}, []) }, [])
@ -69,11 +67,6 @@ const Placement = forwardRef((props, refs) => {
setSelectedItems(initCheckedModule) setSelectedItems(initCheckedModule)
setSelectedModules(moduleSelectionData.module) setSelectedModules(moduleSelectionData.module)
props.setLayoutSetup(moduleSelectionData.module.itemList.map((item) => ({ moduleId: item.itemId, col: 0, row: 0 }))) props.setLayoutSetup(moduleSelectionData.module.itemList.map((item) => ({ moduleId: item.itemId, col: 0, row: 0 })))
props.layoutSetupRef.current = moduleSelectionData.module.itemList.map((item) => ({
moduleId: item.itemId,
col: 0,
row: 0,
}))
} }
// //
@ -105,13 +98,21 @@ const Placement = forwardRef((props, refs) => {
const handleChangeChidori = (e) => { const handleChangeChidori = (e) => {
const bool = e.target.value === 'true' ? true : false const bool = e.target.value === 'true' ? true : false
setIsChidori(bool) setModuleSetupOption({ ...moduleSetupOption, isChidori: bool })
refs.isChidori.current = e.target.value
//
setIsManualModuleSetup(false)
setIsManualModuleLayoutSetup(false)
setManualSetupMode('off')
} }
const handleSetupLocation = (e) => { const handleSetupLocation = (e) => {
setSetupLocation(e.target.value) setModuleSetupOption({ ...moduleSetupOption, setupLocation: e.target.value })
refs.setupLocation.current = e.target.value
//
setIsManualModuleSetup(false)
setIsManualModuleLayoutSetup(false)
setManualSetupMode('off')
} }
// //
@ -123,11 +124,6 @@ const Placement = forwardRef((props, refs) => {
const newLayoutSetup = [...props.layoutSetup] const newLayoutSetup = [...props.layoutSetup]
newLayoutSetup[index] = { ...newLayoutSetup[index], moduleId: itemId, [e.target.name]: Number(e.target.value) } newLayoutSetup[index] = { ...newLayoutSetup[index], moduleId: itemId, [e.target.name]: Number(e.target.value) }
props.setLayoutSetup(newLayoutSetup) props.setLayoutSetup(newLayoutSetup)
props.layoutSetupRef.current[index] = {
...props.layoutSetupRef.current[index],
moduleId: itemId,
[e.target.name]: Number(e.target.value),
}
} }
return ( return (
@ -214,7 +210,7 @@ const Placement = forwardRef((props, refs) => {
type="radio" type="radio"
name="radio01" name="radio01"
id="ra01" id="ra01"
checked={isChidori} checked={moduleSetupOption.isChidori}
disabled={isChidoriNotAble} disabled={isChidoriNotAble}
value={'true'} value={'true'}
onChange={(e) => handleChangeChidori(e)} onChange={(e) => handleChangeChidori(e)}
@ -222,7 +218,14 @@ const Placement = forwardRef((props, refs) => {
<label htmlFor="ra01">{getMessage('modal.module.basic.setting.module.placement.do')}</label> <label htmlFor="ra01">{getMessage('modal.module.basic.setting.module.placement.do')}</label>
</div> </div>
<div className="d-check-radio pop"> <div className="d-check-radio pop">
<input type="radio" name="radio02" id="ra02" checked={!isChidori} value={'false'} onChange={(e) => handleChangeChidori(e)} /> <input
type="radio"
name="radio02"
id="ra02"
checked={!moduleSetupOption.isChidori}
value={'false'}
onChange={(e) => handleChangeChidori(e)}
/>
<label htmlFor="ra02">{getMessage('modal.module.basic.setting.module.placement.do.not')}</label> <label htmlFor="ra02">{getMessage('modal.module.basic.setting.module.placement.do.not')}</label>
</div> </div>
</div> </div>
@ -232,24 +235,12 @@ const Placement = forwardRef((props, refs) => {
<div className="self-item-th">{getMessage('modal.module.basic.setting.module.placement.arrangement.standard')}</div> <div className="self-item-th">{getMessage('modal.module.basic.setting.module.placement.arrangement.standard')}</div>
<div className="self-item-td"> <div className="self-item-td">
<div className="pop-form-radio"> <div className="pop-form-radio">
<div className="d-check-radio pop">
<input
type="radio"
name="radio03"
id="ra03"
checked={setupLocation === 'center'}
value={'center'}
onChange={handleSetupLocation}
disabled={isMultiModule}
/>
<label htmlFor="ra03">{getMessage('modal.module.basic.setting.module.placement.arrangement.standard.center')}</label>
</div>
<div className="d-check-radio pop"> <div className="d-check-radio pop">
<input <input
type="radio" type="radio"
name="radio04" name="radio04"
id="ra04" id="ra04"
checked={setupLocation === 'eaves'} checked={moduleSetupOption.setupLocation === 'eaves'}
value={'eaves'} value={'eaves'}
onChange={handleSetupLocation} onChange={handleSetupLocation}
/> />
@ -260,7 +251,7 @@ const Placement = forwardRef((props, refs) => {
type="radio" type="radio"
name="radio05" name="radio05"
id="ra05" id="ra05"
checked={setupLocation === 'ridge'} checked={moduleSetupOption.setupLocation === 'ridge'}
value={'ridge'} value={'ridge'}
onChange={handleSetupLocation} onChange={handleSetupLocation}
disabled={isMultiModule} disabled={isMultiModule}

File diff suppressed because it is too large Load Diff

View File

@ -390,9 +390,12 @@ export const isManualModuleLayoutSetupState = atom({
default: false, default: false,
}) })
export const isModuleChidoriSetupState = atom({ export const moduleSetupOptionState = atom({
key: 'isModuleChidoriSetupState', key: 'moduleSetupOptionState',
default: false, default: {
isChidori: false, //치조 안함
setupLocation: 'eaves', //처마
},
}) })
export const toggleManualSetupModeState = atom({ export const toggleManualSetupModeState = atom({