From 61ae67ece248f6f63255830becae85a16e3ff29d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=AF=BC=EC=8B=9D?= <43837214+Minsiki@users.noreply.github.com> Date: Sat, 8 Feb 2025 14:14:06 +0900 Subject: [PATCH] =?UTF-8?q?-=20=EB=B2=84=EA=B7=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/common/common.js | 2 ++ .../step/PowerConditionalSelect.jsx | 16 ++++++---- .../step/type/PassivityCircuitAllocation.jsx | 4 +-- src/hooks/useCirCuitTrestle.js | 30 ++++++++++++------- 4 files changed, 35 insertions(+), 17 deletions(-) diff --git a/src/common/common.js b/src/common/common.js index e77f84a5..cf6d37bf 100644 --- a/src/common/common.js +++ b/src/common/common.js @@ -183,6 +183,8 @@ export const SAVE_KEY = [ 'roofMaterial', 'isComplete', 'moduleInfo', + 'circuitNumber', + 'circuit', ] export const OBJECT_PROTOTYPE = [fabric.Line.prototype, fabric.Polygon.prototype, fabric.Triangle.prototype] diff --git a/src/components/floor-plan/modal/circuitTrestle/step/PowerConditionalSelect.jsx b/src/components/floor-plan/modal/circuitTrestle/step/PowerConditionalSelect.jsx index 1d28d7d0..06cab2f1 100644 --- a/src/components/floor-plan/modal/circuitTrestle/step/PowerConditionalSelect.jsx +++ b/src/components/floor-plan/modal/circuitTrestle/step/PowerConditionalSelect.jsx @@ -1,11 +1,12 @@ import { GlobalDataContext } from '@/app/GlobalDataProvider' import QSelectBox from '@/components/common/select/QSelectBox' +import { useCanvasPopupStatusController } from '@/hooks/common/useCanvasPopupStatusController' import { useMasterController } from '@/hooks/common/useMasterController' import { useMessage } from '@/hooks/useMessage' import { useSwal } from '@/hooks/useSwal' import { pcsCheckState } from '@/store/circuitTrestleAtom' import { globalLocaleStore } from '@/store/localeAtom' -import { selectedModuleState } from '@/store/selectedModuleOptions' +import { moduleSelectionDataState, selectedModuleState } from '@/store/selectedModuleOptions' import { isNullOrUndefined } from '@/util/common-utils' import { useContext, useEffect, useState } from 'react' import { useRecoilState } from 'recoil' @@ -37,7 +38,8 @@ export default function PowerConditionalSelect(props) { const { getPcsMakerList, getPcsModelList } = useMasterController() const selectedModules = useRecoilValue(selectedModuleState) const { swalFire } = useSwal() - // const [moduleSelectionData, setModuleSelectionData] = useRecoilState(moduleSelectionDataState) + const { trigger: moduleSelectedDataTrigger } = useCanvasPopupStatusController(2) + const [moduleSelectionData, setModuleSelectionData] = useRecoilState(moduleSelectionDataState) const modelHeader = [ { name: getMessage('시리즈'), width: '15%', prop: 'pcsSerNm', type: 'color-box' }, { name: getMessage('명칭'), width: '15%', prop: 'goodsNo', type: 'color-box' }, @@ -66,7 +68,6 @@ export default function PowerConditionalSelect(props) { useEffect(() => { if (makers.length === 0) { getPcsMakerList().then((res) => { - console.log('getPcsMakerList', res.data) setMakers(res.data) }) } @@ -130,7 +131,12 @@ export default function PowerConditionalSelect(props) { const pcsSerList = selectedSeries.map((series) => { return { pcsSerCd: series.pcsSerCd } }) - const moduleItemList = getUseModuleItemList() + const moduleItemList = moduleSelectionData.module.itemList.map((item) => { + return { + itemId: item.itemId, + mixMatlNo: item.mixMatlNo, + } + }) getPcsModelList({ pcsMkrCd, pcsSerList, moduleItemList }).then((res) => { if (res?.result.code === 200 && res?.data) { setModels( @@ -179,7 +185,7 @@ export default function PowerConditionalSelect(props) { setSelectedMaker(option) const param = { pcsMkrCd: option.pcsMkrCd, - mixMatlNo: getUseModuleItemList()[0].mixMatlNo, + mixMatlNo: moduleSelectionData.module.mixMatlNo, } getPcsMakerList(param).then((res) => { diff --git a/src/components/floor-plan/modal/circuitTrestle/step/type/PassivityCircuitAllocation.jsx b/src/components/floor-plan/modal/circuitTrestle/step/type/PassivityCircuitAllocation.jsx index 0463734c..635e1f8f 100644 --- a/src/components/floor-plan/modal/circuitTrestle/step/type/PassivityCircuitAllocation.jsx +++ b/src/components/floor-plan/modal/circuitTrestle/step/type/PassivityCircuitAllocation.jsx @@ -2,6 +2,7 @@ import { GlobalDataContext } from '@/app/GlobalDataProvider' import { POLYGON_TYPE } from '@/common/common' import { useMasterController } from '@/hooks/common/useMasterController' import { useModule } from '@/hooks/module/useModule' +import { useCircuitTrestle } from '@/hooks/useCirCuitTrestle' import { useMessage } from '@/hooks/useMessage' import { useSwal } from '@/hooks/useSwal' import { canvasState } from '@/store/canvasAtom' @@ -28,9 +29,9 @@ export default function PassivityCircuitAllocation(props) { const { header, rows, footer } = useRecoilValue(moduleStatisticsState) const [circuitNumber, setCircuitNumber] = useState(1) const [targetModules, setTargetModules] = useState([]) - const { setModuleStatisticsData } = useModule() const { getPcsManualConfChk } = useMasterController() const isDisplayCircuitNumber = useRecoilValue(circuitNumDisplaySelector) + const { setModuleStatisticsData } = useCircuitTrestle() useEffect(() => { setModuleStatisticsData() @@ -260,7 +261,6 @@ export default function PassivityCircuitAllocation(props) { return parseInt(circuitNumber[circuitNumber.length - 1]) }) const minCircuitNumber = Math.min(...circuitNumbers) - console.log(circuitNumbers, minCircuitNumber) canvas.remove(...circuitModules.map((module) => module.circuit)) circuitModules.forEach((obj) => { obj.circuit = null diff --git a/src/hooks/useCirCuitTrestle.js b/src/hooks/useCirCuitTrestle.js index b72581b3..3c072af6 100644 --- a/src/hooks/useCirCuitTrestle.js +++ b/src/hooks/useCirCuitTrestle.js @@ -10,10 +10,11 @@ import { selectedModelsState, seriesState, } from '@/store/circuitTrestleAtom' -import { selectedModuleState } from '@/store/selectedModuleOptions' +import { moduleSelectionDataState, selectedModuleState } from '@/store/selectedModuleOptions' import { useContext } from 'react' import { useRecoilState, useRecoilValue, useSetRecoilState } from 'recoil' import { useMessage } from './useMessage' +import { useCanvasPopupStatusController } from './common/useCanvasPopupStatusController' export function useCircuitTrestle() { const [makers, setMakers] = useRecoilState(makersState) @@ -25,7 +26,8 @@ export function useCircuitTrestle() { const selectedModules = useRecoilValue(selectedModuleState) const { managementState, setManagementState, managementStateLoaded } = useContext(GlobalDataContext) const canvas = useRecoilValue(canvasState) - + const { trigger: moduleSelectedDataTrigger } = useCanvasPopupStatusController(2) + const [moduleSelectionData, setModuleSelectionData] = useRecoilState(moduleSelectionDataState) const setModuleStatistics = useSetRecoilState(moduleStatisticsState) const { getMessage } = useMessage() const getOptYn = () => { @@ -60,7 +62,7 @@ export function useCircuitTrestle() { // 사용된 모듈아이템 목록 const getUseModuleItemList = () => { console.log('🚀 ~ getUseModuleItemList ~ selectedModules:', selectedModules) - return selectedModules?.itemList?.map((m) => { + return moduleSelectionData.module?.itemList?.map((m) => { return { itemId: m.itemId, mixMatlNo: m.mixMatlNo, @@ -71,6 +73,10 @@ export function useCircuitTrestle() { // 지붕면 목록 const getRoofSurfaceList = () => { const roofSurfaceList = canvas.getObjects().filter((obj) => obj.name === POLYGON_TYPE.MODULE_SETUP_SURFACE) + const modules = canvas.getObjects().filter((obj) => obj.name === POLYGON_TYPE.MODULE) + roofSurfaceList.forEach((surface) => { + surface.modules = modules.filter((module) => module.surfaceId === surface.id) + }) roofSurfaceList.sort((a, b) => a.left - b.left || b.top - a.top) return roofSurfaceList .map((obj) => { @@ -177,12 +183,16 @@ export function useCircuitTrestle() { const setPowerConditionerData = () => {} const setModuleStatisticsData = () => { - console.log(canvas.getObjects().filter((obj) => obj.name === POLYGON_TYPE.MODULE_SETUP_SURFACE)) - if (selectedModules?.length === 0) return + const roofSurfaceList = canvas.getObjects().filter((obj) => obj.name === POLYGON_TYPE.MODULE_SETUP_SURFACE) + const modules = canvas.getObjects().filter((obj) => obj.name === POLYGON_TYPE.MODULE) + roofSurfaceList.forEach((surface) => { + surface.modules = modules.filter((module) => module.surfaceId === surface.id) + }) + if (!moduleSelectionData.module || moduleSelectionData.module?.itemList?.length === 0) return const tempHeader = [ { name: getMessage('simulator.table.sub1'), prop: 'name' }, { name: getMessage('modal.circuit.trestle.setting.circuit.allocation.passivity.circuit'), prop: 'circuit' }, - ...selectedModules?.itemList?.map((module) => { + ...moduleSelectionData.module?.itemList?.map((module) => { return { name: module.itemNm, prop: module.itemId, @@ -236,7 +246,7 @@ export function useCircuitTrestle() { circuit: surfaceObjects[key].circuit, wpOut: parseFloat(surfaceObjects[key].wpOut / 1000), } - selectedModules.itemList.forEach((module) => { + moduleSelectionData.module.itemList.forEach((module) => { tempRow[module.itemId] = surfaceObjects[key][module.itemId] }) tempRows.push(tempRow) @@ -247,7 +257,7 @@ export function useCircuitTrestle() { circuit: surfaceObjects[key].circuits[circuit].circuit, wpOut: parseFloat(surfaceObjects[key].circuits[circuit].circuits.wpOut / 1000), } - selectedModules.itemList.forEach((module) => { + moduleSelectionData.module.itemList.forEach((module) => { row[module.itemId] = surfaceObjects[key].circuits[circuit].circuits[module.itemId] }) tempRows.push(row) @@ -259,8 +269,8 @@ export function useCircuitTrestle() { circuit: '-', wpOut: tempRows.reduce((acc, row) => acc + row.wpOut, 0), } - selectedModules.itemList.forEach((module) => { - tempFooter[module.itemId] = tempRows.reduce((acc, row) => acc + row[module.itemId], 0) + moduleSelectionData.module.itemList.forEach((module) => { + tempFooter[module.itemId] = tempRows.reduce((acc, row) => acc + (row[module.itemId] ?? 0), 0) }) canvas.getObjects().filter((obj) => obj.name === POLYGON_TYPE.MODULE_SETUP_SURFACE) setModuleStatistics({ header: tempHeader, rows: tempRows.filter((row) => row.wpOut !== 0), footer: tempFooter })