Compare commits
No commits in common. "cec871fb70c2f7c11a71a78d3b90bd8f842d640f" and "97d20321ed0ed9df6719e98e56ec0d0e4ad40f9b" have entirely different histories.
cec871fb70
...
97d20321ed
@ -86,26 +86,6 @@ export default function PassivityCircuitAllocation(props) {
|
||||
.map((obj) => obj.circuitNumber),
|
||||
),
|
||||
]
|
||||
|
||||
const surfaceList = targetModules.map((module) => {
|
||||
return canvas.getObjects().filter((obj) => obj.id === canvas.getObjects().filter((obj) => obj.id === module)[0].surfaceId)[0]
|
||||
})
|
||||
|
||||
if (surfaceList.length > 1) {
|
||||
let surfaceType = {}
|
||||
|
||||
surfaceList.forEach((surface) => {
|
||||
surfaceType[`${surface.direction}-${surface.roofMaterial.pitch}`] = surface
|
||||
})
|
||||
if (Object.keys(surfaceType).length > 1) {
|
||||
swalFire({
|
||||
text: getMessage('module.circuit.fix.not.same.roof.error'),
|
||||
type: 'alert',
|
||||
icon: 'warning',
|
||||
})
|
||||
return
|
||||
}
|
||||
}
|
||||
if (!circuitNumber || circuitNumber === 0) {
|
||||
swalFire({
|
||||
text: getMessage('module.circuit.minimun.error'),
|
||||
|
||||
@ -17,7 +17,7 @@ export default function GridCopy(props) {
|
||||
const currentObject = useRecoilValue(currentObjectState)
|
||||
const { copy } = useGrid()
|
||||
const handleApply = () => {
|
||||
copy(currentObject, ['↑', '←'].includes(arrow) ? (+length * -1) / 10 : +length / 10)
|
||||
copy(currentObject, ['↑', '←'].includes(arrow) ? +length * -1 : +length)
|
||||
}
|
||||
return (
|
||||
<WithDraggable isShow={true} pos={pos} className="xm">
|
||||
|
||||
@ -54,15 +54,15 @@ export default function GridMove(props) {
|
||||
.forEach((grid) => {
|
||||
move(
|
||||
grid,
|
||||
arrow2 === '←' ? (Number(horizonSize) * -1) / 10 : Number(horizonSize) / 10,
|
||||
arrow1 === '↑' ? (Number(verticalSize) * -1) / 10 : Number(verticalSize) / 10,
|
||||
arrow2 === '←' ? Number(horizonSize) * -1 : Number(horizonSize),
|
||||
arrow1 === '↑' ? Number(verticalSize) * -1 : Number(verticalSize),
|
||||
)
|
||||
})
|
||||
} else {
|
||||
move(
|
||||
currentObject,
|
||||
arrow2 === '←' ? (Number(horizonSize) * -1) / 10 : Number(horizonSize) / 10,
|
||||
arrow1 === '↑' ? (Number(verticalSize) * -1) / 10 : Number(verticalSize) / 10,
|
||||
arrow2 === '←' ? Number(horizonSize) * -1 : Number(horizonSize),
|
||||
arrow1 === '↑' ? Number(verticalSize) * -1 : Number(verticalSize),
|
||||
)
|
||||
}
|
||||
canvas.renderAll()
|
||||
|
||||
@ -185,7 +185,7 @@ export default function SecondOption(props) {
|
||||
|
||||
const onClickOption = async (item) => {
|
||||
let option4Data = settingModalSecondOptions?.option4
|
||||
let adsorpPointData = adsorptionPointMode
|
||||
let adsorpPointData = adsorptionPointMode.adsorptionPoint
|
||||
|
||||
//흡착범위 설정(단 건 선택)
|
||||
if (
|
||||
@ -203,9 +203,11 @@ export default function SecondOption(props) {
|
||||
|
||||
//흡착점 범위
|
||||
setAdsorptionRange(item.range)
|
||||
setAdsorptionPointMode(adsorpPointData)
|
||||
|
||||
setAdsorptionPointMode({ ...adsorptionPointMode, adsorptionPoint: adsorpPointData })
|
||||
} else if (item === 'adsorpPoint') {
|
||||
setAdsorptionPointMode(!adsorpPointData)
|
||||
setAdsorptionPointMode({ ...adsorptionPointMode, adsorptionPoint: !adsorpPointData })
|
||||
adsorpPointData = !adsorpPointData
|
||||
}
|
||||
|
||||
setSettingsData({ ...settingsData, option4: [...option4Data], adsorptionPoint: adsorpPointData })
|
||||
@ -255,7 +257,7 @@ export default function SecondOption(props) {
|
||||
}}
|
||||
>
|
||||
<span>{getMessage('modal.canvas.setting.font.plan.absorption.point')}</span>
|
||||
<i>{adsorptionPointMode ? 'ON' : 'OFF'}</i>
|
||||
<i>{adsorptionPointMode.adsorptionPoint ? 'ON' : 'OFF'}</i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -609,7 +609,7 @@ export function useCanvasSetting(executeEffect = true) {
|
||||
const optionData5 = settingModalFirstOptions.dimensionDisplay.map((item) => ({ ...item }))
|
||||
|
||||
/** 흡착점 ON/OFF */
|
||||
setAdsorptionPointMode(res.adsorpPoint)
|
||||
setAdsorptionPointMode({ ...adsorptionPointMode, adsorptionPoint: res.adsorpPoint })
|
||||
|
||||
/** 치수선 설정 */
|
||||
setDimensionLineSettings({ ...dimensionLineSettings, pixel: res.originPixel, color: res.originColor })
|
||||
@ -695,7 +695,7 @@ export function useCanvasSetting(executeEffect = true) {
|
||||
/** 조회된 글꼴 데이터가 없는 경우 (데이터 초기화) */
|
||||
|
||||
/** 흡착점 ON/OFF */
|
||||
setAdsorptionPointMode(false)
|
||||
setAdsorptionPointMode({ ...adsorptionPointMode, adsorptionPoint: false })
|
||||
|
||||
/** 치수선 설정 */
|
||||
resetDimensionLineSettings()
|
||||
@ -775,7 +775,7 @@ export function useCanvasSetting(executeEffect = true) {
|
||||
adsorpRangeMedium: dataToSend.secondOption2[2].selected,
|
||||
adsorpRangeLarge: dataToSend.secondOption2[3].selected,
|
||||
/** 흡착점 ON/OFF */
|
||||
adsorpPoint: adsorptionPointMode,
|
||||
adsorpPoint: adsorptionPointMode.adsorptionPoint,
|
||||
//??: adsorptionRange, 사용여부 확인 필요
|
||||
|
||||
/** 문자 글꼴 설정 */
|
||||
|
||||
@ -6,8 +6,6 @@ import { calculateDistance, calculateDistancePoint, calculateIntersection, dista
|
||||
import { useAdsorptionPoint } from '@/hooks/useAdsorptionPoint'
|
||||
import { useDotLineGrid } from '@/hooks/useDotLineGrid'
|
||||
import { useTempGrid } from '@/hooks/useTempGrid'
|
||||
import { gridColorState } from '@/store/gridAtom'
|
||||
import { gridDisplaySelector } from '@/store/settingAtom'
|
||||
|
||||
export function useEvent() {
|
||||
const canvas = useRecoilValue(canvasState)
|
||||
@ -15,12 +13,10 @@ export function useEvent() {
|
||||
const documentEventListeners = useRef([])
|
||||
const mouseEventListeners = useRef([])
|
||||
const setCanvasZoom = useSetRecoilState(canvasZoomState)
|
||||
const gridColor = useRecoilValue(gridColorState)
|
||||
const isGridDisplay = useRecoilValue(gridDisplaySelector)
|
||||
|
||||
const { adsorptionPointAddMode, adsorptionPointMode, adsorptionRange, getAdsorptionPoints, adsorptionPointAddModeStateEvent } = useAdsorptionPoint()
|
||||
const { dotLineGridSetting, interval, getClosestLineGrid } = useDotLineGrid()
|
||||
const { tempGridModeStateLeftClickEvent, tempGridMode } = useTempGrid()
|
||||
const { tempGridModeStateLeftClickEvent, tempGridMode, tempGridRightClickEvent } = useTempGrid()
|
||||
|
||||
const textMode = useRecoilValue(textModeState)
|
||||
|
||||
@ -108,35 +104,24 @@ export function useEvent() {
|
||||
if (dotLineGridSetting.LINE || canvas.getObjects().filter((obj) => ['lineGrid', 'tempGrid'].includes(obj.name)).length > 0) {
|
||||
const closestLine = getClosestLineGrid(pointer)
|
||||
|
||||
const horizonLines = canvas.getObjects().filter((obj) => ['lineGrid', 'tempGrid'].includes(obj.name) && obj.direction === 'horizontal')
|
||||
const verticalLines = canvas.getObjects().filter((obj) => ['lineGrid', 'tempGrid'].includes(obj.name) && obj.direction === 'vertical')
|
||||
const horizonLines = canvas.getObjects().filter((obj) => obj.name === 'lineGrid' && obj.direction === 'horizontal')
|
||||
const verticalLines = canvas.getObjects().filter((obj) => obj.name === 'lineGrid' && obj.direction === 'vertical')
|
||||
|
||||
if (!horizonLines || !verticalLines) {
|
||||
return
|
||||
}
|
||||
|
||||
let closestHorizontalLine = null
|
||||
let closestVerticalLine = null
|
||||
const closestHorizontalLine = horizonLines.reduce((prev, curr) => {
|
||||
const prevDistance = calculateDistance(pointer, prev)
|
||||
const currDistance = calculateDistance(pointer, curr)
|
||||
return prevDistance < currDistance ? prev : curr
|
||||
})
|
||||
|
||||
if (horizonLines && horizonLines.length > 0) {
|
||||
closestHorizontalLine = horizonLines.reduce((prev, curr) => {
|
||||
const prevDistance = calculateDistance(pointer, prev)
|
||||
const currDistance = calculateDistance(pointer, curr)
|
||||
return prevDistance < currDistance ? prev : curr
|
||||
})
|
||||
}
|
||||
|
||||
if (verticalLines && verticalLines.length > 0) {
|
||||
closestVerticalLine = verticalLines.reduce((prev, curr) => {
|
||||
const prevDistance = calculateDistance(pointer, prev)
|
||||
const currDistance = calculateDistance(pointer, curr)
|
||||
return prevDistance < currDistance ? prev : curr
|
||||
})
|
||||
}
|
||||
|
||||
if (!closestVerticalLine || !closestHorizontalLine) {
|
||||
return
|
||||
}
|
||||
const closestVerticalLine = verticalLines.reduce((prev, curr) => {
|
||||
const prevDistance = calculateDistance(pointer, prev)
|
||||
const currDistance = calculateDistance(pointer, curr)
|
||||
return prevDistance < currDistance ? prev : curr
|
||||
})
|
||||
|
||||
const closestIntersectionPoint = calculateIntersection(closestHorizontalLine, closestVerticalLine)
|
||||
|
||||
@ -253,34 +238,6 @@ export function useEvent() {
|
||||
})
|
||||
}
|
||||
|
||||
const tempGridRightClickEvent = (e) => {
|
||||
e.preventDefault()
|
||||
e.stopPropagation()
|
||||
//임의 그리드 모드일 경우
|
||||
let pointer = { x: e.offsetX, y: e.offsetY }
|
||||
|
||||
const tempGrid = new fabric.Line([-1500, pointer.y, 2500, pointer.y], {
|
||||
stroke: gridColor,
|
||||
strokeWidth: 1,
|
||||
selectable: true,
|
||||
lockMovementX: true,
|
||||
lockMovementY: true,
|
||||
lockRotation: true,
|
||||
lockScalingX: true,
|
||||
lockScalingY: true,
|
||||
strokeDashArray: [5, 2],
|
||||
opacity: 0.3,
|
||||
padding: 5,
|
||||
name: 'tempGrid',
|
||||
visible: isGridDisplay,
|
||||
direction: 'horizontal',
|
||||
})
|
||||
|
||||
canvas.add(tempGrid)
|
||||
|
||||
canvas.renderAll()
|
||||
}
|
||||
|
||||
const defaultKeyboardEvent = (e) => {
|
||||
if (e.key === 'Escape') {
|
||||
console.log('defaultKeyboardEvent')
|
||||
|
||||
@ -7,9 +7,8 @@ const GRID_PADDING = 5
|
||||
export function useTempGrid() {
|
||||
const canvas = useRecoilValue(canvasState)
|
||||
const gridColor = useRecoilValue(gridColorState)
|
||||
const isGridDisplay = useRecoilValue(gridDisplaySelector)
|
||||
const [tempGridMode, setTempGridMode] = useRecoilState(tempGridModeState)
|
||||
|
||||
const isGridDisplay = useRecoilValue(gridDisplaySelector)
|
||||
const tempGridModeStateLeftClickEvent = (e) => {
|
||||
//임의 그리드 모드일 경우
|
||||
let pointer = canvas.getPointer(e.e)
|
||||
@ -36,8 +35,37 @@ export function useTempGrid() {
|
||||
canvas.renderAll()
|
||||
}
|
||||
|
||||
const tempGridRightClickEvent = (e) => {
|
||||
e.preventDefault()
|
||||
e.stopPropagation()
|
||||
//임의 그리드 모드일 경우
|
||||
let pointer = { x: e.offsetX, y: e.offsetY }
|
||||
|
||||
const tempGrid = new fabric.Line([-1500, pointer.y, 2500, pointer.y], {
|
||||
stroke: gridColor,
|
||||
strokeWidth: 1,
|
||||
selectable: true,
|
||||
lockMovementX: true,
|
||||
lockMovementY: true,
|
||||
lockRotation: true,
|
||||
lockScalingX: true,
|
||||
lockScalingY: true,
|
||||
strokeDashArray: [5, 2],
|
||||
opacity: 0.3,
|
||||
padding: GRID_PADDING,
|
||||
name: 'tempGrid',
|
||||
visible: isGridDisplay,
|
||||
direction: 'horizontal',
|
||||
})
|
||||
|
||||
canvas.add(tempGrid)
|
||||
|
||||
canvas.renderAll()
|
||||
}
|
||||
|
||||
return {
|
||||
tempGridModeStateLeftClickEvent,
|
||||
tempGridRightClickEvent,
|
||||
tempGridMode,
|
||||
setTempGridMode,
|
||||
}
|
||||
|
||||
@ -126,8 +126,8 @@
|
||||
"modal.module.basic.settting.module.error7": "下在ビーチを入力してください。\n(屋根材: {0})",
|
||||
"modal.module.basic.settting.module.error8": "モジュール配置領域の値を入力してください。\n(屋根材: {0})",
|
||||
"modal.module.basic.settting.module.error9": "軒側の配置領域の値を{0} mm以上に変更してください。\n(屋根材: {1})",
|
||||
"modal.module.basic.settting.module.error10": "棟側の配置領域の値を{0} mm以上に変更してください。\n(屋根材: {1})",
|
||||
"modal.module.basic.settting.module.error11": "ケラバ側の配置領域の値を{0} mm以上に変更してください。\n(屋根材: {1})",
|
||||
"modal.module.basic.settting.module.error10": "棟側の配置領域の値を{0} mm上に変更してください。\n(屋根材: {1})",
|
||||
"modal.module.basic.settting.module.error11": "ケラバ側の配置領域の値を{0} mm上に変更してください。\n(屋根材: {1})",
|
||||
"modal.module.basic.settting.module.error12": "施工方法を選択してください。\n(屋根材: {0})",
|
||||
"modal.module.basic.setting.module.placement": "モジュールの配置",
|
||||
"modal.module.basic.setting.module.placement.select.fitting.type": "設置形態を選択してください。",
|
||||
@ -346,9 +346,9 @@
|
||||
"modal.actual.size.setting.not.exist.size": "実際の寸法の長さを入力してください",
|
||||
"modal.actual.size.setting.plane.size.length": "廊下寸法の長さ",
|
||||
"modal.actual.size.setting.actual.size.length": "実寸長",
|
||||
"plan.message.confirm.save": "プラン保存しますか??",
|
||||
"plan.message.confirm.copy": "プランコピーしますか??",
|
||||
"plan.message.confirm.delete": "プラン削除しますか??",
|
||||
"plan.message.confirm.save": "プラン保存しますか?",
|
||||
"plan.message.confirm.copy": "プランコピーしますか?",
|
||||
"plan.message.confirm.delete": "プラン削除しますか?",
|
||||
"plan.message.save": "保存されました。",
|
||||
"plan.message.delete": "削除されました。",
|
||||
"plan.message.leave": "物件状況(リスト)に移動しますか? [はい]を選択した場合は保存して移動します。",
|
||||
|
||||
@ -1052,7 +1052,6 @@
|
||||
"module.not.found": "모듈을 선택하세요.",
|
||||
"module.circuit.minimun.error": "회로번호는 1 이상입력해주세요.",
|
||||
"module.already.exist.error": "회로번호가 같은 다른 파워 컨디셔너 모듈이 있습니다. 다른 회로번호를 설정하십시오.",
|
||||
"module.circuit.fix.not.same.roof.error": "다른 지붕면의 모듈이 선택되어 있습니다. 모듈 선택을 다시 하세요.",
|
||||
"construction.length.difference": "지붕면 공법을 모두 선택하십시오.",
|
||||
"menu.validation.canvas.roof": "패널을 배치하려면 지붕면을 입력해야 합니다.",
|
||||
"batch.object.outside.roof": "오브젝트는 지붕내에 설치해야 합니다.",
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user