From 62983ca64390fb131db2cae16353128b5beca969 Mon Sep 17 00:00:00 2001 From: "hyojun.choi" Date: Thu, 27 Feb 2025 16:59:04 +0900 Subject: [PATCH 1/2] =?UTF-8?q?=EA=B0=80=EB=8C=80=20=EA=B7=B8=EB=A6=B4=20?= =?UTF-8?q?=EC=88=98=20=EC=97=86=EB=8A=94=20=EA=B2=BD=EC=9A=B0=20alert=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/hooks/module/useTrestle.js | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/hooks/module/useTrestle.js b/src/hooks/module/useTrestle.js index 2b35aaf6..73fca74e 100644 --- a/src/hooks/module/useTrestle.js +++ b/src/hooks/module/useTrestle.js @@ -605,7 +605,7 @@ export const useTrestle = () => { } catch (e) { // 에러 발생시 가대 초기화 console.error(e) - // clear() + clear() setViewCircuitNumberTexts(true) setIsGlobalLoading(false) return false @@ -988,12 +988,20 @@ export const useTrestle = () => { return result } + // rack을 그린다. const drawRacks = (rackInfos, rackQty, rackIntvlPct, module, direction, l, rackYn) => { - if (!rackInfos) { - return - } const { width, height, left, top, lastX, lastY, surfaceId } = module const surface = canvas.getObjects().find((obj) => obj.id === surfaceId) + if (!rackInfos) { + const maxRows = surface.trestleDetail.moduleMaxRows + const maxCols = surface.trestleDetail.moduleMaxCols + const msg = `選択した家で設置可能 +モジュールの最大段数は${maxRows}、最大列数は${maxCols}です。 +上限より上部に取り付けたモジュールを削除してください。` + swalFire({ title: msg, type: 'alert' }) + throw new Error('rackInfos is null') + } + const roof = canvas.getObjects().find((obj) => obj.id === surface.parentId) const degree = getDegreeByChon(roof.roofMaterial.pitch) From 84fa6562afec07c7a8901b768120475729e98c3d Mon Sep 17 00:00:00 2001 From: yoosangwook Date: Thu, 27 Feb 2025 16:59:16 +0900 Subject: [PATCH 2/2] =?UTF-8?q?=F0=9F=91=80fix:=20=ED=94=8C=EB=9E=9C=20?= =?UTF-8?q?=EB=B3=B5=EC=82=AC=EC=8B=9C=20=EB=A9=94=EB=89=B4=20=EC=9C=84?= =?UTF-8?q?=EC=B9=98=20=EC=BD=94=EB=93=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/hooks/usePlan.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/hooks/usePlan.js b/src/hooks/usePlan.js index befc05d8..f7fa7508 100644 --- a/src/hooks/usePlan.js +++ b/src/hooks/usePlan.js @@ -19,6 +19,7 @@ import { useCanvasSetting } from '@/hooks/option/useCanvasSetting' import { compasDegAtom } from '@/store/orientationAtom' import { moduleSelectionDataState, selectedModuleState } from '@/store/selectedModuleOptions' import { useCanvasPopupStatusController } from './common/useCanvasPopupStatusController' +import { useCanvasMenu } from './common/useCanvasMenu' /** * 플랜 처리 훅 @@ -58,6 +59,7 @@ export function usePlan(params = {}) { const [compasDeg, setCompasDeg] = useRecoilState(compasDegAtom) const [moduleSelectionDataStore, setModuleSelectionDataStore] = useRecoilState(moduleSelectionDataState) const [selectedModules, setSelectedModules] = useRecoilState(selectedModuleState) + const { selectedMenu, setSelectedMenu } = useCanvasMenu() /** * 마우스 포인터의 가이드라인 제거 @@ -224,6 +226,7 @@ export function usePlan(params = {}) { fetchBasicSettings(newPlan.planNo, null) } else { if (isCopy) { + const currentSelectedMenu = selectedMenu /* 복제 플랜 생성인 경우 현재 캔버스 데이터를 복제 */ newPlan.canvasStatus = currentCanvasData() newPlan.bgImageName = currentCanvasPlan?.bgImageName ?? null @@ -284,6 +287,10 @@ export function usePlan(params = {}) { roofSurfaceList.forEach((surface) => { surface.modules = modules.filter((module) => module.surfaceId === surface.id) }) + + setSelectedMenu(currentSelectedMenu) + } else { + setSelectedMenu('placement') } setCurrentCanvasPlan(newPlan) setPlans((plans) => [...plans.map((plan) => ({ ...plan, isCurrent: false })), newPlan])