import WithDraggable from '@/components/common/draggable/WithDraggable' import { useState, useEffect, useContext } from 'react' import PowerConditionalSelect from '@/components/floor-plan/modal/circuitTrestle/step/PowerConditionalSelect' import CircuitAllocation from '@/components/floor-plan/modal/circuitTrestle/step/CircuitAllocation' import StepUp from '@/components/floor-plan/modal/circuitTrestle/step/StepUp' import { useMessage } from '@/hooks/useMessage' import { usePopup } from '@/hooks/usePopup' import PassivityCircuitAllocation from './step/type/PassivityCircuitAllocation' import { useMasterController } from '@/hooks/common/useMasterController' import { correntObjectNoState } from '@/store/settingAtom' import { useRecoilValue } from 'recoil' import { GlobalDataContext } from '@/app/GlobalDataProvider' import { useRecoilState } from 'recoil' import { makersState, modelsState, modelState, pcsCheckState, selectedMakerState, seriesState } from '@/store/circuitTrestleAtom' import { POLYGON_TYPE } from '@/common/common' import { useSwal } from '@/hooks/useSwal' import { canvasState } from '@/store/canvasAtom' import { useTrestle } from '@/hooks/module/useTrestle' const ALLOCATION_TYPE = { AUTO: 'auto', PASSIVITY: 'passivity', } export default function CircuitTrestleSetting({ id }) { const { getMessage } = useMessage() const { closePopup } = usePopup() const { apply } = useTrestle() const { swalFire } = useSwal() const canvas = useRecoilValue(canvasState) const [makers, setMakers] = useRecoilState(makersState) const [selectedMaker, setSelectedMaker] = useRecoilState(selectedMakerState) const [series, setSeries] = useRecoilState(seriesState) const [models, setModels] = useRecoilState(modelsState) const [pcsCheck, setPcsCheck] = useRecoilState(pcsCheckState) const [tabNum, setTabNum] = useState(1) const [allocationType, setAllocationType] = useState(ALLOCATION_TYPE.AUTO) const [circuitAllocationType, setCircuitAllocationType] = useState(1) const powerConditionalSelectProps = { tabNum, setTabNum, makers, setMakers, selectedMaker, setSelectedMaker, series, setSeries, models, setModels, } const passivityProps = { tabNum, setTabNum, models, setModels, } const stepUpProps = { tabNum, setTabNum, models, setModels, circuitAllocationType, setCircuitAllocationType, } const onAutoAllocation = () => { let moduleStdQty = 0 let moduleMaxQty = 0 const selectedModels = models.filter((m) => m.selected) if (selectedModels.length === 0) { moduleStdQty = models.reduce((acc, model) => { return acc + parseInt(model.moduleStdQty) }, 0) moduleMaxQty = models.reduce((acc, model) => { return acc + parseInt(model.moduleMaxQty) }, 0) } else { moduleStdQty = selectedModels.reduce((acc, model) => { return acc + parseInt(model.moduleStdQty) }, 0) moduleMaxQty = selectedModels.reduce((acc, model) => { return acc + parseInt(model.moduleMaxQty) }, 0) } const target = pcsCheck.max ? moduleMaxQty : moduleStdQty const placementModules = canvas.getObjects().filter((obj) => obj.name === POLYGON_TYPE.MODULE) if (placementModules.length > target) { swalFire({ title: '배치가능 매수를 초과합니다. 파워컨디셔너를 다시 선택해 주세요.', type: 'alert', }) return } // setAllocationType(ALLOCATION_TYPE.AUTO) setTabNum(2) } const onPassivityAllocation = () => { console.log('🚀 ~ onPassivityAllocation ~ selectedModels:', models) if (models.filter((m) => m.selected).length === 0) { swalFire({ title: '파워 컨디셔너를 추가해 주세요.', type: 'alert', }) return } else if (pcsCheck.max) { const selectedModels = models.filter((m) => m.selected) const moduleStdQty = selectedModels.reduce((acc, model) => { return acc + parseInt(model.moduleStdQty) }, 0) const moduleMaxQty = selectedModels.reduce((acc, model) => { return acc + parseInt(model.moduleMaxQty) }, 0) const target = pcsCheck.max ? moduleMaxQty : moduleStdQty const placementModules = canvas.getObjects().filter((obj) => obj.name === POLYGON_TYPE.MODULE) if (placementModules.length > target) { swalFire({ title: '배치가능 매수를 초과합니다. 파워컨디셔너를 다시 선택해 주세요.', type: 'alert', }) return } } setAllocationType(ALLOCATION_TYPE.PASSIVITY) } return (

{getMessage('modal.circuit.trestle.setting')}

{getMessage('modal.circuit.trestle.setting.power.conditional.select')}
{getMessage('modal.circuit.trestle.setting.circuit.allocation')}({getMessage('modal.circuit.trestle.setting.step.up.allocation')})
{tabNum === 1 && allocationType === ALLOCATION_TYPE.AUTO && } {tabNum === 1 && allocationType === ALLOCATION_TYPE.PASSIVITY && } {tabNum === 2 && } {tabNum === 1 && allocationType === ALLOCATION_TYPE.AUTO && (
)} {tabNum === 1 && allocationType === ALLOCATION_TYPE.PASSIVITY && (
)} {tabNum === 2 && (
)}
) }