This commit is contained in:
Daseul Kim 2025-02-14 11:17:04 +09:00
commit 4543a1f67d
8 changed files with 20 additions and 168 deletions

View File

@ -3,32 +3,12 @@
import { createContext, useEffect, useState } from 'react'
import { useLocalStorage } from 'usehooks-ts'
// export const GlobalDataContext = createContext({
// managementState: {},
// setManagementState: () => {},
// managementStateLoaded: null,
// })
export const GlobalDataContext = createContext(null)
const GlobalDataProvider = ({ children }) => {
const [managementState, setManagementState] = useState(null)
// TODO: 임시 조치이며 개발 완료시 삭제 예정 -> 잊지말기...
const [managementStateLoaded, setManagementStateLoaded] = useLocalStorage('managementStateLoaded', null)
// const pathname = usePathname()
// const setCorrentObjectNo = useSetRecoilState(correntObjectNoState)
// const searchParams = useSearchParams()
// const objectNo = searchParams.get('objectNo')
// const pid = searchParams.get('pid')
// useEffect(() => {
// if (pathname === '/floor-plan') {
// if (pid === undefined || pid === '' || pid === null || objectNo === undefined || objectNo === '' || objectNo === null) {
// notFound()
// }
// setCorrentObjectNo(objectNo)
// }
// }, [pathname])
useEffect(() => {
if (managementState !== null) {
setManagementStateLoaded(managementState)

View File

@ -15,9 +15,7 @@ export const QcastContext = createContext({
})
export const QcastProvider = ({ children }) => {
const [planSave, setPlanSave] = useState(false)
const [isGlobalLoading, setIsGlobalLoading] = useState(true)
const { commonCode, findCommonCode } = useCommonCode()
const [qcastState, setQcastState] = useState({
saleStoreId: '',
@ -27,11 +25,6 @@ export const QcastProvider = ({ children }) => {
businessChargerMail: null,
})
// useEffect(() => {
// console.log('commonCode', commonCode)
// console.log(findCommonCode(113600))
// }, [commonCode, findCommonCode])
return (
<>
<QcastContext.Provider value={{ qcastState, setQcastState, isGlobalLoading, setIsGlobalLoading }}>

View File

@ -26,8 +26,6 @@ export default function InitSettingsModal(props) {
const { get, post } = useAxios()
//const { get, post } = useAxios()
useEffect(() => {
get({ url: `/api/canvas-management/canvas-basic-settings/by-object/${objectNo}` }).then((res) => {
if (res.length == 0) return

View File

@ -1,16 +1,19 @@
'use client'
import { useRecoilState, useRecoilValue } from 'recoil'
import useSWR from 'swr'
import useSWRMutation from 'swr/mutation'
import { useAxios } from '../useAxios'
import { unescapeString } from '@/util/common-utils'
import { moduleSelectionDataState, moduleSelectionTotalState, selectedModuleOptionsState, selectedModuleState } from '@/store/selectedModuleOptions'
import { moduleSelectionDataState, selectedModuleState } from '@/store/selectedModuleOptions'
import { compasDegAtom } from '@/store/orientationAtom'
import { canvasState, currentCanvasPlanState } from '@/store/canvasAtom'
import { POLYGON_TYPE } from '@/common/common'
import { DateRangePickerField } from '@nextui-org/react'
/**
* 캔버스 팝업 상태 관리
* @param {*} param
* @returns
*/
export function useCanvasPopupStatusController(param = 1) {
const popupType = parseInt(param)
@ -20,7 +23,6 @@ export function useCanvasPopupStatusController(param = 1) {
const { get, promiseGet, getFetcher, postFetcher } = useAxios()
const canvas = useRecoilValue(canvasState)
const currentCanvasPlan = useRecoilValue(currentCanvasPlanState)
// console.log('🚀 ~ Orientation ~ currentCanvasPlan:', currentCanvasPlan)
/**
* 팝업 상태 조회
@ -28,15 +30,6 @@ export function useCanvasPopupStatusController(param = 1) {
* @returns
*/
const getModuleSelection = async (popupTypeParam) => {
// const {
// data: popupStatus,
// error,
// isLoading,
// } = useSWR(
// `/api/v1/canvas-popup-status?objectNo=${currentCanvasPlan.objectNo}&planNo=${currentCanvasPlan.planNo}&popupType=${popupTypeParam}`,
// getFetcher,
// )
const result = await promiseGet({
url: `/api/v1/canvas-popup-status?objectNo=${currentCanvasPlan.objectNo}&planNo=${currentCanvasPlan.planNo}&popupType=${popupTypeParam}`,
})
@ -59,7 +52,6 @@ export function useCanvasPopupStatusController(param = 1) {
for (let i = 1; i < 3; i++) {
const result = await getModuleSelection(i)
console.log('🚀 ~ handleModuleSelectionTotal ~ result:', result)
// setModuleSelectionTotal((prev) => ({ ...prev, [i]: JSON.parse(unescapeString(result.popupStatus)) }))
if (!result.objectNo) return
if (i === 1) {
setCompasDeg(result.popupStatus)
@ -77,49 +69,6 @@ export function useCanvasPopupStatusController(param = 1) {
}
}
// useEffect(() => {
// if (popupStatus) {
// switch (parseInt(popupStatus?.popupType)) {
// case 1:
// setCompasDeg(popupStatus.popupStatus)
// break
// case 2:
// setModuleSelectionDataStore(JSON.parse(unescapeString(popupStatus.popupStatus)))
// break
// case 3:
// break
// case 4:
// break
// case 5:
// break
// case 6:
// break
// default:
// }
// } else {
// switch (popupType) {
// case 1:
// setCompasDeg(0)
// break
// case 2:
// setModuleSelectionDataStore({
// common: {},
// roofConstructions: [],
// })
// break
// case 3:
// break
// case 4:
// break
// case 5:
// break
// case 6:
// break
// default:
// }
// }
// }, [popupStatus])
/**
* 팝업 상태 저장
*/

View File

@ -15,7 +15,6 @@ export function useCommonUtils() {
const canvas = useRecoilValue(canvasState)
const wordDisplay = useRecoilValue(wordDisplaySelector)
const { addCanvasMouseEventListener, addDocumentEventListener, initEvent } = useEvent()
// const { addCanvasMouseEventListener, addDocumentEventListener, initEvent } = useContext(EventContext)
const dimensionSettings = useRecoilValue(dimensionLineSettingsState)
const dimensionLineTextFont = useRecoilValue(fontSelector('dimensionLineText'))
const commonTextFont = useRecoilValue(fontSelector('commonText'))
@ -24,7 +23,6 @@ export function useCommonUtils() {
const { drawDirectionArrow, addLengthText } = usePolygon()
useEffect(() => {
// initEvent()
if (commonUtils.text) {
commonTextMode()
} else if (commonUtils.dimension) {
@ -247,15 +245,12 @@ export function useCommonUtils() {
name: 'extendLine',
id: uuid,
})
// canvas.add(extendLine)
groupObjects.push(extendLine)
})
const dimensionPosition = calcDimensionPosition(lineDirection, p1CenterX, p1CenterY, p2CenterX, p2CenterY)
const arrow1 = createDimensionArrow(dimensionPosition.paddingX, dimensionPosition.paddingY, dimensionPosition.angle1, uuid) // 반대 방향 화살표
const arrow2 = createDimensionArrow(dimensionPosition.paddingX2, dimensionPosition.paddingY2, dimensionPosition.angle2, uuid) // 정방향 화살표
// canvas.add(arrow1)
// canvas.add(arrow2)
groupObjects.push(arrow1, arrow2)
@ -310,23 +305,6 @@ export function useCommonUtils() {
// 캔버스 다시 그리기
canvas.renderAll()
})
// addCanvasMouseEventListener('object:moving', function (e) {
// const obj = e.target
// if (obj.left < minX) {
// obj.left = minX
// }
// if (obj.left + obj.width > maxX) {
// obj.left = maxX - obj.width
// }
// if (obj.top < minY) {
// obj.top = minY
// }
// if (obj.top + obj.height > maxY) {
// obj.top = maxY - obj.height
// }
// })
}
}

View File

@ -1,12 +1,16 @@
import { useEffect, useRef, useState } from 'react'
import { useRecoilState, useRecoilValue } from 'recoil'
import { useRecoilState } from 'recoil'
import { useSwal } from '@/hooks/useSwal'
import { useAxios } from '../useAxios'
import { canvasState, currentCanvasPlanState } from '@/store/canvasAtom'
import { convertDwgToPng, removeImage, writeImageBuffer, readImage } from '@/lib/fileAction'
import { currentCanvasPlanState } from '@/store/canvasAtom'
import { useCanvas } from '@/hooks/useCanvas'
/**
* 배경 이미지 관리
* 도면에 배경이미지를 로딩하는 기능을 제공
* @returns {object}
*/
export function useRefFiles() {
const converterUrl = process.env.NEXT_PUBLIC_CONVERTER_API_URL
const [refImage, setRefImage] = useState(null)
@ -15,33 +19,18 @@ export function useRefFiles() {
const [currentBgImage, setCurrentBgImage] = useState(null)
const queryRef = useRef(null)
const [currentCanvasPlan, setCurrentCanvasPlan] = useRecoilState(currentCanvasPlanState)
// const canvas = useRecoilValue(canvasState)
const { canvas, handleBackImageLoadToCanvas } = useCanvas()
const { handleBackImageLoadToCanvas } = useCanvas()
const { swalFire } = useSwal()
const { get, post, promisePost } = useAxios()
const { get, post } = useAxios()
useEffect(() => {
if (refFileMethod === '1') {
// 파일 불러오기
setMapPositionAddress('')
} else {
setRefImage(null)
}
}, [refFileMethod])
/**
* 현재 플랜이 변경되면 플랜 상태 저장
*/
useEffect(() => {
// console.log('🚀 ~ useRefFiles ~ currentCanvasPlan:', currentCanvasPlan)
// const handleCurrentPlan = async () => {
// await promisePut({ url: '/api/canvas-management/canvas-statuses', data: currentCanvasPlan }).then((res) => {
// console.log('🚀 ~ awaitpromisePut ~ res:', res)
// })
// }
// handleCurrentPlan()
}, [currentCanvasPlan])
/**
* 파일 불러오기 버튼 컨트롤
* @param {*} file
@ -56,8 +45,6 @@ export function useRefFiles() {
type: 'confirm',
confirmFn: () => {
refFileSetting(file)
// setRefImage(file)
// file.name.split('.').pop() === 'dwg' ? handleUploadConvertRefFile(file) : handleUploadImageRefFile(file)
},
})
} else {
@ -71,7 +58,6 @@ export function useRefFiles() {
handleUploadConvertRefFile(file)
} else {
if (file && ['image/png', 'image/jpg', 'image/jpeg', 'image/bmp', 'image/gif'].includes(file.type)) {
// file.name.split('.').pop() === 'dwg' ? handleUploadConvertRefFile(file) : handleUploadImageRefFile(file)
handleUploadImageRefFile(file)
} else {
swalFire({
@ -82,6 +68,7 @@ export function useRefFiles() {
}
}
}
/**
* 파일 삭제
*/
@ -92,9 +79,6 @@ export function useRefFiles() {
confirmFn: () => {
setRefImage(null)
setCurrentCanvasPlan((prev) => ({ ...prev, bgImageName: null }))
// removeImage(currentCanvasPlan.id).then((res) => {
// console.log(res)
// })
},
})
}
@ -110,9 +94,6 @@ export function useRefFiles() {
setMapPositionAddress('')
setCurrentBgImage(null)
setCurrentCanvasPlan((prev) => ({ ...prev, mapPositionAddress: null }))
// removeImage(currentCanvasPlan.id).then((res) => {
// console.log(res)
// })
},
})
}
@ -130,9 +111,6 @@ export function useRefFiles() {
url: `${process.env.NEXT_PUBLIC_HOST_URL}/map/convert?q=${queryRef.current.value}&fileNm=${currentCanvasPlan.id}&zoom=20`,
})
console.log('🚀 ~ handleMapImageDown ~ res:', res)
// const file = await readImage(res.fileNm)
// console.log('🚀 ~ handleMapImageDown ~ file:', file)
// setCurrentBgImage(file)
setCurrentBgImage(`${process.env.NEXT_PUBLIC_HOST_URL}${res.filePath}`)
}
@ -144,7 +122,6 @@ export function useRefFiles() {
return
}
console.log('🚀 ~ useEffect ~ currentBgImage:', currentBgImage)
// handleBackImageLoadToCanvas(`plan-images/${currentCanvasPlan.id}.png`)
handleBackImageLoadToCanvas(currentBgImage)
setCurrentCanvasPlan((prev) => ({
...prev,
@ -160,16 +137,12 @@ export function useRefFiles() {
const handleUploadImageRefFile = async (file) => {
const formData = new FormData()
formData.append('file', file)
// formData.append('fileName', currentCanvasPlan.id)
// const res = await post({ url: `${process.env.NEXT_PUBLIC_API_SERVER_PATH}/api/image-upload`, data: formData })
const res = await post({
url: `${process.env.NEXT_PUBLIC_HOST_URL}/image/upload`,
data: formData,
})
console.log('🚀 ~ handleUploadImageRefFile ~ res:', res)
// const image = await readImage(res.filePath)
// console.log('🚀 ~ handleUploadImageRefFile ~ file:', image)
setCurrentBgImage(`${process.env.NEXT_PUBLIC_HOST_URL}${res.filePath}`)
setRefImage(file)
}
@ -191,15 +164,6 @@ export function useRefFiles() {
console.log('🚀 ~ handleUploadConvertRefFile ~ result:', result)
setCurrentBgImage(`${process.env.NEXT_PUBLIC_HOST_URL}${result.filePath}`)
setRefImage(res.Files[0].FileData)
// await promisePost({ url: converterUrl, data: formData })
// .then((res) => {
// convertDwgToPng(res.data.Files[0].FileName, res.data.Files[0].FileData)
// swalFire({ text: '파일 변환 성공' })
// setRefImage(res.data.Files[0].FileData)
// })
// .catch((err) => {
// swalFire({ text: '파일 변환 실패', icon: 'error' })
// })
}
/**

View File

@ -1,6 +1,5 @@
import { useRecoilValue } from 'recoil'
import { canvasState } from '@/store/canvasAtom'
import { useCanvas } from '../useCanvas'
import { useAxios } from '../useAxios'
import { usePlan } from '../usePlan'
import { POLYGON_TYPE } from '@/common/common'
@ -9,6 +8,8 @@ import { useContext } from 'react'
/**
* 이미지 로더 hook
* 캔버스를 바이너리로 변환하고 이미지 객체에 붙여서 다시 이미지를 바이너리로 전달
* 캔버스 데이터가 바이너리로 변경되면 용량이 너무 커서 post전송에 실패할 있음
* @returns {function} handleCanvasToPng
*/
export function useImgLoader() {
@ -67,7 +68,7 @@ export function useImgLoader() {
formData.append('objectNo', currentCanvasPlan.objectNo)
formData.append('planNo', currentCanvasPlan.planNo)
formData.append('type', type)
// formData.append('coordinates', getImageCoordinates())
/** 이미지 크롭 좌표 계산 */
const positionObj = getImageCoordinates()
console.log('🚀 ~ handleCanvasToPng ~ positionObj:', positionObj)
formData.append('width', Math.round(positionObj[1].x - positionObj[0].x + 100))
@ -76,7 +77,7 @@ export function useImgLoader() {
formData.append('top', Math.round(positionObj[0].y))
console.log('🚀 ~ handleCanvasToPng ~ formData:', formData)
// 이미지 크롭 요청
/** 이미지 크롭 요청 */
const result = await post({
url: `${process.env.NEXT_PUBLIC_HOST_URL}/image/canvas`,
data: formData,

View File

@ -1,14 +1,3 @@
// import { createI18nMiddleware } from 'next-international/middleware'
// const I18nMiddleware = createI18nMiddleware({
// locales: ['ko', 'ja'],
// defaultLocale: 'ko',
// })
// export function middleware(request) {
// return I18nMiddleware(request)
// }
export const config = {
matcher: ['/((?!api|static|.*\\..*|_next|favicon.ico|robots.txt).*)'],
}