집계표 버그 수정

This commit is contained in:
김민식 2025-03-10 14:44:06 +09:00
parent 4175a11f52
commit cd87f6647b
7 changed files with 41 additions and 47 deletions

View File

@ -49,7 +49,7 @@ export default function CanvasFrame() {
const resetPcsCheckState = useResetRecoilState(pcsCheckState) const resetPcsCheckState = useResetRecoilState(pcsCheckState)
const { handleModuleSelectionTotal } = useCanvasPopupStatusController() const { handleModuleSelectionTotal } = useCanvasPopupStatusController()
const { fetchBasicSettings } = useCanvasSetting() const { fetchBasicSettings } = useCanvasSetting()
const { setSelectedMenu } = useCanvasMenu() const { selectedMenu, setSelectedMenu } = useCanvasMenu()
const { initEvent } = useEvent() const { initEvent } = useEvent()
const loadCanvas = () => { const loadCanvas = () => {
@ -69,6 +69,7 @@ export default function CanvasFrame() {
initEvent() initEvent()
}) })
} }
Object.keys(currentCanvasPlan).length > 0 && canvas && handleModuleSelectionTotal()
} }
gridInit() gridInit()
} }
@ -76,7 +77,6 @@ export default function CanvasFrame() {
useEffect(() => { useEffect(() => {
loadCanvas() loadCanvas()
resetRecoilData() resetRecoilData()
Object.keys(currentCanvasPlan).length > 0 && canvas && handleModuleSelectionTotal()
/* 플랜번호가 있으면 베이직세팅 팝업 데이터 로드 */ /* 플랜번호가 있으면 베이직세팅 팝업 데이터 로드 */
if (currentCanvasPlan.planNo) { if (currentCanvasPlan.planNo) {
@ -97,7 +97,7 @@ export default function CanvasFrame() {
}, []) }, [])
const resetRecoilData = () => { const resetRecoilData = () => {
resetModuleStatisticsState() // resetModuleStatisticsState()
resetMakersState() resetMakersState()
resetSelectedMakerState() resetSelectedMakerState()
resetSeriesState() resetSeriesState()
@ -121,12 +121,7 @@ export default function CanvasFrame() {
</ul> </ul>
))} ))}
</QContextMenu> </QContextMenu>
{[ {selectedMenu === 'module' && totalDisplay && <PanelBatchStatistics />}
MENU.MODULE_CIRCUIT_SETTING.BASIC_SETTING,
MENU.MODULE_CIRCUIT_SETTING.CIRCUIT_TRESTLE_SETTING,
MENU.MODULE_CIRCUIT_SETTING.PLAN_ORIENTATION,
].includes(currentMenu) &&
totalDisplay && <PanelBatchStatistics />}
{/* 이미지 로드 팝업 */} {/* 이미지 로드 팝업 */}
<ImgLoad /> <ImgLoad />
</div> </div>

View File

@ -52,7 +52,7 @@ export default function CircuitTrestleSetting({ id }) {
// const [stepUpListData, setStepUpListData] = useRecoilState(stepUpListDataState) // const [stepUpListData, setStepUpListData] = useRecoilState(stepUpListDataState)
const [stepUpListData, setStepUpListData] = useState([]) const [stepUpListData, setStepUpListData] = useState([])
const [seletedOption, setSeletedOption] = useState(null) const [seletedOption, setSeletedOption] = useState(null)
const { setModuleStatisticsData, resetCircuits } = useCircuitTrestle() const { setModuleStatisticsData } = useCircuitTrestle()
const { handleCanvasToPng } = useImgLoader() const { handleCanvasToPng } = useImgLoader()
const passivityCircuitAllocationRef = useRef() const passivityCircuitAllocationRef = useRef()
@ -92,17 +92,6 @@ export default function CircuitTrestleSetting({ id }) {
// selectedModels, // selectedModels,
// pcsCheck, // pcsCheck,
// }) // })
return () => {
if (
canvas
.getObjects()
.filter((obj) => obj.name === POLYGON_TYPE.MODULE_SETUP_SURFACE)
.some((surface) => !surface.isComplete)
) {
resetCircuits()
}
}
}, []) }, [])
// //

View File

