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