dev #598
@ -9,7 +9,7 @@ import BasicSetting from '@/components/floor-plan/modal/basic/BasicSetting'
|
||||
import { useMasterController } from '@/hooks/common/useMasterController'
|
||||
import { useRecoilState, useRecoilValue, useSetRecoilState } from 'recoil'
|
||||
import { GlobalDataContext } from '@/app/GlobalDataProvider'
|
||||
import { POLYGON_TYPE, MENU } from '@/common/common'
|
||||
import { MENU, POLYGON_TYPE } from '@/common/common'
|
||||
import { useSwal } from '@/hooks/useSwal'
|
||||
import { canvasState, canvasZoomState, currentMenuState } from '@/store/canvasAtom'
|
||||
|
||||
@ -151,24 +151,31 @@ export default function CircuitTrestleSetting({ id }) {
|
||||
// 정렬 함수: 큰 모듈이 있어야 할 위치부터 시작
|
||||
const getSortFn = () => {
|
||||
switch (direction) {
|
||||
case 'south': return (a, b) => b.y - a.y // 아래쪽(y 큼)부터
|
||||
case 'north': return (a, b) => a.y - b.y // 위쪽(y 작음)부터
|
||||
case 'east': return (a, b) => b.x - a.x // 오른쪽(x 큼)부터
|
||||
case 'west': return (a, b) => a.x - b.x // 왼쪽(x 작음)부터
|
||||
default: return () => 0
|
||||
case 'south':
|
||||
return (a, b) => b.y - a.y // 아래쪽(y 큼)부터
|
||||
case 'north':
|
||||
return (a, b) => a.y - b.y // 위쪽(y 작음)부터
|
||||
case 'east':
|
||||
return (a, b) => b.x - a.x // 오른쪽(x 큼)부터
|
||||
case 'west':
|
||||
return (a, b) => a.x - b.x // 왼쪽(x 작음)부터
|
||||
default:
|
||||
return () => 0
|
||||
}
|
||||
}
|
||||
|
||||
// 타겟 모듈 찾기 (현재 모듈보다 작아야 할 위치의 모듈)
|
||||
const findTargetModules = (current, margin) => {
|
||||
return centerPoints.filter(cp => {
|
||||
const sameAxis = isVertical
|
||||
? Math.abs(cp.x - current.x) < margin
|
||||
: Math.abs(cp.y - current.y) < margin
|
||||
const targetDirection = direction === 'south' ? cp.y < current.y
|
||||
: direction === 'north' ? cp.y > current.y
|
||||
: direction === 'east' ? cp.x < current.x
|
||||
: cp.x > current.x
|
||||
return centerPoints.filter((cp) => {
|
||||
const sameAxis = isVertical ? Math.abs(cp.x - current.x) < margin : Math.abs(cp.y - current.y) < margin
|
||||
const targetDirection =
|
||||
direction === 'south'
|
||||
? cp.y < current.y
|
||||
: direction === 'north'
|
||||
? cp.y > current.y
|
||||
: direction === 'east'
|
||||
? cp.x < current.x
|
||||
: cp.x > current.x
|
||||
return sameAxis && targetDirection
|
||||
})
|
||||
}
|
||||
@ -178,11 +185,16 @@ export default function CircuitTrestleSetting({ id }) {
|
||||
if (filtered.length === 0) return null
|
||||
return filtered.reduce((closest, cp) => {
|
||||
switch (direction) {
|
||||
case 'south': return cp.y > closest.y ? cp : closest
|
||||
case 'north': return cp.y < closest.y ? cp : closest
|
||||
case 'east': return cp.x > closest.x ? cp : closest
|
||||
case 'west': return cp.x < closest.x ? cp : closest
|
||||
default: return closest
|
||||
case 'south':
|
||||
return cp.y > closest.y ? cp : closest
|
||||
case 'north':
|
||||
return cp.y < closest.y ? cp : closest
|
||||
case 'east':
|
||||
return cp.x > closest.x ? cp : closest
|
||||
case 'west':
|
||||
return cp.x < closest.x ? cp : closest
|
||||
default:
|
||||
return closest
|
||||
}
|
||||
})
|
||||
}
|
||||
@ -191,12 +203,12 @@ export default function CircuitTrestleSetting({ id }) {
|
||||
const getGap = (current, target) => {
|
||||
if (isVertical) {
|
||||
return direction === 'south'
|
||||
? (current.y - current.height / 2) - (target.y + target.height / 2)
|
||||
: (target.y - target.height / 2) - (current.y + current.height / 2)
|
||||
? current.y - current.height / 2 - (target.y + target.height / 2)
|
||||
: target.y - target.height / 2 - (current.y + current.height / 2)
|
||||
} else {
|
||||
return direction === 'east'
|
||||
? (current.x - current.width / 2) - (target.x + target.width / 2)
|
||||
: (target.x - target.width / 2) - (current.x + current.width / 2)
|
||||
? current.x - current.width / 2 - (target.x + target.width / 2)
|
||||
: target.x - target.width / 2 - (current.x + current.width / 2)
|
||||
}
|
||||
}
|
||||
|
||||
@ -228,10 +240,14 @@ export default function CircuitTrestleSetting({ id }) {
|
||||
const offsetAxis = isVertical
|
||||
? Math.abs(cp.x - (current.x + offsetValue)) <= primaryInterval
|
||||
: Math.abs(cp.y - (current.y + offsetValue)) <= primaryInterval
|
||||
const targetDirection = direction === 'south' ? cp.y < current.y
|
||||
: direction === 'north' ? cp.y > current.y
|
||||
: direction === 'east' ? cp.x < current.x
|
||||
: cp.x > current.x
|
||||
const targetDirection =
|
||||
direction === 'south'
|
||||
? cp.y < current.y
|
||||
: direction === 'north'
|
||||
? cp.y > current.y
|
||||
: direction === 'east'
|
||||
? cp.x < current.x
|
||||
: cp.x > current.x
|
||||
return offsetAxis && targetDirection
|
||||
})
|
||||
|
||||
@ -428,12 +444,13 @@ export default function CircuitTrestleSetting({ id }) {
|
||||
let pcsObj = {}
|
||||
|
||||
models.forEach((model) => {
|
||||
pcsObj[model.itemId] = model
|
||||
pcsObj[`${model.pcsSerCd}_${model.itemId}`] = model
|
||||
})
|
||||
res.data?.pcsItemList.forEach((item) => {
|
||||
if (pcsObj[item.itemId]) {
|
||||
const key = `${item.pcsSerCd}_${item.itemId}`
|
||||
if (pcsObj[key]) {
|
||||
pcsItemList.push({
|
||||
...pcsObj[item.itemId],
|
||||
...pcsObj[key],
|
||||
isUsed: false,
|
||||
id: uuidv4(),
|
||||
})
|
||||
@ -560,12 +577,13 @@ export default function CircuitTrestleSetting({ id }) {
|
||||
let pcsItemList = []
|
||||
let pcsObj = {}
|
||||
models.forEach((model) => {
|
||||
pcsObj[model.itemId] = model
|
||||
pcsObj[`${model.pcsSerCd}_${model.itemId}`] = model
|
||||
})
|
||||
res.data?.pcsItemList.forEach((item) => {
|
||||
if (pcsObj[item.itemId]) {
|
||||
const key = `${item.pcsSerCd}_${item.itemId}`
|
||||
if (pcsObj[key]) {
|
||||
pcsItemList.push({
|
||||
...pcsObj[item.itemId],
|
||||
...pcsObj[key],
|
||||
isUsed: false,
|
||||
id: uuidv4(),
|
||||
})
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user