From 6c75a2feb03643d2cdc27dabbba21b822fdc26ed Mon Sep 17 00:00:00 2001 From: Daseul Kim Date: Tue, 26 Nov 2024 16:30:49 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20plan=EC=9D=98=20=ED=91=9C=EC=B6=9C?= =?UTF-8?q?=20name=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/floor-plan/CanvasLayout.jsx | 12 ++++++---- src/hooks/usePlan.js | 27 ++++++++++++---------- 2 files changed, 23 insertions(+), 16 deletions(-) diff --git a/src/components/floor-plan/CanvasLayout.jsx b/src/components/floor-plan/CanvasLayout.jsx index 1e69ec40..fcaabb6f 100644 --- a/src/components/floor-plan/CanvasLayout.jsx +++ b/src/components/floor-plan/CanvasLayout.jsx @@ -1,6 +1,6 @@ 'use client' -import { useContext, useEffect, useState } from 'react' +import { useContext, useEffect } from 'react' import { useRecoilValue } from 'recoil' import { FloorPlanContext } from '@/app/floor-plan/FloorPlanProvider' import { useMessage } from '@/hooks/useMessage' @@ -20,7 +20,7 @@ export default function CanvasLayout({ children }) { const { getMessage } = useMessage() const { swalFire } = useSwal() - const { plans, modifiedPlans, loadCanvasPlanData, handleCurrentPlan, handleAddPlan, handleDeletePlan } = usePlan() + const { plans, initCanvasPlans, modifiedPlans, loadCanvasPlanData, handleCurrentPlan, handleAddPlan, handleDeletePlan } = usePlan() useEffect(() => { loadCanvasPlanData(session.userId, objectNo, pid) @@ -37,14 +37,18 @@ export default function CanvasLayout({ children }) { onClick={() => handleCurrentPlan(session.userId, plan.id)} > - {plan.name} + {!initCanvasPlans.some((initCanvasPlans) => initCanvasPlans.id === plan.id) && 'New '} + {`Plan ${plan.ordering}`} {modifiedPlans.some((modifiedPlan) => modifiedPlan === plan.id) && ' [ M ]'} swalFire({ - text: `${plan.name} ` + getMessage('plan.message.confirm.delete'), + text: + (!initCanvasPlans.some((initCanvasPlans) => initCanvasPlans.id === plan.id) ? 'New ' : '') + + `Plan ${plan.ordering} ` + + getMessage('plan.message.confirm.delete'), type: 'confirm', confirmFn: () => { handleDeletePlan(e, plan.id) diff --git a/src/hooks/usePlan.js b/src/hooks/usePlan.js index 946cc628..3bf86021 100644 --- a/src/hooks/usePlan.js +++ b/src/hooks/usePlan.js @@ -23,9 +23,6 @@ export function usePlan() { const { getMessage } = useMessage() const { get, promisePost, promisePut, promiseDel } = useAxios() - const planLabel = 'Plan ' - const newPlanLabel = 'New Plan ' - /** * 마우스 포인터의 가이드라인을 제거합니다. */ @@ -145,7 +142,9 @@ export function usePlan() { */ const checkUnsavedCanvasPlan = async (userId) => { swalFire({ - text: `저장 안된 ${currentCanvasPlan.name} PLAN을 저장하시겠습니까? `, + text: + (!initCanvasPlans.some((initCanvasPlans) => initCanvasPlans.id === plan.id) ? 'New ' : '') + + `Plan ${plan.ordering}의 변경 사항을 저장하시겠습니까?`, type: 'confirm', confirmFn: async () => { initCanvasPlans.some((plan) => plan.id === currentCanvasPlan.id) @@ -185,20 +184,20 @@ export function usePlan() { */ const getCanvasByObjectNo = async (userId, objectNo) => { return get({ url: `/api/canvas-management/canvas-statuses/by-object/${objectNo}/${userId}` }).then((res) => - res.map((item) => ({ + res.map((item, index) => ({ id: item.id, - name: planLabel + item.id, userId: item.userId, canvasStatus: dbToCanvasFormat(item.canvasStatus), isCurrent: false, bgImageName: item.bgImageName, mapPositionAddress: item.mapPositionAddress, + ordering: index + 1, })), ) } /** - * canvas 데이터를 추가 + * 신규 canvas 데이터를 저장 */ const postCanvasStatus = async (userId, canvasStatus) => { const planData = { @@ -216,7 +215,6 @@ export function usePlan() { ? { ...plan, id: res.data, - name: planLabel + res.data, canvasStatus: canvasStatus, } : plan, @@ -306,7 +304,10 @@ export function usePlan() { const handleAddPlan = (userId, objectNo) => { JSON.parse(currentCanvasData()).objects.length > 0 ? swalFire({ - text: `${currentCanvasPlan.name} ` + getMessage('plan.message.confirm.copy'), + text: + (!initCanvasPlans.some((initCanvasPlans) => initCanvasPlans.id === plan.id) ? 'New ' : '') + + `Plan ${currentCanvasPlan.ordering} ` + + getMessage('plan.message.confirm.copy'), type: 'confirm', confirmFn: () => { addPlan(userId, objectNo, currentCanvasData()) @@ -321,10 +322,10 @@ export function usePlan() { const id = uuidv4() const newPlan = { id: id, - name: newPlanLabel + `${planNum + 1}`, objectNo: objectNo, userId: userId, canvasStatus: canvasStatus, + ordering: planNum + 1, } setPlans([...plans, newPlan]) handleCurrentPlan(userId, id) @@ -373,9 +374,10 @@ export function usePlan() { if (res.length > 0) { setInitCanvasPlans(res) setPlans(res) - updateCurrentPlan(Number(pid)) // last 데이터에 포커싱 + updateCurrentPlan(Number(pid)) + setPlanNum(res.length) } else { - addPlan(userId, objectNo) + addPlan(userId, objectNo, '') } }) } @@ -383,6 +385,7 @@ export function usePlan() { return { canvas, plans, + initCanvasPlans, selectedPlan, currentCanvasPlan, modifiedPlans,