가배 설치 후 모듈 이동, 복사시 회로 초기화

This commit is contained in:
김민식 2025-03-06 15:46:52 +09:00
parent 187bdbcbac
commit 4cb865ba32
2 changed files with 54 additions and 59 deletions

View File

@ -1,4 +1,4 @@
import { BATCH_TYPE, POLYGON_TYPE } from '@/common/common' import { BATCH_TYPE, POLYGON_TYPE, TRESTLE_MATERIAL } from '@/common/common'
import { canvasState } from '@/store/canvasAtom' import { canvasState } from '@/store/canvasAtom'
import { isOverlap, polygonToTurfPolygon, rectToPolygon } from '@/util/canvas-util' import { isOverlap, polygonToTurfPolygon, rectToPolygon } from '@/util/canvas-util'
import { useRecoilValue, useSetRecoilState } from 'recoil' import { useRecoilValue, useSetRecoilState } from 'recoil'
@ -10,6 +10,7 @@ import { useMessage } from '../useMessage'
import { selectedModuleState } from '@/store/selectedModuleOptions' import { selectedModuleState } from '@/store/selectedModuleOptions'
import { moduleStatisticsState } from '@/store/circuitTrestleAtom' import { moduleStatisticsState } from '@/store/circuitTrestleAtom'
import { useCircuitTrestle } from '../useCirCuitTrestle' import { useCircuitTrestle } from '../useCirCuitTrestle'
import { useTrestle } from './useTrestle'
export const MODULE_REMOVE_TYPE = { export const MODULE_REMOVE_TYPE = {
LEFT: 'left', LEFT: 'left',
@ -39,7 +40,8 @@ export function useModule() {
const { getMessage } = useMessage() const { getMessage } = useMessage()
const { checkModuleDisjointObjects } = useModuleBasicSetting() const { checkModuleDisjointObjects } = useModuleBasicSetting()
const selectedModules = useRecoilValue(selectedModuleState) const selectedModules = useRecoilValue(selectedModuleState)
const { setModuleStatisticsData } = useCircuitTrestle() const { setModuleStatisticsData, resetCircuits } = useCircuitTrestle()
const { clear: removeTrestleMaterials } = useTrestle()
const moduleMove = (length, direction) => { const moduleMove = (length, direction) => {
const selectedObj = canvas.getActiveObjects() //선택된 객체들을 가져옴 const selectedObj = canvas.getActiveObjects() //선택된 객체들을 가져옴
@ -56,9 +58,7 @@ export function useModule() {
const isSetupModules = getOtherModules(selectedObj) const isSetupModules = getOtherModules(selectedObj)
const selectedModules = canvas.getObjects().filter((obj) => selectedIds.includes(obj.id) && obj.name === 'module') //선택했던 객체들만 가져옴 const selectedModules = canvas.getObjects().filter((obj) => selectedIds.includes(obj.id) && obj.name === 'module') //선택했던 객체들만 가져옴
const setupSurface = canvas const setupSurface = canvas.getObjects().find((obj) => obj.name === POLYGON_TYPE.MODULE_SETUP_SURFACE && obj.id === selectedModules[0].surfaceId)
.getObjects()
.filter((obj) => obj.name === POLYGON_TYPE.MODULE_SETUP_SURFACE && obj.id === selectedModules[0].surfaceId)[0]
let isWarning = false let isWarning = false
const objects = getObjects() const objects = getObjects()
@ -107,7 +107,7 @@ export function useModule() {
canvas.discardActiveObject() canvas.discardActiveObject()
return return
} }
const activeModule = canvas.getObjects().filter((obj) => canvas.getActiveObjects()[0].id === obj.id)[0] const activeModule = canvas.getObjects().find((obj) => canvas.getActiveObjects()[0].id === obj.id)
if (activeModule.circuit) { if (activeModule.circuit) {
swalFire({ swalFire({
title: getMessage('can.not.move.module'), title: getMessage('can.not.move.module'),
@ -119,9 +119,7 @@ export function useModule() {
const modules = type === 'row' ? getRowModules(activeModule) : getColumnModules(activeModule) const modules = type === 'row' ? getRowModules(activeModule) : getColumnModules(activeModule)
const otherModules = getOtherModules(modules) const otherModules = getOtherModules(modules)
const objects = getObjects() const objects = getObjects()
const moduleSetupSurface = canvas const moduleSetupSurface = canvas.getObjects().find((obj) => obj.name === POLYGON_TYPE.MODULE_SETUP_SURFACE && obj.id === activeModule.surfaceId)
.getObjects()
.filter((obj) => obj.name === POLYGON_TYPE.MODULE_SETUP_SURFACE && obj.id === activeModule.surfaceId)[0]
let isWarning = false let isWarning = false
modules.forEach((module) => { modules.forEach((module) => {
@ -275,9 +273,7 @@ export function useModule() {
const modules = canvas.getObjects().filter((obj) => activeModuleIds.includes(obj.id)) const modules = canvas.getObjects().filter((obj) => activeModuleIds.includes(obj.id))
const objects = getObjects() const objects = getObjects()
const otherModules = canvas.getObjects().filter((obj) => obj.surfaceId === modules[0].surfaceId && obj.name === POLYGON_TYPE.MODULE) const otherModules = canvas.getObjects().filter((obj) => obj.surfaceId === modules[0].surfaceId && obj.name === POLYGON_TYPE.MODULE)
const moduleSetupSurface = canvas const moduleSetupSurface = canvas.getObjects().find((obj) => obj.name === POLYGON_TYPE.MODULE_SETUP_SURFACE && obj.id === modules[0].surfaceId)
.getObjects()
.filter((obj) => obj.name === POLYGON_TYPE.MODULE_SETUP_SURFACE && obj.id === modules[0].surfaceId)[0]
let isWarning = false let isWarning = false
let copyModules = [] let copyModules = []
let copyModule = null let copyModule = null
@ -344,15 +340,21 @@ export function useModule() {
canvas.discardActiveObject() canvas.discardActiveObject()
return return
} }
const activeModule = canvas.getObjects().filter((obj) => canvas.getActiveObjects()[0].id === obj.id)[0] const activeModule = canvas.getObjects().find((obj) => canvas.getActiveObjects()[0].id === obj.id)
if (activeModule.circuit) {
swalFire({
title: getMessage('can.not.copy.module'),
icon: 'error',
type: 'alert',
})
return
}
const modules = type === 'row' ? getRowModules(activeModule) : getColumnModules(activeModule) const modules = type === 'row' ? getRowModules(activeModule) : getColumnModules(activeModule)
const otherModules = canvas.getObjects().filter((obj) => obj.surfaceId === modules[0].surfaceId && obj.name === POLYGON_TYPE.MODULE) const otherModules = canvas.getObjects().filter((obj) => obj.surfaceId === modules[0].surfaceId && obj.name === POLYGON_TYPE.MODULE)
const objects = getObjects() const objects = getObjects()
const copyModules = [] const copyModules = []
let copyModule = null let copyModule = null
const moduleSetupSurface = canvas const moduleSetupSurface = canvas.getObjects().find((obj) => obj.name === POLYGON_TYPE.MODULE_SETUP_SURFACE && obj.id === modules[0].surfaceId)
.getObjects()
.filter((obj) => obj.name === POLYGON_TYPE.MODULE_SETUP_SURFACE && obj.id === modules[0].surfaceId)[0]
let isWarning = false let isWarning = false
let moduleLength = 0 let moduleLength = 0
if (['up', 'down'].includes(direction)) { if (['up', 'down'].includes(direction)) {
@ -415,15 +417,7 @@ export function useModule() {
if (isFixedModule()) { if (isFixedModule()) {
return return
} }
const activeModule = canvas.getObjects().filter((obj) => canvas.getActiveObjects()[0].id === obj.id)[0] const activeModule = canvas.getObjects().find((obj) => canvas.getActiveObjects()[0].id === obj.id)
if (activeModule.circuit) {
swalFire({
title: getMessage('can.not.move.module'),
icon: 'error',
type: 'alert',
})
return
}
const columnModules = getColumnModules(activeModule) const columnModules = getColumnModules(activeModule)
const otherModules = getOtherModules(columnModules) const otherModules = getOtherModules(columnModules)
const objects = getObjects() const objects = getObjects()
@ -431,10 +425,11 @@ export function useModule() {
const rightModules = otherModules.filter((module) => activeModule.left < module.left).sort((a, b) => a.left - b.left) const rightModules = otherModules.filter((module) => activeModule.left < module.left).sort((a, b) => a.left - b.left)
const leftModules = otherModules.filter((module) => activeModule.left > module.left).sort((a, b) => b.left - a.left) const leftModules = otherModules.filter((module) => activeModule.left > module.left).sort((a, b) => b.left - a.left)
let width = -1 let width = -1
const moduleSetupSurface = canvas const moduleSetupSurface = canvas.getObjects().find((obj) => obj.name === POLYGON_TYPE.MODULE_SETUP_SURFACE && obj.id === activeModule.surfaceId)
.getObjects()
.filter((obj) => obj.name === POLYGON_TYPE.MODULE_SETUP_SURFACE && obj.id === activeModule.surfaceId)[0]
let isWarning = false let isWarning = false
if (moduleSetupSurface.isComplete) {
resetSurface()
}
canvas.discardActiveObject() canvas.discardActiveObject()
moduleSetupSurface.set({ modules: otherModules }) moduleSetupSurface.set({ modules: otherModules })
canvas.remove(...columnModules) canvas.remove(...columnModules)
@ -538,10 +533,10 @@ export function useModule() {
} }
const moduleRowRemove = (type) => { const moduleRowRemove = (type) => {
if (isFixedModule()) { // if (isFixedModule()) {
return // return
} // }
const activeModule = canvas.getObjects().filter((obj) => canvas.getActiveObjects()[0].id === obj.id)[0] const activeModule = canvas.getObjects().find((obj) => canvas.getActiveObjects()[0].id === obj.id)
const rowModules = getRowModules(activeModule) const rowModules = getRowModules(activeModule)
const otherModules = getOtherModules(rowModules) const otherModules = getOtherModules(rowModules)
const objects = getObjects() const objects = getObjects()
@ -549,11 +544,11 @@ export function useModule() {
const topModules = otherModules.filter((module) => activeModule.top > module.top).sort((a, b) => b.top - a.top) const topModules = otherModules.filter((module) => activeModule.top > module.top).sort((a, b) => b.top - a.top)
const bottomModules = otherModules.filter((module) => activeModule.top < module.top).sort((a, b) => a.top - b.top) const bottomModules = otherModules.filter((module) => activeModule.top < module.top).sort((a, b) => a.top - b.top)
let height = -1 let height = -1
const moduleSetupSurface = canvas const moduleSetupSurface = canvas.getObjects().find((obj) => obj.name === POLYGON_TYPE.MODULE_SETUP_SURFACE && obj.id === activeModule.surfaceId)
.getObjects()
.filter((obj) => obj.name === POLYGON_TYPE.MODULE_SETUP_SURFACE && obj.id === activeModule.surfaceId)[0]
let isWarning = false let isWarning = false
if (moduleSetupSurface.isComplete) {
resetSurface()
}
canvas.discardActiveObject() canvas.discardActiveObject()
moduleSetupSurface.set({ modules: otherModules }) moduleSetupSurface.set({ modules: otherModules })
canvas.remove(...rowModules) canvas.remove(...rowModules)
@ -660,7 +655,7 @@ export function useModule() {
if (isFixedModule()) { if (isFixedModule()) {
return return
} }
const activeModule = canvas.getObjects().filter((obj) => canvas.getActiveObjects()[0].id === obj.id)[0] const activeModule = canvas.getObjects().find((obj) => canvas.getActiveObjects()[0].id === obj.id)
const columnModules = getColumnModules(activeModule) const columnModules = getColumnModules(activeModule)
let otherModules = getOtherModules(columnModules) let otherModules = getOtherModules(columnModules)
const targetModules = const targetModules =
@ -669,11 +664,9 @@ export function useModule() {
: otherModules.filter((module) => module.left > activeModule.left).sort((a, b) => a.left - b.left) : otherModules.filter((module) => module.left > activeModule.left).sort((a, b) => a.left - b.left)
const objects = getObjects() const objects = getObjects()
const copyModules = [] const copyModules = []
const moduleSetupSurface = canvas const moduleSetupSurface = canvas.getObjects().find((obj) => obj.name === POLYGON_TYPE.MODULE_SETUP_SURFACE && obj.id === activeModule.surfaceId)
.getObjects() if (moduleSetupSurface.isComplete) {
.filter((obj) => obj.name === POLYGON_TYPE.MODULE_SETUP_SURFACE && obj.id === activeModule.surfaceId)[0] resetSurface()
if (moduleSetupSurface.modules.filter((module) => module.circuit).length > 0) {
return
} }
let width = -1 let width = -1
let isWarning = false let isWarning = false
@ -779,7 +772,7 @@ export function useModule() {
if (isFixedModule()) { if (isFixedModule()) {
return return
} }
const activeModule = canvas.getObjects().filter((obj) => canvas.getActiveObjects()[0].id === obj.id)[0] const activeModule = canvas.getObjects().find((obj) => canvas.getActiveObjects()[0].id === obj.id)
const rowModules = getRowModules(activeModule) const rowModules = getRowModules(activeModule)
let otherModules = getOtherModules(rowModules) let otherModules = getOtherModules(rowModules)
const targetModules = const targetModules =
@ -796,15 +789,14 @@ export function useModule() {
} }
const objects = getObjects() const objects = getObjects()
const copyModules = [] const copyModules = []
const moduleSetupSurface = canvas const moduleSetupSurface = canvas.getObjects().find((obj) => obj.name === POLYGON_TYPE.MODULE_SETUP_SURFACE && obj.id === activeModule.surfaceId)
.getObjects()
.filter((obj) => obj.name === POLYGON_TYPE.MODULE_SETUP_SURFACE && obj.id === activeModule.surfaceId)[0]
if (moduleSetupSurface.modules.filter((module) => module.circuit).length > 0) {
return
}
let height = -1 let height = -1
let isWarning = false let isWarning = false
const { moduleIntvlHor, moduleIntvlVer } = moduleSetupSurface.trestleDetail const { moduleIntvlHor, moduleIntvlVer } = moduleSetupSurface.trestleDetail
if (surface.isComplete) {
resetSurface()
}
canvas.discardActiveObject() canvas.discardActiveObject()
targetModules.forEach((module) => { targetModules.forEach((module) => {
if (height === -1) if (height === -1)
@ -940,19 +932,15 @@ export function useModule() {
} }
const modulesRemove = () => { const modulesRemove = () => {
const activeModule = canvas.getObjects().filter((obj) => canvas.getActiveObjects()[0].id === obj.id)[0] const activeModule = canvas.getObjects().find((obj) => canvas.getActiveObjects()[0].id === obj.id)
if (activeModule.circuit) {
swalFire({
title: getMessage('can.not.move.module'),
icon: 'error',
type: 'alert',
})
return
}
const modules = canvas const modules = canvas
.getObjects() .getObjects()
.filter((obj) => obj.surfaceId === activeModule.surfaceId && obj.name === POLYGON_TYPE.MODULE && activeModule.id !== obj.id) .filter((obj) => obj.surfaceId === activeModule.surfaceId && obj.name === POLYGON_TYPE.MODULE && activeModule.id !== obj.id)
const surface = canvas.getObjects().filter((obj) => obj.id === activeModule.surfaceId && obj.name === POLYGON_TYPE.MODULE_SETUP_SURFACE)[0] const surface = canvas.getObjects().find((obj) => obj.id === activeModule.surfaceId && obj.name === POLYGON_TYPE.MODULE_SETUP_SURFACE)
if (surface.isComplete) {
resetSurface()
}
surface.set({ modules: modules }) surface.set({ modules: modules })
canvas.remove(activeModule) canvas.remove(activeModule)
canvas.renderAll() canvas.renderAll()
@ -1042,6 +1030,11 @@ export function useModule() {
.filter((obj) => [BATCH_TYPE.OPENING, BATCH_TYPE.TRIANGLE_DORMER, BATCH_TYPE.PENTAGON_DORMER, BATCH_TYPE.SHADOW].includes(obj.name)) .filter((obj) => [BATCH_TYPE.OPENING, BATCH_TYPE.TRIANGLE_DORMER, BATCH_TYPE.PENTAGON_DORMER, BATCH_TYPE.SHADOW].includes(obj.name))
} }
const resetSurface = () => {
resetCircuits()
removeTrestleMaterials()
}
return { return {
moduleMove, moduleMove,
moduleMultiMove, moduleMultiMove,

View File

@ -25,6 +25,7 @@ export const useTrestle = () => {
const { setIsGlobalLoading } = useContext(QcastContext) const { setIsGlobalLoading } = useContext(QcastContext)
const { getSelectedPcsItemList } = useCircuitTrestle() const { getSelectedPcsItemList } = useCircuitTrestle()
const { resetCircuits } = useCircuitTrestle()
const apply = () => { const apply = () => {
const notAllocationModules = canvas.getObjects().filter((obj) => obj.name === POLYGON_TYPE.MODULE && !obj.circuit) const notAllocationModules = canvas.getObjects().filter((obj) => obj.name === POLYGON_TYPE.MODULE && !obj.circuit)
@ -2777,6 +2778,7 @@ export const useTrestle = () => {
canvas.remove(obj) canvas.remove(obj)
} }
}) })
resetCircuits()
} }
// 전모듈 의 회로번호 visible false 처리 // 전모듈 의 회로번호 visible false 처리