diff --git a/src/components/floor-plan/modal/basic/BasicSetting.jsx b/src/components/floor-plan/modal/basic/BasicSetting.jsx
index ff56d212..e2a38de8 100644
--- a/src/components/floor-plan/modal/basic/BasicSetting.jsx
+++ b/src/components/floor-plan/modal/basic/BasicSetting.jsx
@@ -25,9 +25,7 @@ export default function BasicSetting({ id, pos = { x: 50, y: 230 } }) {
const { getMessage } = useMessage()
const { closePopup } = usePopup()
const [tabNum, setTabNum] = useState(1)
- const canvasSetting = useRecoilValue(canvasSettingState)
const orientationRef = useRef(null)
- const { initEvent } = useEvent()
const [isManualModuleSetup, setIsManualModuleSetup] = useRecoilState(isManualModuleSetupState)
const [isManualModuleLayoutSetup, setIsManualModuleLayoutSetup] = useRecoilState(isManualModuleLayoutSetupState)
@@ -40,12 +38,9 @@ export default function BasicSetting({ id, pos = { x: 50, y: 230 } }) {
const [isClosePopup, setIsClosePopup] = useState({ close: false, id: 0 })
const [checkedModules, setCheckedModules] = useRecoilState(checkedModuleState)
- const [manualSetupMode, setManualSetupMode] = useState('manualSetup')
+ const [manualSetupMode, setManualSetupMode] = useState('')
- const [layoutSetup, setLayoutSetup] = useState({
- col: 1,
- row: 1,
- })
+ const [layoutSetup, setLayoutSetup] = useState([{}])
// const { initEvent } = useContext(EventContext)
const { manualModuleSetup, autoModuleSetup, manualFlatroofModuleSetup, autoFlatroofModuleSetup, manualModuleLayoutSetup } =
@@ -98,12 +93,10 @@ export default function BasicSetting({ id, pos = { x: 50, y: 230 } }) {
const placementRef = {
isChidori: useRef('false'),
setupLocation: useRef('eaves'),
- layoutSetup: useRef({
- col: 1,
- row: 1,
- }),
}
+ const layoutSetupRef = useRef([])
+
const placementFlatRef = {
setupLocation: useRef('south'),
}
@@ -114,6 +107,7 @@ export default function BasicSetting({ id, pos = { x: 50, y: 230 } }) {
}
const handleManualModuleLayoutSetup = () => {
+ console.log('asdfasdkljfhaskjdhfakjsdhkfjh')
setManualSetupMode(`manualLayoutSetup_${!isManualModuleLayoutSetup}`)
setIsManualModuleLayoutSetup(!isManualModuleLayoutSetup)
}
@@ -140,16 +134,21 @@ export default function BasicSetting({ id, pos = { x: 50, y: 230 } }) {
if (isManualModuleSetup) {
setIsManualModuleSetup(false)
}
+ if (isManualModuleLayoutSetup) {
+ setIsManualModuleLayoutSetup(false)
+ }
}
setIsClosePopup({ close: true, id: id })
}
useEffect(() => {
+ console.log('asdfasdf', manualSetupMode)
+
if (basicSetting.roofSizeSet !== '3') {
if (manualSetupMode.indexOf('manualSetup') > -1) {
manualModuleSetup(placementRef)
} else if (manualSetupMode.indexOf('manualLayoutSetup') > -1) {
- manualModuleLayoutSetup(placementRef)
+ manualModuleLayoutSetup(layoutSetupRef)
}
} else {
manualFlatroofModuleSetup(placementFlatRef)
@@ -161,7 +160,7 @@ export default function BasicSetting({ id, pos = { x: 50, y: 230 } }) {
useEffect(() => {
if (isManualModuleLayoutSetup) {
- manualModuleLayoutSetup(placementRef)
+ manualModuleLayoutSetup(layoutSetupRef)
}
}, [layoutSetup])
@@ -183,7 +182,15 @@ export default function BasicSetting({ id, pos = { x: 50, y: 230 } }) {
{tabNum === 1 && }
{/*배치면 초기설정 - 입력방법: 복시도 입력 || 실측값 입력*/}
{basicSetting.roofSizeSet && basicSetting.roofSizeSet != '3' && tabNum === 2 && }
- {basicSetting.roofSizeSet && basicSetting.roofSizeSet != '3' && tabNum === 3 && }
+ {basicSetting.roofSizeSet && basicSetting.roofSizeSet != '3' && tabNum === 3 && (
+
+ )}
{/*배치면 초기설정 - 입력방법: 육지붕*/}
{basicSetting.roofSizeSet && basicSetting.roofSizeSet == '3' && tabNum === 2 && }
diff --git a/src/components/floor-plan/modal/basic/step/Placement.jsx b/src/components/floor-plan/modal/basic/step/Placement.jsx
index d2fca8b2..f2c3c83f 100644
--- a/src/components/floor-plan/modal/basic/step/Placement.jsx
+++ b/src/components/floor-plan/modal/basic/step/Placement.jsx
@@ -1,7 +1,7 @@
import { forwardRef, useEffect, useState } from 'react'
import { useMessage } from '@/hooks/useMessage'
import { useModuleBasicSetting } from '@/hooks/module/useModuleBasicSetting'
-import { checkedModuleState, currentCanvasPlanState, isManualModuleSetupState } from '@/store/canvasAtom'
+import { checkedModuleState, currentCanvasPlanState, isManualModuleLayoutSetupState, isManualModuleSetupState } from '@/store/canvasAtom'
import { useRecoilState, useRecoilValue, useSetRecoilState } from 'recoil'
import { moduleSelectionDataState, selectedModuleState } from '@/store/selectedModuleOptions'
import { isObjectNotEmpty } from '@/util/common-utils'
@@ -23,7 +23,9 @@ const Placement = forwardRef((props, refs) => {
const [isMultiModule, setIsMultiModule] = useState(false)
- const [isManualModuleSetup, setIsManualModuleSetup] = useRecoilState(isManualModuleSetupState)
+ //언마운트시 버튼 초기화
+ const setIsManualModuleSetup = useSetRecoilState(isManualModuleSetupState)
+ const setIsManualModuleLayoutSetup = useSetRecoilState(isManualModuleLayoutSetupState)
//모듈 배치면 생성
useEffect(() => {
@@ -38,6 +40,7 @@ const Placement = forwardRef((props, refs) => {
return () => {
setIsManualModuleSetup(false)
+ setIsManualModuleLayoutSetup(false)
}
}, [])
@@ -56,6 +59,8 @@ const Placement = forwardRef((props, refs) => {
})
setSelectedItems(initCheckedModule)
setSelectedModules(moduleSelectionData.module)
+ props.setLayoutSetup(moduleSelectionData.module.itemList.map((item) => ({ moduleId: item.itemId, col: 0, row: 0 })))
+ props.layoutSetupRef.current = moduleSelectionData.module.itemList.map((item) => ({ moduleId: item.itemId, col: 0, row: 0 }))
}
//모듈 배치면 생성
@@ -111,9 +116,11 @@ const Placement = forwardRef((props, refs) => {
setSelectedItems({ ...selectedItems, [e.target.name]: e.target.checked })
}
- const handleLayoutSetup = (e) => {
- props.setLayoutSetup({ ...props.layoutSetup, [e.target.name]: Number(e.target.value) })
- refs.layoutSetup.current = { ...props.layoutSetup, [e.target.name]: Number(e.target.value) }
+ const handleLayoutSetup = (e, itemId, index) => {
+ const newLayoutSetup = [...props.layoutSetup]
+ newLayoutSetup[index] = { ...newLayoutSetup[index], moduleId: itemId, [e.target.name]: Number(e.target.value) }
+ props.setLayoutSetup(newLayoutSetup)
+ props.layoutSetupRef.current[index] = { ...props.layoutSetupRef.current[index], moduleId: itemId, [e.target.name]: Number(e.target.value) }
}
return (
@@ -162,6 +169,24 @@ const Placement = forwardRef((props, refs) => {
{item.wpOut} |
+
+ handleLayoutSetup(e, item.itemId, index)}
+ />{' '}
+ ×
+ handleLayoutSetup(e, item.itemId, index)}
+ />
))}
@@ -238,33 +263,6 @@ const Placement = forwardRef((props, refs) => {
-
{/*
diff --git a/src/hooks/module/useModuleBasicSetting.js b/src/hooks/module/useModuleBasicSetting.js
index 27dee861..44f7d21e 100644
--- a/src/hooks/module/useModuleBasicSetting.js
+++ b/src/hooks/module/useModuleBasicSetting.js
@@ -560,7 +560,7 @@ export function useModuleBasicSetting(tabNum) {
/**
* 스냅기능
*/
- let snapDistance = flowDirection === 'south' || flowDirection === 'north' ? 70 : 40
+ let snapDistance = flowDirection === 'south' || flowDirection === 'north' ? 10 : 10
let trestleSnapDistance = 15
let intvHor =
@@ -817,7 +817,7 @@ export function useModuleBasicSetting(tabNum) {
}
}
- const manualModuleLayoutSetup = (placementRef) => {
+ const manualModuleLayoutSetup = (layoutSetupRef) => {
if (isManualModuleSetup) {
setIsManualModuleSetup(false)
}
@@ -831,8 +831,12 @@ export function useModuleBasicSetting(tabNum) {
return
}
- if (checkedModule.length > 1) {
- swalFire({ text: getMessage('module.place.select.one.module') })
+ const hasZeroLength = checkedModule.some((item) =>
+ layoutSetupRef.current.some((layoutItem) => item.itemId === layoutItem.moduleId && (layoutItem.row === 0 || layoutItem.col === 0)),
+ )
+
+ if (hasZeroLength) {
+ swalFire({ text: getMessage('모듈의 열, 행을 입력해 주세요.') })
setIsManualModuleLayoutSetup(!isManualModuleLayoutSetup)
return
}
@@ -876,8 +880,8 @@ export function useModuleBasicSetting(tabNum) {
}
if (moduleSetupSurfaces.length !== 0) {
- const col = placementRef.layoutSetup.current.col
- const row = placementRef.layoutSetup.current.row
+ // const col = layoutSetupRef.current[0].col
+ // const row = layoutSetupRef.current[0].row
let tempModule
let manualDrawModules = []
@@ -924,48 +928,48 @@ export function useModuleBasicSetting(tabNum) {
? moduleSetupSurfaces[i].trestleDetail.moduleIntvlVer / 10
: moduleSetupSurfaces[i].trestleDetail.moduleIntvlHor / 10
- let calcHalfWidth = (Number((width * col).toFixed(1)) + Number((intvHor * (col - 1)).toFixed(1))) / 2
- let calcHalfHeight = (Number((height * row).toFixed(1)) + Number((intvVer * (row - 1)).toFixed(1))) / 2
+ // let calcHalfWidth = (Number((width * col).toFixed(1)) + Number((intvHor * (col - 1)).toFixed(1))) / 2
+ // let calcHalfHeight = (Number((height * row).toFixed(1)) + Number((intvVer * (row - 1)).toFixed(1))) / 2
//아래래
- let points = [
- {
- x: Number(mousePoint.x.toFixed(1)) - calcHalfWidth,
- y: Number(mousePoint.y.toFixed(1)) - calcHalfHeight,
- },
- {
- x: Number(mousePoint.x.toFixed(1)) - calcHalfWidth,
- y: Number(mousePoint.y.toFixed(1)) + calcHalfHeight,
- },
- {
- x: Number(mousePoint.x.toFixed(1)) + calcHalfWidth,
- y: Number(mousePoint.y.toFixed(1)) + calcHalfHeight,
- },
- {
- x: Number(mousePoint.x.toFixed(1)) + calcHalfWidth,
- y: Number(mousePoint.y.toFixed(1)) - calcHalfHeight,
- },
- ]
-
- // const points = [
+ // let points = [
// {
- // x: Number(mousePoint.x.toFixed(1)) + Number((width / 2).toFixed(1)),
- // y: Number(mousePoint.y.toFixed(1)) - Number((height / 2).toFixed(1)),
+ // x: Number(mousePoint.x.toFixed(1)) - calcHalfWidth,
+ // y: Number(mousePoint.y.toFixed(1)) - calcHalfHeight,
// },
// {
- // x: Number(mousePoint.x.toFixed(1)) + Number((width / 2).toFixed(1)),
- // y: Number(mousePoint.y.toFixed(1)) + Number((height / 2).toFixed(1)),
+ // x: Number(mousePoint.x.toFixed(1)) - calcHalfWidth,
+ // y: Number(mousePoint.y.toFixed(1)) + calcHalfHeight,
// },
// {
- // x: Number(mousePoint.x.toFixed(1)) - Number((width / 2).toFixed(1)),
- // y: Number(mousePoint.y.toFixed(1)) - Number((height / 2).toFixed(1)),
+ // x: Number(mousePoint.x.toFixed(1)) + calcHalfWidth,
+ // y: Number(mousePoint.y.toFixed(1)) + calcHalfHeight,
// },
// {
- // x: Number(mousePoint.x.toFixed(1)) - Number((width / 2).toFixed(1)),
- // y: Number(mousePoint.y.toFixed(1)) + Number((height / 2).toFixed(1)),
+ // x: Number(mousePoint.x.toFixed(1)) + calcHalfWidth,
+ // y: Number(mousePoint.y.toFixed(1)) - calcHalfHeight,
// },
// ]
+ const points = [
+ {
+ x: Number(mousePoint.x.toFixed(1)) + Number((width / 2).toFixed(1)),
+ y: Number(mousePoint.y.toFixed(1)) - Number((height / 2).toFixed(1)),
+ },
+ {
+ x: Number(mousePoint.x.toFixed(1)) + Number((width / 2).toFixed(1)),
+ y: Number(mousePoint.y.toFixed(1)) + Number((height / 2).toFixed(1)),
+ },
+ {
+ x: Number(mousePoint.x.toFixed(1)) - Number((width / 2).toFixed(1)),
+ y: Number(mousePoint.y.toFixed(1)) - Number((height / 2).toFixed(1)),
+ },
+ {
+ x: Number(mousePoint.x.toFixed(1)) - Number((width / 2).toFixed(1)),
+ y: Number(mousePoint.y.toFixed(1)) + Number((height / 2).toFixed(1)),
+ },
+ ]
+
const turfPoints = coordToTurfPolygon(points)
if (turf.booleanWithin(turfPoints, turfPolygon)) {
@@ -979,14 +983,14 @@ export function useModuleBasicSetting(tabNum) {
stroke: 'black',
strokeWidth: 1,
strokeDashArray: [10, 5],
- // width: Number(width.toFixed(1)), //작은버전
- // height: Number(height.toFixed(1)), //작은버전
- // left: Number(mousePoint.x.toFixed(1) - Number((width / 2).toFixed(1))), //작은버전
- // top: Number(mousePoint.y.toFixed(1) - Number((height / 2).toFixed(1))), //작은버전
- width: Number((width * col).toFixed(1)) + Number((intvHor * (col - 1)).toFixed(1)), //큰버전
- height: Number((height * row).toFixed(1)) + Number((intvVer * (row - 1)).toFixed(1)), //큰버전
- left: Number(mousePoint.x.toFixed(1)) - calcHalfWidth.toFixed(1), //큰버전
- top: Number(mousePoint.y.toFixed(1)) - calcHalfHeight.toFixed(1), //큰버전
+ width: Number(width.toFixed(1)), //작은버전
+ height: Number(height.toFixed(1)), //작은버전
+ left: Number(mousePoint.x.toFixed(1) - Number((width / 2).toFixed(1))), //작은버전
+ top: Number(mousePoint.y.toFixed(1) - Number((height / 2).toFixed(1))), //작은버전
+ // width: Number((width * col).toFixed(1)) + Number((intvHor * (col - 1)).toFixed(1)), //큰버전
+ // height: Number((height * row).toFixed(1)) + Number((intvVer * (row - 1)).toFixed(1)), //큰버전
+ // left: Number(mousePoint.x.toFixed(1)) - calcHalfWidth.toFixed(1), //큰버전
+ // top: Number(mousePoint.y.toFixed(1)) - calcHalfHeight.toFixed(1), //큰버전
selectable: false,
lockMovementX: true,
lockMovementY: true,
@@ -1027,60 +1031,60 @@ export function useModuleBasicSetting(tabNum) {
/**
* 미리 깔아놓은 셀이 있을때 셀에 흡착됨
*/
- // if (manualDrawModules) {
- // manualDrawModules.forEach((cell) => {
- // const holdCellLeft = cell.left
- // const holdCellTop = cell.top
- // const holdCellRight = holdCellLeft + Number(cell.width.toFixed(1))
- // const holdCellBottom = holdCellTop + Number(cell.height.toFixed(1))
- // const holdCellCenterX = holdCellLeft + Number((cell.width / 2).toFixed(1))
- // const holdCellCenterY = holdCellTop + Number((cell.height / 2).toFixed(1))
+ if (manualDrawModules) {
+ manualDrawModules.forEach((cell) => {
+ const holdCellLeft = cell.left
+ const holdCellTop = cell.top
+ const holdCellRight = holdCellLeft + Number(cell.width.toFixed(1))
+ const holdCellBottom = holdCellTop + Number(cell.height.toFixed(1))
+ const holdCellCenterX = holdCellLeft + Number((cell.width / 2).toFixed(1))
+ const holdCellCenterY = holdCellTop + Number((cell.height / 2).toFixed(1))
- // //설치된 셀에 좌측에 스냅
- // if (Math.abs(smallRight - holdCellLeft) < snapDistance) {
- // tempModule.left = holdCellLeft - width - intvHor
- // }
+ //설치된 셀에 좌측에 스냅
+ if (Math.abs(smallRight - holdCellLeft) < snapDistance) {
+ tempModule.left = holdCellLeft - width - intvHor
+ }
- // //설치된 셀에 우측에 스냅
- // if (Math.abs(smallLeft - holdCellRight) < snapDistance) {
- // tempModule.left = holdCellRight + intvHor
- // }
+ //설치된 셀에 우측에 스냅
+ if (Math.abs(smallLeft - holdCellRight) < snapDistance) {
+ tempModule.left = holdCellRight + intvHor
+ }
- // //설치된 셀에 위쪽에 스냅
- // if (Math.abs(smallBottom - holdCellTop) < snapDistance) {
- // tempModule.top = holdCellTop - height - intvVer
- // }
+ //설치된 셀에 위쪽에 스냅
+ if (Math.abs(smallBottom - holdCellTop) < snapDistance) {
+ tempModule.top = holdCellTop - height - intvVer
+ }
- // //설치된 셀에 밑쪽에 스냅
- // if (Math.abs(smallTop - holdCellBottom) < snapDistance) {
- // tempModule.top = holdCellBottom + intvVer
- // }
- // //가운데 -> 가운데
- // if (Math.abs(smallCenterX - holdCellCenterX) < snapDistance) {
- // tempModule.left = holdCellCenterX - Number((width / 2).toFixed(1))
- // }
- // //왼쪽 -> 가운데
- // if (Math.abs(smallLeft - holdCellCenterX) < snapDistance) {
- // tempModule.left = holdCellCenterX
- // }
- // // 오른쪽 -> 가운데
- // if (Math.abs(smallRight - holdCellCenterX) < snapDistance) {
- // tempModule.left = holdCellCenterX - width
- // }
- // //세로 가운데 -> 가운데
- // if (Math.abs(smallCenterY - holdCellCenterY) < snapDistance) {
- // tempModule.top = holdCellCenterY - Number((height / 2).toFixed(1))
- // }
- // // //위쪽 -> 가운데
- // // if (Math.abs(smallTop - holdCellCenterY) < cellSnapDistance) {
- // // tempModule.top = holdCellCenterY
- // // }
- // // //아랫쪽 -> 가운데
- // // if (Math.abs(smallBottom - holdCellCenterY) < cellSnapDistance) {
- // // tempModule.top = holdCellCenterY - height
- // // }
- // })
- // }
+ //설치된 셀에 밑쪽에 스냅
+ if (Math.abs(smallTop - holdCellBottom) < snapDistance) {
+ tempModule.top = holdCellBottom + intvVer
+ }
+ //가운데 -> 가운데
+ if (Math.abs(smallCenterX - holdCellCenterX) < snapDistance) {
+ tempModule.left = holdCellCenterX - Number((width / 2).toFixed(1))
+ }
+ //왼쪽 -> 가운데
+ if (Math.abs(smallLeft - holdCellCenterX) < snapDistance) {
+ tempModule.left = holdCellCenterX
+ }
+ // 오른쪽 -> 가운데
+ if (Math.abs(smallRight - holdCellCenterX) < snapDistance) {
+ tempModule.left = holdCellCenterX - width
+ }
+ //세로 가운데 -> 가운데
+ if (Math.abs(smallCenterY - holdCellCenterY) < snapDistance) {
+ tempModule.top = holdCellCenterY - Number((height / 2).toFixed(1))
+ }
+ // //위쪽 -> 가운데
+ // if (Math.abs(smallTop - holdCellCenterY) < cellSnapDistance) {
+ // tempModule.top = holdCellCenterY
+ // }
+ // //아랫쪽 -> 가운데
+ // if (Math.abs(smallBottom - holdCellCenterY) < cellSnapDistance) {
+ // tempModule.top = holdCellCenterY - height
+ // }
+ })
+ }
// 위쪽 변에 스냅
if (Math.abs(smallTop - trestleTop) < trestleSnapDistance) {
@@ -1152,37 +1156,66 @@ export function useModuleBasicSetting(tabNum) {
if (!inside) return
if (tempModule) {
let startX, startY
-
- console.log(tempModule)
+ let installedLastHeightCoord = 0 //마지막으로 설치된 모듈의 좌표
//그려진 가이드 라인의 포인트를 기준으로 시작점을 만든다
if (flowDirection === 'south') {
startX = toFixedWithoutRounding(tempModule.left, 1)
startY = toFixedWithoutRounding(tempModule.top + tempModule.height, 1)
- for (let i = 0; i < placementRef.layoutSetup.current.row; i++) {
- let tempY = startY - i * height
- let tempHeightMargin = i === 0 ? 0 : i * intvVer
- for (let j = 0; j < placementRef.layoutSetup.current.col; j++) {
- let tempX = startX + j * width
- let tempWidthMargin = j === 0 ? 0 : j * intvHor
+ console.log('checkedModule', checkedModule)
- let rectPoints = [
- { x: tempX + tempWidthMargin, y: tempY - height - tempHeightMargin },
- { x: tempX + tempWidthMargin, y: tempY - tempHeightMargin },
- { x: tempX + width + tempWidthMargin, y: tempY - tempHeightMargin },
- { x: tempX + width + tempWidthMargin, y: tempY - height - tempHeightMargin },
- ]
- // console.log('🚀 ~ addCanvasMouseEventListener ~ rectPoints:', rectPoints)
+ checkedModule.forEach((module, index) => {
+ moduleOptions.fill = module.color
+ const moduleWidth = Number(module.longAxis) / 10
+ const moduleHeight = Number(module.shortAxis) / 10
- tempModule.set({ points: rectPoints })
- const tempTurfModule = polygonToTurfPolygon(tempModule)
- tempModule.setCoords() //좌표 재정렬
+ let tmpWidth = flowDirection === 'south' || flowDirection === 'north' ? moduleWidth : moduleHeight
+ let tmpHeight = flowDirection === 'south' || flowDirection === 'north' ? moduleHeight : moduleWidth
- if (turf.booleanContains(turfPolygon, tempTurfModule) || turf.booleanWithin(tempTurfModule, turfPolygon)) {
- //마우스 클릭시 set으로 해당 위치에 셀을 넣음
- const isOverlap = manualDrawModules.some((module) => turf.booleanOverlap(tempTurfModule, polygonToTurfPolygon(module))) //겹치는지 확인
- if (!isOverlap) {
+ width =
+ canvasSetting.roofSizeSet == '1'
+ ? calculateVisibleModuleHeight(tmpWidth, tmpHeight, getDegreeByChon(moduleSetupSurfaces[i].roofMaterial.pitch), flowDirection)
+ .width
+ : tmpWidth
+ height =
+ canvasSetting.roofSizeSet == '1'
+ ? calculateVisibleModuleHeight(tmpWidth, tmpHeight, getDegreeByChon(moduleSetupSurfaces[i].roofMaterial.pitch), flowDirection)
+ .height
+ : tmpHeight
+
+ const col = layoutSetupRef.current.filter((item) => item.moduleId === module.itemId)[0].col
+ const row = layoutSetupRef.current.filter((item) => item.moduleId === module.itemId)[0].row
+ for (let i = 0; i < row; i++) {
+ let tempY = startY - i * height
+
+ if (index > 0) {
+ //두번째 모듈일때 마지막 설치 지점
+ tempY = index > 0 && i === 0 ? installedLastHeightCoord - intvVer : installedLastHeightCoord
+ }
+
+ let tempHeightMargin = i === 0 ? 0 : i * intvVer
+
+ for (let j = 0; j < col; j++) {
+ let tempX = startX + j * width
+ let tempWidthMargin = j === 0 ? 0 : j * intvHor
+
+ let rectPoints = [
+ { x: tempX + tempWidthMargin, y: tempY - height - tempHeightMargin },
+ { x: tempX + tempWidthMargin, y: tempY - tempHeightMargin },
+ { x: tempX + width + tempWidthMargin, y: tempY - tempHeightMargin },
+ { x: tempX + width + tempWidthMargin, y: tempY - height - tempHeightMargin },
+ ]
+ // console.log('🚀 ~ addCanvasMouseEventListener ~ rectPoints:', rectPoints)
+
+ tempModule.set({ points: rectPoints })
+ const tempTurfModule = polygonToTurfPolygon(tempModule)
+ tempModule.setCoords() //좌표 재정렬
+
+ if (turf.booleanContains(turfPolygon, tempTurfModule) || turf.booleanWithin(tempTurfModule, turfPolygon)) {
+ //마우스 클릭시 set으로 해당 위치에 셀을 넣음
+ const isOverlap = manualDrawModules.some((module) => turf.booleanOverlap(tempTurfModule, polygonToTurfPolygon(module))) //겹치는지 확인
+ // if (!isOverlap) {
canvas?.remove(tempModule)
//안겹치면 넣는다
@@ -1191,7 +1224,7 @@ export function useModuleBasicSetting(tabNum) {
let manualModule = new QPolygon(tempModule.points, {
...moduleOptions,
- moduleInfo: checkedModule[0],
+ moduleInfo: module,
// left: toFixedWithoutRounding(tempX + tempWidthMargin, 1),
// top: toFixedWithoutRounding(tempY - height - tempHeightMargin, 1),
width: toFixedWithoutRounding(width, 1),
@@ -1205,15 +1238,24 @@ export function useModuleBasicSetting(tabNum) {
canvas?.add(manualModule)
manualDrawModules.push(manualModule)
setModuleStatisticsData()
+ installedLastHeightCoord = tempY - height - tempHeightMargin
+ } else {
+ manualModule.set({ fill: 'transparent', stroke: 'red', strokeWidth: 1 })
+ canvas?.add(manualModule)
+ canvas.renderAll()
}
// getModuleStatistics()
- } else {
- swalFire({ text: getMessage('module.place.overlab') })
- return
+ // } else {
+ // swalFire({ text: getMessage('module.place.overlab') })
+ // return
+ // tempModule.set({ fill: 'transparent', stroke: 'red', strokeWidth: 1 })
+ // canvas?.add(tempModule)
+ // canvas.renderAll()
+ // }
}
}
}
- }
+ })
} else if (flowDirection === 'north') {
startX = tempModule.points[3].x
startY = tempModule.points[3].y