회로할당(승압설정) 저장 시 Canvas Object 저장

This commit is contained in:
changkyu choi 2025-02-03 20:55:52 +09:00
parent 679d9f8a32
commit ad320708cf
2 changed files with 66 additions and 140 deletions

View File

@ -51,7 +51,9 @@ export default function CircuitTrestleSetting({ id }) {
const [selectedStepUpValues, setSelectedStepUpValues] = useState({}) const [selectedStepUpValues, setSelectedStepUpValues] = useState({})
const [getStepUpSelections, setGetStepUpSelections] = useState(null) const [getStepUpSelections, setGetStepUpSelections] = useState(null)
const [stepUpListData, setStepUpListData] = useRecoilState(stepUpListDataState) // const [stepUpListData, setStepUpListData] = useRecoilState(stepUpListDataState)
const [stepUpListData, setStepUpListData] = useState([])
const [seletedOption, setSeletedOption] = useState(null)
useEffect(() => { useEffect(() => {
if (!managementState) { if (!managementState) {
@ -67,10 +69,6 @@ export default function CircuitTrestleSetting({ id }) {
} }
}, [tabNum]) }, [tabNum])
useEffect(() => {
console.log('stepUpListData >>> ', stepUpListData)
}, [stepUpListData])
const onAutoRecommend = () => { const onAutoRecommend = () => {
if (series.filter((s) => s.selected).length === 0) { if (series.filter((s) => s.selected).length === 0) {
swalFire({ swalFire({
@ -358,60 +356,16 @@ export default function CircuitTrestleSetting({ id }) {
setGetStepUpSelections(() => getCurrentSelections) setGetStepUpSelections(() => getCurrentSelections)
} }
// apply // ()
const onApply = () => { const onApply = () => {
// canvas
const currentSelections = getStepUpSelections ? getStepUpSelections() : {} .getObjects()
.filter((obj) => obj.name === POLYGON_TYPE.MODULE_SETUP_SURFACE)
console.log('currentSelections >>> ', currentSelections) .map((obj) => {
obj.pcses = getStepUpListData()
//
const hasSelections = Object.values(currentSelections).some((stepUpConfig) => Object.values(stepUpConfig).length > 0)
console.log('hasSelections >>> ', hasSelections)
if (!hasSelections) {
swalFire({
title: '승압 설정값을 선택해주세요.1',
type: 'alert',
}) })
return
}
// console.log(canvas.getObjects().filter((obj) => obj.name === POLYGON_TYPE.MODULE_SETUP_SURFACE))
console.log('Applying StepUp configurations:', currentSelections)
// StepUp stepUpListData
//const stepUpData = getStepUpSelections().stepUpListData
//console.log('stepUpData >>> ', stepUpData)
// stepUpListData Recoil state
// setStepUpListData(stepUpData)
//
const configurations = Object.values(currentSelections)
.map((stepUpConfig) => {
const firstConfig = Object.values(stepUpConfig)[0] //
return {
pcsInfo: firstConfig.pcsInfo,
allocation: firstConfig.allocation,
}
})
.filter((config) => config.pcsInfo && config.allocation) //
console.log('Processed configurations:', configurations)
// stepUpListData Recoil state
setStepUpListData(configurations)
// apply
if (configurations.length > 0) {
apply()
} else {
swalFire({
title: '승압 설정값을 선택해주세요.2',
type: 'alert',
})
}
} }
const onClickPrev = () => { const onClickPrev = () => {
@ -474,6 +428,29 @@ export default function CircuitTrestleSetting({ id }) {
getRoofSurfaceList, // getRoofSurfaceList, //
getPcsItemList, // PCS getPcsItemList, // PCS
onValuesSelected: handleStepUpValuesSelected, // onValuesSelected: handleStepUpValuesSelected, //
stepUpListData,
setStepUpListData,
seletedOption,
setSeletedOption,
}
const getStepUpListData = () => {
return stepUpListData[0].pcsItemList.map((item) => {
return item.serQtyList
.filter((serQty) => serQty.selected)
.map((serQty) => {
return {
pcsMkrCd: item.pcsMkrCd,
pcsSerCd: item.pcsSerCd,
pcsItemId: item.itemId,
pcsOptCd: seletedOption.code,
paralQty: serQty.paralQty,
connections: {
connItemId: item.connList[0].itemId,
},
}
})[0]
})
} }
return ( return (

View File

@ -12,6 +12,7 @@ import { useMasterController } from '@/hooks/common/useMasterController'
import { v4 as uuidv4 } from 'uuid' import { v4 as uuidv4 } from 'uuid'
export default function StepUp(props) { export default function StepUp(props) {
const { stepUpListData, setStepUpListData, seletedOption, setSeletedOption } = props
const { getMessage } = useMessage() const { getMessage } = useMessage()
const [moduleTab, setModuleTab] = useState(1) const [moduleTab, setModuleTab] = useState(1)
const [moduleTabs, setModuleTabs] = useState({}) const [moduleTabs, setModuleTabs] = useState({})
@ -22,7 +23,6 @@ export default function StepUp(props) {
const { managementState, setManagementState, managementStateLoaded } = useContext(GlobalDataContext) const { managementState, setManagementState, managementStateLoaded } = useContext(GlobalDataContext)
const canvas = useRecoilValue(canvasState) const canvas = useRecoilValue(canvasState)
const selectedModules = useRecoilValue(selectedModuleState) const selectedModules = useRecoilValue(selectedModuleState)
const [stepUpListData, setStepUpListData] = useState([])
const [optCodes, setOptCodes] = useState([]) const [optCodes, setOptCodes] = useState([])
const [selectedRows, setSelectedRows] = useState({}) const [selectedRows, setSelectedRows] = useState({})
@ -65,6 +65,7 @@ export default function StepUp(props) {
// PCS // PCS
const formattedOptCodes = formatOptionCodes(res.data.optionList) const formattedOptCodes = formatOptionCodes(res.data.optionList)
setOptCodes(formattedOptCodes) setOptCodes(formattedOptCodes)
setSeletedOption(formattedOptCodes[0].code)
} }
} catch (error) { } catch (error) {
console.error('Error fetching step up data:', error) console.error('Error fetching step up data:', error)
@ -80,16 +81,6 @@ export default function StepUp(props) {
})) }))
} }
// // PCS
// const formatStepUpListData = (dataArray = []) => {
// return dataArray?.map((stepUps) => ({
// ...stepUps,
// optionList: formatOptionList(stepUps.optionList),
// pcsItemList: formatPcsItemList(stepUps.pcsItemList),
// selectedPcsItem: formatPcsItemList(stepUps.pcsItemList),
// }))
// }
// PCS // PCS
const formatStepUpListData = (dataArray = []) => { const formatStepUpListData = (dataArray = []) => {
const formattedData = dataArray?.map((stepUps) => ({ const formattedData = dataArray?.map((stepUps) => ({
@ -98,12 +89,12 @@ export default function StepUp(props) {
pcsItemList: formatPcsItemList(stepUps.pcsItemList), pcsItemList: formatPcsItemList(stepUps.pcsItemList),
selectedPcsItem: formatPcsItemList(stepUps.pcsItemList), selectedPcsItem: formatPcsItemList(stepUps.pcsItemList),
})) }))
console.log('🚀 ~ formatStepUpListData ~ formattedData:', formattedData)
// selectedValues // selectedValues
const initialSelectedValues = {} const initialSelectedValues = {}
formattedData.forEach((stepUp) => { formattedData.forEach((stepUp) => {
stepUp.pcsItemList.forEach((pcsItem, pcsIdx) => { stepUp.pcsItemList.forEach((pcsItem, pcsIdx) => {
const pcsKey = `${stepUp.id}_${pcsIdx}` const pcsKey = `${pcsItem.goodsNo}_${pcsIdx}`
// (rmdYn === 'Y') // (rmdYn === 'Y')
const recommendedRow = pcsItem.serQtyList.find((item) => item.rmdYn === 'Y') const recommendedRow = pcsItem.serQtyList.find((item) => item.rmdYn === 'Y')
@ -122,8 +113,8 @@ export default function StepUp(props) {
}, },
} }
initialSelectedValues[stepUp.id] = { initialSelectedValues[pcsItem.goodsNo] = {
...initialSelectedValues[stepUp.id], ...initialSelectedValues[pcsItem.goodsNo],
[pcsKey]: selectionData, [pcsKey]: selectionData,
} }
} }
@ -212,12 +203,7 @@ export default function StepUp(props) {
} }
// //
// const handleRowClick = (goodsNo, pcsIdx, serQtyIdx, serQty, paralQty) => {
const handleRowClick = (mainIdx, subIdx) => { const handleRowClick = (mainIdx, subIdx) => {
// const rowKey = `${goodsNo}_${pcsIdx}_${serQtyIdx}`
// const pcsKey = `${goodsNo}_${pcsIdx}`
// setSelectedRow(rowKey)
// item.selected = !item.selected\
let tempStepUpListData = [...stepUpListData] let tempStepUpListData = [...stepUpListData]
let selectedData = {} let selectedData = {}
tempStepUpListData[0].pcsItemList[mainIdx].serQtyList.forEach((item, index) => { tempStepUpListData[0].pcsItemList[mainIdx].serQtyList.forEach((item, index) => {
@ -227,6 +213,7 @@ export default function StepUp(props) {
item.selected = index === subIdx item.selected = index === subIdx
}) })
setStepUpListData(tempStepUpListData) setStepUpListData(tempStepUpListData)
console.log('🚀 ~ handleRowClick ~ tempStepUpListData:', tempStepUpListData) console.log('🚀 ~ handleRowClick ~ tempStepUpListData:', tempStepUpListData)
console.log('🚀 ~ handleRowClick ~ selectedData:', selectedData) console.log('🚀 ~ handleRowClick ~ selectedData:', selectedData)
@ -235,19 +222,16 @@ export default function StepUp(props) {
const moduleIds = targetSurface.modules.map((module) => { const moduleIds = targetSurface.modules.map((module) => {
return module.id return module.id
}) })
console.log(moduleIds)
canvas canvas
.getObjects() .getObjects()
.filter((obj) => moduleIds.includes(obj.parentId)) .filter((obj) => moduleIds.includes(obj.parentId))
.map((text) => { .map((text) => {
console.log('🚀 ~ handleRowClick ~ text:', text)
canvas.remove(text) canvas.remove(text)
}) })
canvas.renderAll() canvas.renderAll()
roofSurface.moduleList.forEach((module) => { roofSurface.moduleList.forEach((module) => {
console.log('🚀 ~ handleRowClick ~ module:', module.uniqueId)
const targetModule = canvas.getObjects().filter((obj) => obj.id === module.uniqueId)[0] const targetModule = canvas.getObjects().filter((obj) => obj.id === module.uniqueId)[0]
const moduleCircuitText = new fabric.Text(module.circuit, { const moduleCircuitText = new fabric.Text(module.circuit, {
left: targetModule.left + targetModule.width / 2, left: targetModule.left + targetModule.width / 2,
@ -270,69 +254,26 @@ export default function StepUp(props) {
}) })
canvas.renderAll() canvas.renderAll()
// console.log('goodsNo >> ', goodsNo, serQty, paralQty)
// PCS
// const pcsItem = stepUpListData.find((stepUp) => stepUp.pcsItemList.find((item) => item.goodsNo === goodsNo))?.pcsItemList[pcsIdx]
// -
// const selectionData = {
// goodsNo: tempStepUpListData[mainIdx].pcsItemList[subIdx].goodsNo,
// pcsInfo: {
// itemId: tempStepUpListData[mainIdx].pcsItemList[subIdx].itemId,
// goodsNo: tempStepUpListData[mainIdx].pcsItemList[subIdx].goodsNo,
// pcsMkrCd: tempStepUpListData[mainIdx].pcsItemList[subIdx].pcsMkrCd,
// pcsSerCd: tempStepUpListData[mainIdx].pcsItemList[subIdx].pcsSerCd,
// },
// allocation: {
// serQty: tempStepUpListData[mainIdx].pcsItemList[subIdx].serQtyList[subIdx].serQty,
// paralQty: tempStepUpListData[mainIdx].pcsItemList[subIdx].serQtyList[subIdx]. paralQty,
// },
// }
// //
// setSelectedValues((prev) => ({
// ...prev,
// [tempStepUpListData[mainIdx].pcsItemList[subIdx].goodsNo]: {
// ...prev[tempStepUpListData[mainIdx].pcsItemList[subIdx].goodsNo],
// [pcsKey]: selectionData,
// },
// }))
// //
// if (props.onValuesSelected) {
// props.onValuesSelected(selectionData)
// }
// setSelectedRows((prev) => {
// // stepUpId
// const currentStepUpSelections = prev[goodsNo] || {}
// // ,
// if (currentStepUpSelections[pcsKey] === rowKey) {
// return prev
// }
// return {
// ...prev,
// [goodsNo]: {
// ...currentStepUpSelections,
// [pcsKey]: rowKey,
// },
// }
// })
// // ,
// setIsManualSelection((prev) => ({
// ...prev,
// [goodsNo]: {
// ...prev[goodsNo],
// [pcsKey]: true,
// },
// }))
} }
// //
const getCurrentSelections = () => { const getCurrentSelections = () => {
const selectedValues = stepUpListData[0].pcsItemList.forEach((item) => {
item.serQtyList.filter((serQty) => serQty.selected)
return item.serQtyList.map((serQty) => {
return {
pcsMkrCd: serQty.pcsMkrCd,
pcsSerCd: serQty.pcsSerCd,
pcsItemId: serQty.itemId,
pcsOptCd: seletedOption,
paralQty: serQty.paralQty,
connections: {
connItemId: item.connList[0].itemId,
},
}
})
})
return selectedValues return selectedValues
} }
@ -472,7 +413,15 @@ export default function StepUp(props) {
{optCodes.length > 0 && ( {optCodes.length > 0 && (
<div className="grid-select mr10"> <div className="grid-select mr10">
{/* <QSelectBox title={'電力検出ユニット (モニター付き)'} /> */} {/* <QSelectBox title={'電力検出ユニット (モニター付き)'} /> */}
<QSelectBox options={optCodes} title={optCodes[0].name} value={optCodes[0].name} sourceKey="code" targetKey="code" showKey="name" /> <QSelectBox
options={optCodes}
title={optCodes[0].name}
value={seletedOption}
sourceKey="code"
targetKey="code"
showKey="name"
onChange={(e) => setSeletedOption(e)}
/>
</div> </div>
)} )}
</div> </div>