Merge pull request 'dev' (#102) from dev into dev-deploy

Reviewed-on: #102
This commit is contained in:
ysCha 2025-06-05 17:04:44 +09:00
commit f26be9c1a4
4 changed files with 34 additions and 17 deletions

View File

@ -4,7 +4,7 @@ import { useContext, useEffect, useState } from 'react'
import { usePathname, useRouter, useSearchParams } from 'next/navigation' import { usePathname, useRouter, useSearchParams } from 'next/navigation'
import { useRecoilState, useRecoilValue, useSetRecoilState } from 'recoil' import { useRecoilState, useRecoilValue, useResetRecoilState, useSetRecoilState } from 'recoil'
import { v4 as uuidv4 } from 'uuid' import { v4 as uuidv4 } from 'uuid'
@ -98,7 +98,7 @@ export default function CanvasMenu(props) {
const [lockButtonStyle, setLockButtonStyle] = useState('') // const [lockButtonStyle, setLockButtonStyle] = useState('') //
const setFloorPlanObjectNo = useSetRecoilState(floorPlanObjectState) // const setFloorPlanObjectNo = useSetRecoilState(floorPlanObjectState) //
const resetCommonUtils = useResetRecoilState(commonUtilsState)
// //
const { objectNo, pid } = floorPlanState const { objectNo, pid } = floorPlanState
@ -166,6 +166,7 @@ export default function CanvasMenu(props) {
} }
const onClickNav = async (menu) => { const onClickNav = async (menu) => {
resetCommonUtils()
switch (menu.type) { switch (menu.type) {
case 'drawing': case 'drawing':
swalFire({ swalFire({
@ -241,7 +242,7 @@ export default function CanvasMenu(props) {
return return
} }
setIsGlobalLoading(true) setIsGlobalLoading(true)
promiseGet({ url: `/api/estimate/${objectNo}/${selectedPlan?.planNo??pid}/detail` }).then((res) => { promiseGet({ url: `/api/estimate/${objectNo}/${selectedPlan?.planNo ?? pid}/detail` }).then((res) => {
if (res.status === 200) { if (res.status === 200) {
const estimateDetail = res.data const estimateDetail = res.data
if (estimateDetail.estimateDate !== null) { if (estimateDetail.estimateDate !== null) {
@ -249,7 +250,7 @@ export default function CanvasMenu(props) {
setCurrentMenu(menu.title) setCurrentMenu(menu.title)
setFloorPlanObjectNo({ floorPlanObjectNo: objectNo }) setFloorPlanObjectNo({ floorPlanObjectNo: objectNo })
setIsGlobalLoading(false) setIsGlobalLoading(false)
router.push(`/floor-plan/estimate/5?pid=${selectedPlan?.planNo??pid}&objectNo=${objectNo}`) router.push(`/floor-plan/estimate/5?pid=${selectedPlan?.planNo ?? pid}&objectNo=${objectNo}`)
if (pathname === '/floor-plan/estimate/5') { if (pathname === '/floor-plan/estimate/5') {
setIsGlobalLoading(false) setIsGlobalLoading(false)
} }
@ -262,13 +263,13 @@ export default function CanvasMenu(props) {
break break
case 'simulation': case 'simulation':
setIsGlobalLoading(true) setIsGlobalLoading(true)
promiseGet({ url: `/api/estimate/${objectNo}/${selectedPlan?.planNo??pid}/detail` }).then((res) => { promiseGet({ url: `/api/estimate/${objectNo}/${selectedPlan?.planNo ?? pid}/detail` }).then((res) => {
if (res.status === 200) { if (res.status === 200) {
const estimateDetail = res.data const estimateDetail = res.data
if (estimateDetail.estimateDate !== null && estimateDetail.docNo) { if (estimateDetail.estimateDate !== null && estimateDetail.docNo) {
setSelectedMenu(menu.type) setSelectedMenu(menu.type)
setCurrentMenu(menu.title) setCurrentMenu(menu.title)
router.push(`/floor-plan/simulator/6?pid=${selectedPlan?.planNo??pid}&objectNo=${objectNo}`) router.push(`/floor-plan/simulator/6?pid=${selectedPlan?.planNo ?? pid}&objectNo=${objectNo}`)
if (pathname === '/floor-plan/simulator/6') { if (pathname === '/floor-plan/simulator/6') {
setIsGlobalLoading(false) setIsGlobalLoading(false)
} }

View File

@ -5,9 +5,10 @@ import { useEffect } from 'react'
import { useMessage } from '@/hooks/useMessage' import { useMessage } from '@/hooks/useMessage'
import useMenu from '@/hooks/common/useMenu' import useMenu from '@/hooks/common/useMenu'
import { canvasState, currentMenuState } from '@/store/canvasAtom' import { canvasState, currentMenuState } from '@/store/canvasAtom'
import { useRecoilState, useRecoilValue } from 'recoil' import { useRecoilState, useRecoilValue, useResetRecoilState } from 'recoil'
import { subMenusState } from '@/store/menuAtom' import { subMenusState } from '@/store/menuAtom'
import { useCanvasMenu } from '@/hooks/common/useCanvasMenu' import { useCanvasMenu } from '@/hooks/common/useCanvasMenu'
import { commonUtilsState } from '@/store/commonUtilsAtom'
export default function MenuDepth01() { export default function MenuDepth01() {
const canvas = useRecoilValue(canvasState) const canvas = useRecoilValue(canvasState)
@ -16,8 +17,10 @@ export default function MenuDepth01() {
const { selectedMenu, setSelectedMenu } = useCanvasMenu() const { selectedMenu, setSelectedMenu } = useCanvasMenu()
const [currentMenu, setCurrentMenu] = useRecoilState(currentMenuState) const [currentMenu, setCurrentMenu] = useRecoilState(currentMenuState)
const subMenus = useRecoilValue(subMenusState) const subMenus = useRecoilValue(subMenusState)
const resetCommonUtils = useResetRecoilState(commonUtilsState)
const onClickMenu = ({ id, menu }) => { const onClickMenu = ({ id, menu }) => {
resetCommonUtils()
if (menu === currentMenu) { if (menu === currentMenu) {
handleMenu(selectedMenu) handleMenu(selectedMenu)
} else { } else {

View File

@ -1,11 +1,11 @@
import { useEffect } from 'react' import { useEffect } from 'react'
import { useRecoilState, useRecoilValue } from 'recoil' import { useRecoilState, useRecoilValue, useResetRecoilState } from 'recoil'
import { wordDisplaySelector } from '@/store/settingAtom' import { wordDisplaySelector } from '@/store/settingAtom'
import { useEvent } from '@/hooks/useEvent' import { useEvent } from '@/hooks/useEvent'
import { checkLineOrientation, getDistance } from '@/util/canvas-util' import { checkLineOrientation, getDistance } from '@/util/canvas-util'
import { commonUtilsState, dimensionLineSettingsState } from '@/store/commonUtilsAtom' import { commonUtilsState, dimensionLineSettingsState } from '@/store/commonUtilsAtom'
import { fontSelector } from '@/store/fontAtom' import { fontSelector } from '@/store/fontAtom'
import { canvasState } from '@/store/canvasAtom' import { canvasState, currentMenuState } from '@/store/canvasAtom'
import { v4 as uuidv4 } from 'uuid' import { v4 as uuidv4 } from 'uuid'
import { usePopup } from '@/hooks/usePopup' import { usePopup } from '@/hooks/usePopup'
import Distance from '@/components/floor-plan/modal/distance/Distance' import Distance from '@/components/floor-plan/modal/distance/Distance'
@ -16,7 +16,7 @@ import { BATCH_TYPE } from '@/common/common'
export function useCommonUtils() { export function useCommonUtils() {
const canvas = useRecoilValue(canvasState) const canvas = useRecoilValue(canvasState)
const wordDisplay = useRecoilValue(wordDisplaySelector) const wordDisplay = useRecoilValue(wordDisplaySelector)
const { addCanvasMouseEventListener, addDocumentEventListener, initEvent } = useEvent() const { addCanvasMouseEventListener, addDocumentEventListener, initEvent, removeMouseEvent } = useEvent()
const dimensionSettings = useRecoilValue(dimensionLineSettingsState) const dimensionSettings = useRecoilValue(dimensionLineSettingsState)
const dimensionLineTextFont = useRecoilValue(fontSelector('dimensionLineText')) const dimensionLineTextFont = useRecoilValue(fontSelector('dimensionLineText'))
const lengthTextFont = useRecoilValue(fontSelector('lengthText')) const lengthTextFont = useRecoilValue(fontSelector('lengthText'))
@ -27,12 +27,14 @@ export function useCommonUtils() {
const { applyDormers } = useObjectBatch({}) const { applyDormers } = useObjectBatch({})
useEffect(() => { useEffect(() => {
if (commonUtils.text || !commonUtils.text) { commonTextMode()
commonTextMode() if (commonUtils.dimension) {
} else if (commonUtils.dimension) {
commonDimensionMode() commonDimensionMode()
} else if (commonUtils.distance) { return
}
if (commonUtils.distance) {
commonDistanceMode() commonDistanceMode()
return
} }
}, [commonUtils, dimensionSettings, commonTextFont, dimensionLineTextFont]) }, [commonUtils, dimensionSettings, commonTextFont, dimensionLineTextFont])
@ -72,8 +74,17 @@ export function useCommonUtils() {
}) })
}, 100) }, 100)
} else { } else {
removeMouseEvent('mouse:down')
const activeObject = canvas?.getActiveObject() const activeObject = canvas?.getActiveObject()
if (activeObject && activeObject.name === 'commonText') { const commonTexts = canvas?.getObjects().filter((obj) => obj.name === 'commonText')
if (commonTexts) {
commonTexts.forEach((text) => {
if (text.text === '') {
canvas?.remove(text)
}
})
}
/*if (activeObject && activeObject.name === 'commonText') {
if (activeObject && activeObject.isEditing) { if (activeObject && activeObject.isEditing) {
if (activeObject.text === '') { if (activeObject.text === '') {
canvas?.remove(activeObject) canvas?.remove(activeObject)
@ -87,7 +98,7 @@ export function useCommonUtils() {
}) })
canvas.renderAll() canvas.renderAll()
} }
} }*/
initEvent() initEvent()
} }

View File

@ -1,5 +1,7 @@
import { useRecoilState } from 'recoil' import { useRecoilState, useResetRecoilState } from 'recoil'
import { contextPopupState, popupState } from '@/store/popupAtom' import { contextPopupState, popupState } from '@/store/popupAtom'
import { useEffect } from 'react'
import { commonUtilsState } from '@/store/commonUtilsAtom'
/** /**
* 팝업 관리 * 팝업 관리