'use client' import { useEffect, useState } from 'react' import { useRecoilState, useRecoilValue, useSetRecoilState } from 'recoil' import { usePathname, useRouter } from 'next/navigation' import MenuDepth01 from './MenuDepth01' import QSelectBox from '@/components/common/select/QSelectBox' import { v4 as uuidv4 } from 'uuid' import { useMessage } from '@/hooks/useMessage' import { usePlan } from '@/hooks/usePlan' import { useSwal } from '@/hooks/useSwal' import { useEvent } from '@/hooks/useEvent' import { canvasSettingState, canvasState, canvasZoomState, currentMenuState, verticalHorizontalModeState } from '@/store/canvasAtom' import { sessionStore } from '@/store/commonAtom' import { outerLinePointsState } from '@/store/outerLineAtom' import { appMessageStore, globalLocaleStore } from '@/store/localeAtom' import { settingModalFirstOptionsState } from '@/store/settingAtom' import KO from '@/locales/ko.json' import JA from '@/locales/ja.json' import { useCanvasEvent } from '@/hooks/useCanvasEvent' import SettingModal01 from '@/components/floor-plan/modal/setting01/SettingModal01' import { usePopup } from '@/hooks/usePopup' import { placementShapeDrawingPointsState } from '@/store/placementShapeDrawingAtom' import PlacementShapeSetting from '@/components/floor-plan/modal/placementShape/PlacementShapeSetting' import { useCommonUtils } from '@/hooks/common/useCommonUtils' import { commonUtilsState } from '@/store/commonUtilsAtom' import { menusState, menuTypeState } from '@/store/menuAtom' import useMenu from '@/hooks/common/useMenu' import { MENU } from '@/common/common' import { useEstimateController } from '@/hooks/floorPlan/estimate/useEstimateController' export default function CanvasMenu(props) { const { menuNumber, setMenuNumber } = props const pathname = usePathname() const router = useRouter() const { addPopup } = usePopup() const canvasMenus = useRecoilValue(menusState) const [type, setType] = useRecoilState(menuTypeState) const [verticalHorizontalMode, setVerticalHorizontalMode] = useRecoilState(verticalHorizontalModeState) const [appMessageState, setAppMessageState] = useRecoilState(appMessageStore) const setCurrentMenu = useSetRecoilState(currentMenuState) const setOuterLinePoints = useSetRecoilState(outerLinePointsState) const setPlacementPoints = useSetRecoilState(placementShapeDrawingPointsState) const canvasSetting = useRecoilValue(canvasSettingState) const [canvasZoom, setCanvasZoom] = useRecoilState(canvasZoomState) const sessionState = useRecoilValue(sessionStore) const globalLocale = useRecoilValue(globalLocaleStore) const canvas = useRecoilValue(canvasState) const { handleZoomClear, handleZoom } = useCanvasEvent() const { handleMenu } = useMenu() const { handleEstimateSubmit } = useEstimateController() const { getMessage } = useMessage() const { currentCanvasPlan, saveCanvas } = usePlan() const { swalFire } = useSwal() const { initEvent, addCanvasMouseEventListener, addDocumentEventListener } = useEvent() const commonUtils = useRecoilValue(commonUtilsState) const { commonFunctions } = useCommonUtils() const SelectOption = [{ name: '瓦53A' }, { name: '瓦53A' }] const onClickNav = (menu) => { setMenuNumber(menu.index) setCurrentMenu(menu.title) switch (menu.index) { case 1: setType('placementShape') onClickPlacementInitialMenu() break case 2: setType('outline') break case 3: setType('surface') break case 4: setType('module') break case 6: router.push(`/floor-plan/simulator/${menu.index}`) break } if (pathname !== '/floor-plan') router.push('/floor-plan') } const settingsModalOptions = useRecoilState(settingModalFirstOptionsState) useEffect(() => { if (menuNumber === 1) { onClickPlacementInitialMenu() } }, [menuNumber, type]) // 저장버튼(btn08) 클릭 시 호출되는 함수 const handleSaveCanvas = async () => { // swalFire({ // text: `${currentCanvasPlan.name} ` + getMessage('plan.message.confirm.save'), // type: 'confirm', // confirmFn: async () => { await saveCanvas(sessionState.userId) // }, // }) } const [placementInitialId, setPlacementInitialId] = useState(uuidv4()) const placementInitialProps = { id: placementInitialId, pos: { x: 50, y: 180, }, } const onClickPlacementInitialMenu = () => { addPopup(placementInitialId, 1, ) } const handleClear = () => { setOuterLinePoints([]) setPlacementPoints([]) canvas?.clear() } // // const handleZoomClear = () => { // setCanvasZoom(100) // canvas.set({ zoom: 1 }) // canvas.viewportTransform = [1, 0, 0, 1, 0, 0] // canvas.renderAll() // } const handlePopup = () => { const id = uuidv4() addPopup(id, 1, , true) } useEffect(() => { if (globalLocale === 'ko') { setAppMessageState(KO) } else { setAppMessageState(JA) } }, [type, globalLocale]) useEffect(() => { if (['2', '3'].includes(canvasSetting?.roofSizeSet?.toString())) { setMenuNumber(3) setType('surface') setCurrentMenu(MENU.BATCH_CANVAS.BATCH_DRAWING) } else { setMenuNumber(2) setType('outline') setCurrentMenu(MENU.ROOF_COVERING.EXTERIOR_WALL_LINE) } }, [canvasSetting]) return (
    {canvasMenus.map((menu) => { return (
  • { if (['2', '3'].includes(canvasSetting?.roofSizeSet?.toString()) && menu.index === 2) return onClickNav(menu) }} >
  • ) })}
{menuNumber !== 6 && menuNumber !== 5 && ( <> {
{getMessage('plan.mode.vertical.horizontal')}
}
{/**/}
{canvasZoom}%
)} {menuNumber === 5 && ( <>
)} {menuNumber === 6 && ( <>
)}
{(menuNumber === 2 || menuNumber === 3 || menuNumber === 4) && }
) }