@ -21,7 +21,7 @@ export default function PanelBatchStatistics() {
}) })
const canvas = useRecoilValue(canvasState) const canvas = useRecoilValue(canvasState)
const { header, rows, footer } = useRecoilValue(moduleStatisticsState) const { header, rows, footer } = useRecoilValue(moduleStatisticsState)
const { setModuleStatisticsData } = useCircuitTrestle() const { setModuleStatisticsData } = useCircuitTrestle(true)
const [moduleSelectionDataStore, setModuleSelectionDataStore] = useRecoilState(moduleSelectionDataState) const [moduleSelectionDataStore, setModuleSelectionDataStore] = useRecoilState(moduleSelectionDataState)
useEffect(() => { useEffect(() => {

View File

@ -9,6 +9,7 @@ import { globalFontAtom } from '@/store/fontAtom'
import { useRoof } from '@/hooks/common/useRoof' import { useRoof } from '@/hooks/common/useRoof'
import { usePolygon } from '@/hooks/usePolygon' import { usePolygon } from '@/hooks/usePolygon'
import { useRoofFn } from '@/hooks/common/useRoofFn' import { useRoofFn } from '@/hooks/common/useRoofFn'
import { POLYGON_TYPE } from '@/common/common'
export function useCanvasConfigInitialize() { export function useCanvasConfigInitialize() {
const canvas = useRecoilValue(canvasState) const canvas = useRecoilValue(canvasState)
@ -211,17 +212,20 @@ export function useCanvasConfigInitialize() {
} }
const moduleInit = () => { const moduleInit = () => {
canvas const roofSurfaceList = canvas.getObjects().filter((obj) => obj.name === POLYGON_TYPE.MODULE_SETUP_SURFACE)
.getObjects() const modules = canvas.getObjects().filter((obj) => obj.name === POLYGON_TYPE.MODULE)
.filter((obj) => obj.name === 'module') roofSurfaceList.forEach((surface) => {
.forEach((obj) => { surface.modules = modules.filter((module) => module.surfaceId === surface.id)
obj.set({ })
selectable: true, modules.forEach((obj) => {
lockMovementX: true, console.log(obj)
lockMovementY: true, obj.set({
}) selectable: true,
obj.setViewLengthText(false) lockMovementX: true,
lockMovementY: true,
}) })
obj.setViewLengthText(false)
})
} }
return { canvasLoadInit, gridInit } return { canvasLoadInit, gridInit }

View File

@ -8,6 +8,8 @@ import { moduleSelectionDataState, selectedModuleState } from '@/store/selectedM
import { compasDegAtom } from '@/store/orientationAtom' import { compasDegAtom } from '@/store/orientationAtom'
import { canvasState, currentCanvasPlanState } from '@/store/canvasAtom' import { canvasState, currentCanvasPlanState } from '@/store/canvasAtom'
import { POLYGON_TYPE } from '@/common/common' import { POLYGON_TYPE } from '@/common/common'
import { useCircuitTrestle } from '../useCirCuitTrestle'
import { useEffect } from 'react'
/** /**
* 캔버스 팝업 상태 관리 * 캔버스 팝업 상태 관리
@ -58,13 +60,12 @@ export function useCanvasPopupStatusController(param = 1) {
} else if (i === 2) { } else if (i === 2) {
const data = JSON.parse(unescapeString(result.popupStatus)) const data = JSON.parse(unescapeString(result.popupStatus))
setModuleSelectionDataStore(data) setModuleSelectionDataStore(data)
if (data.module) setSelectedModules(data.module)
const roofSurfaceList = canvas.getObjects().filter((obj) => obj.name === POLYGON_TYPE.MODULE_SETUP_SURFACE) const roofSurfaceList = canvas.getObjects().filter((obj) => obj.name === POLYGON_TYPE.MODULE_SETUP_SURFACE)
const modules = canvas.getObjects().filter((obj) => obj.name === POLYGON_TYPE.MODULE) const modules = canvas.getObjects().filter((obj) => obj.name === POLYGON_TYPE.MODULE)
roofSurfaceList.forEach((surface) => { roofSurfaceList.forEach((surface) => {
surface.modules = modules.filter((module) => module.surfaceId === surface.id) surface.modules = modules.filter((module) => module.surfaceId === surface.id)
}) })
if (data.module) setSelectedModules(data.module)
} }
} }
} }

View File

@ -11,13 +11,12 @@ import {
seriesState, seriesState,
} from '@/store/circuitTrestleAtom' } from '@/store/circuitTrestleAtom'
import { moduleSelectionDataState, selectedModuleState } from '@/store/selectedModuleOptions' import { moduleSelectionDataState, selectedModuleState } from '@/store/selectedModuleOptions'
import { useContext } from 'react' import { useContext, useEffect } from 'react'
import { useRecoilState, useRecoilValue, useSetRecoilState } from 'recoil' import { useRecoilState, useRecoilValue, useResetRecoilState, useSetRecoilState } from 'recoil'
import { useMessage } from './useMessage' import { useMessage } from './useMessage'
import { useCanvasPopupStatusController } from './common/useCanvasPopupStatusController'
import Big from 'big.js' import Big from 'big.js'
export function useCircuitTrestle() { export function useCircuitTrestle(executeEffect = false) {
const [makers, setMakers] = useRecoilState(makersState) const [makers, setMakers] = useRecoilState(makersState)
const [selectedMaker, setSelectedMaker] = useRecoilState(selectedMakerState) const [selectedMaker, setSelectedMaker] = useRecoilState(selectedMakerState)
const [series, setSeries] = useRecoilState(seriesState) const [series, setSeries] = useRecoilState(seriesState)
@ -27,10 +26,14 @@ export function useCircuitTrestle() {
const selectedModules = useRecoilValue(selectedModuleState) const selectedModules = useRecoilValue(selectedModuleState)
const { managementState, setManagementState, managementStateLoaded } = useContext(GlobalDataContext) const { managementState, setManagementState, managementStateLoaded } = useContext(GlobalDataContext)
const canvas = useRecoilValue(canvasState) const canvas = useRecoilValue(canvasState)
const { trigger: moduleSelectedDataTrigger } = useCanvasPopupStatusController(2)
const [moduleSelectionData, setModuleSelectionData] = useRecoilState(moduleSelectionDataState)
const setModuleStatistics = useSetRecoilState(moduleStatisticsState) const setModuleStatistics = useSetRecoilState(moduleStatisticsState)
const resetModuleStatistics = useResetRecoilState(moduleStatisticsState)
const { getMessage } = useMessage() const { getMessage } = useMessage()
useEffect(() => {
if (Object.keys(selectedModules).length > 0 && executeEffect) setModuleStatisticsData()
}, [selectedModules])
const getOptYn = () => { const getOptYn = () => {
return { return {
maxConnYn: pcsCheck.max ? 'Y' : 'N', maxConnYn: pcsCheck.max ? 'Y' : 'N',
@ -178,7 +181,15 @@ export function useCircuitTrestle() {
const setModuleStatisticsData = () => { const setModuleStatisticsData = () => {
console.log('selectedModules', selectedModules) console.log('selectedModules', selectedModules)
if (!selectedModules || !selectedModules?.itemList || selectedModules?.itemList?.length === 0) return if (
!selectedModules ||
!selectedModules?.itemList ||
selectedModules?.itemList?.length === 0 ||
canvas.getObjects().filter((obj) => obj.name === POLYGON_TYPE.MODULE).length === 0
) {
resetModuleStatistics()
return
}
const tempHeader = [ const tempHeader = [
{ name: getMessage('simulator.table.sub1'), prop: 'name' }, { name: getMessage('simulator.table.sub1'), prop: 'name' },
{ name: getMessage('modal.circuit.trestle.setting.circuit.allocation.passivity.circuit'), prop: 'circuit' }, { name: getMessage('modal.circuit.trestle.setting.circuit.allocation.passivity.circuit'), prop: 'circuit' },

View File

@ -282,12 +282,6 @@ export function usePlan(params = {}) {
/** 리코일 세팅 */ /** 리코일 세팅 */
setModuleSelectionDataStore(copyData) setModuleSelectionDataStore(copyData)
if (copyData.module) setSelectedModules(copyData.module) if (copyData.module) setSelectedModules(copyData.module)
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)
})
setSelectedMenu(currentSelectedMenu) setSelectedMenu(currentSelectedMenu)
} else { } else {
setSelectedMenu('placement') setSelectedMenu('placement')