diff --git a/docs/dictionary.txt b/docs/dictionary.txt index 268cde7a..94bfdb49 100644 --- a/docs/dictionary.txt +++ b/docs/dictionary.txt @@ -28,3 +28,4 @@ Allpainted : allPainted 치수선: dimensionLine 복도치수: planeSize 실제치수: actualSize +모듈설치면: moduleSetupSurface \ No newline at end of file diff --git a/public/static/images/canvas/side_icon10.svg b/public/static/images/canvas/side_icon10.svg new file mode 100644 index 00000000..d7eba9ec --- /dev/null +++ b/public/static/images/canvas/side_icon10.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/app/management/ManagementProvider.js b/src/app/management/ManagementProvider.js new file mode 100644 index 00000000..197b30c0 --- /dev/null +++ b/src/app/management/ManagementProvider.js @@ -0,0 +1,20 @@ +'ues client' + +import { createContext, useEffect, useState } from 'react' + +export const ManagementContext = createContext({ + managementState: {}, + setManagementState: () => {}, +}) + +const ManagementProvider = ({ children }) => { + const [managementState, setManagementState] = useState({}) + + useEffect(() => { + console.log('🚀 ~ managementState:', managementState) + }, [managementState]) + + return {children} +} + +export default ManagementProvider diff --git a/src/app/management/layout.js b/src/app/management/layout.js new file mode 100644 index 00000000..b0e031c7 --- /dev/null +++ b/src/app/management/layout.js @@ -0,0 +1,7 @@ +'use client' + +import ManagementProvider from './ManagementProvider' + +export default function ManagementLayout({ children }) { + return {children} +} diff --git a/src/common/common.js b/src/common/common.js index d0016af1..02a953fe 100644 --- a/src/common/common.js +++ b/src/common/common.js @@ -61,6 +61,8 @@ export const LINE_TYPE = { DEFAULT: 'default', EAVES: 'eaves', GABLE: 'gable', + GABLE_LEFT: 'gableLeft', //케라바 왼쪽 + GABLE_RIGHT: 'gableRight', //케라바 오른쪽 WALL: 'wall', HIPANDGABLE: 'hipAndGable', JERKINHEAD: 'jerkinhead', @@ -74,30 +76,20 @@ export const LINE_TYPE = { HIP: 'hip', RIDGE: 'ridge', GABLE: 'gable', - VALLEY: 'valley', VERGE: 'verge', + ONESIDE_FLOW_RIDGE: 'onesideFlowRidge', //한쪽흐름 용마루 + YOSEMUNE: 'yosemune', //요세무네 + VALLEY: 'valley', //골짜기 + L_ABANDON_VALLEY: 'lAbandonValley', //l의버림계곡 + MANSARD: 'mansard', //맨사드 + WALL_COLLECTION: 'wallCollection', //벽취합 + WALL_COLLECTION_TYPE: 'wallCollectionType', //벽취합(형) + WALL_COLLECTION_FLOW: 'wallCollectionFlow', //벽취합(흐름) + WALL_COLLECTION_FLOW_LEFT: 'wallCollectionFlowLeft', //벽취합(흐름 왼쪽) + WALL_COLLECTION_FLOW_RIGHT: 'wallCollectionFlowRight', //벽취합(흐름 오른쪽) }, } -export const LineType = { - EAVES: 'eaves', // 처마 - RIDGE: 'ridge', // 용마루.... - YOSEMUNE: 'yosemune', //요세무네 - ONESIDE_FLOW_RIDGE: 'onesideFlowRidge', //한쪽흐름 용마루 - WALL_COLLECTION: 'wallCollection', //벽취합 - WALL_COLLECTION_TYPE: 'wallCollectionType', //벽취합(형) - WALL_COLLECTION_FLOW: 'wallCollectionFlow', //벽취합(흐름) - WALL_COLLECTION_FLOW_LEFT: 'wallCollectionFlowLeft', //벽취합(흐름 왼쪽) - WALL_COLLECTION_FLOW_RIGHT: 'wallCollectionFlowRight', //벽취합(흐름 오른쪽) - KERABA: 'keraba', //케라바 - KERABA_LEFT: 'kerabaLeft', //케라바 왼쪽 - KERABA_RIGHT: 'kerabaRight', //케라바 오른쪽 - VALLEY: 'valley', //골짜기 - L_ABANDON_VALLEY: 'lAbandonValley', //l의버림계곡 - MANSARD: 'mansard', //맨사드 - NO_SETTING: 'noSetting', //설정없음 -} - // 오브젝트 배치 > 개구배치, 그림자배치 export const BATCH_TYPE = { OPENING: 'opening', @@ -119,6 +111,7 @@ export const POLYGON_TYPE = { ROOF: 'roof', WALL: 'wall', TRESTLE: 'trestle', + MODULE_SETUP_SURFACE: 'moduleSetupSurface', } export const SAVE_KEY = [ @@ -161,6 +154,13 @@ export const SAVE_KEY = [ 'groupId', 'planeSize', 'actualSize', + 'surfaceId', + 'lines', + 'offset', + 'arrow', + 'surfaceCompass', + 'moduleCompass', + 'isFixed', ] export const OBJECT_PROTOTYPE = [fabric.Line.prototype, fabric.Polygon.prototype, fabric.Triangle.prototype] diff --git a/src/components/Main.jsx b/src/components/Main.jsx index 11046eed..76afea76 100644 --- a/src/components/Main.jsx +++ b/src/components/Main.jsx @@ -1,9 +1,8 @@ 'use client' -import React, { useEffect, useState } from 'react' +import { useEffect, useState, useContext } from 'react' import { useRouter } from 'next/navigation' import { useRecoilState, useRecoilValue } from 'recoil' -import { sessionStore } from '@/store/commonAtom' import { useAxios } from '@/hooks/useAxios' import { globalLocaleStore } from '@/store/localeAtom' import MainContents from './main/MainContents' @@ -12,8 +11,10 @@ import { stuffSearchState } from '@/store/stuffAtom' import '@/styles/contents.scss' import ChangePasswordPop from './main/ChangePasswordPop' import { searchState } from '@/store/boardAtom' +import { SessionContext } from '@/app/SessionProvider' + export default function MainPage() { - const sessionState = useRecoilValue(sessionStore) + const { session } = useContext(SessionContext) const globalLocaleState = useRecoilValue(globalLocaleStore) @@ -33,14 +34,14 @@ export default function MainPage() { const [searchForm, setSearchForm] = useRecoilState(searchState) useEffect(() => { - if (sessionState.pwdInitYn === 'Y') { + if (session.pwdInitYn === 'Y') { fetchObjectList() } - }, [sessionState]) + }, [session]) const fetchObjectList = async () => { try { - const apiUrl = `/api/main-page/object/${sessionState?.storeId}/list` + const apiUrl = `/api/main-page/object/${session?.storeId}/list` await promiseGet({ url: apiUrl, }).then((res) => { @@ -95,7 +96,7 @@ export default function MainPage() { return ( <> - {(sessionState?.pwdInitYn !== 'N' && ( + {(session?.pwdInitYn !== 'N' && ( <>
{selected}