'use client' import { useEffect, useState } from 'react' import { useRecoilState, useRecoilValue, useSetRecoilState } from 'recoil' import MenuDepth01 from './MenuDepth01' import QSelectBox from '@/components/common/select/QSelectBox' import { useMessage } from '@/hooks/useMessage' import { usePlan } from '@/hooks/usePlan' import { useSwal } from '@/hooks/useSwal' import { canvasState, canvasZoomState, currentCanvasPlanState, currentMenuState, verticalHorizontalModeState } from '@/store/canvasAtom' import { sessionStore } from '@/store/commonAtom' import { outerLinePointsState } from '@/store/outerLineAtom' import { appMessageStore, globalLocaleStore } from '@/store/localeAtom' import { MENU } from '@/common/common' import KO from '@/locales/ko.json' import JA from '@/locales/ja.json' import { settingModalFirstOptionsState } from '@/store/settingAtom' const canvasMenus = [ { index: 0, name: 'plan.menu.plan.drawing', icon: 'con00', title: MENU.PLAN_DRAWING }, { index: 1, name: 'plan.menu.placement.surface.initial.setting', icon: 'con01', title: MENU.INITIAL_CANVAS_SETTING }, { index: 2, name: 'plan.menu.roof.cover', icon: 'con02', title: MENU.ROOF_COVERING.DEFAULT }, { index: 3, name: 'plan.menu.placement.surface', icon: 'con03', title: MENU.BATCH_CANVAS.DEFAULT }, { index: 4, name: 'plan.menu.module.circuit.setting', icon: 'con04', title: MENU.MODULE_CIRCUIT_SETTING.DEFAULT }, { index: 5, name: 'plan.menu.estimate', icon: 'con06', title: MENU.ESTIMATE.DEFAULT }, { index: 6, name: 'plan.menu.simulation', icon: 'con05', title: MENU.POWER_GENERATION_SIMULATION.DEFAULT }, ] export default function CanvasMenu(props) { const { setShowCanvasSettingModal, showOutlineModal, setShowOutlineModal, setShowPlaceShapeModal, setShowSlopeSettingModal, setShowPlacementSurfaceSettingModal, setShowPlaceShapeDrawingModal, setShowRoofShapeSettingModal, setShowObjectSettingModal, setShowRoofShapePassivitySettingModal, setShowAuxiliaryModal, setShowEavesGableEditModal, setShowMovementModal, setShowWallLineOffsetSettingModal, setShowRoofAllocationSettingModal, setShowBasicSettingModal, setShowPropertiesSettingModal, } = props const [menuNumber, setMenuNumber] = useState(null) const [type, setType] = useState('') const [verticalHorizontalMode, setVerticalHorizontalMode] = useRecoilState(verticalHorizontalModeState) const [appMessageState, setAppMessageState] = useRecoilState(appMessageStore) const setCurrentMenu = useSetRecoilState(currentMenuState) const setPoints = useSetRecoilState(outerLinePointsState) const [canvasZoom, setCanvasZoom] = useRecoilState(canvasZoomState) const [currentCanvasPlan, setcurrentCanvasPlan] = useRecoilState(currentCanvasPlanState) const globalLocale = useRecoilValue(globalLocaleStore) const canvas = useRecoilValue(canvasState) const sessionState = useRecoilValue(sessionStore) const { getMessage } = useMessage() const { saveCanvas } = usePlan() const { swalFire } = useSwal() 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 } } const menuProps = { setShowOutlineModal, setShowPlaceShapeModal, setShowRoofShapeSettingModal, setShowRoofShapePassivitySettingModal, setShowAuxiliaryModal, setShowEavesGableEditModal, setShowMovementModal, setShowSlopeSettingModal, setShowPlacementSurfaceSettingModal, setShowPlaceShapeDrawingModal, setShowWallLineOffsetSettingModal, setShowRoofAllocationSettingModal, setShowObjectSettingModal, setShowBasicSettingModal, setShowPropertiesSettingModal, type, } const settingsModalOptions = useRecoilState(settingModalFirstOptionsState) useEffect(() => { if (menuNumber === 1) { onClickPlacementInitialMenu() } if (menuNumber !== 2 && showOutlineModal) setShowOutlineModal(false) }, [menuNumber, type]) // 저장버튼(btn08) 클릭 시 호출되는 함수 const handleSaveCanvas = () => { swalFire({ html: getMessage('common.message.confirm.save') + `${currentCanvasPlan.name}`, type: 'confirm', confirmFn: () => { saveCanvas(sessionState.userId) }, }) } const onClickPlacementInitialMenu = () => { setShowOutlineModal(false) setShowCanvasSettingModal(false) setShowEavesGableEditModal(false) setShowMovementModal(false) setShowPlaceShapeModal(true) } const handleClear = () => { setPoints([]) canvas?.clear() } const handleZoomClear = () => { setCanvasZoom(100) canvas.set({ zoom: 1 }) canvas.viewportTransform = [1, 0, 0, 1, 0, 0] canvas.renderAll() } useEffect(() => { if (globalLocale === 'ko') { setAppMessageState(KO) } else { setAppMessageState(JA) } }, [menuNumber, type, globalLocale]) return (