This commit is contained in:
hyojun.choi 2024-10-16 12:53:08 +09:00
commit 40c81d1044
2 changed files with 43 additions and 6 deletions

View File

@ -21,7 +21,7 @@ export default function CanvasLayout() {
const { getMessage } = useMessage() const { getMessage } = useMessage()
const { swalFire } = useSwal() const { swalFire } = useSwal()
const { getCanvasByObjectNo, delCanvasById, checkModifiedCanvasPlan, saveCanvas } = usePlan() const { getCanvasByObjectNo, delCanvasById, checkModifiedCanvasPlan, saveCanvas, currentCanvasData } = usePlan()
const handleCurrentPlan = (newCurrentId) => { const handleCurrentPlan = (newCurrentId) => {
// console.log('currentPlan newCurrentId: ', newCurrentId) // console.log('currentPlan newCurrentId: ', newCurrentId)
@ -84,12 +84,25 @@ export default function CanvasLayout() {
} }
} }
const addNewPlan = () => { const addEmptyPlan = () => {
setPlans([...plans, { id: planNum, name: `Plan ${planNum + 1}`, objectNo: `${objectNo}` }]) setPlans([...plans, { id: planNum, name: `Plan ${planNum + 1}`, objectNo: `${objectNo}` }])
handleCurrentPlan(planNum) handleCurrentPlan(planNum)
setPlanNum(planNum + 1) setPlanNum(planNum + 1)
} }
const addCopyPlan = () => {
const copyPlan = {
id: planNum,
name: `Plan ${planNum + 1}`,
objectNo: `${objectNo}`,
userId: sessionState.userId,
canvasStatus: currentCanvasData(),
}
setPlans((plans) => [...plans, copyPlan])
handleCurrentPlan(planNum)
setPlanNum(planNum + 1)
}
useEffect(() => { useEffect(() => {
if (!currentCanvasPlan) { if (!currentCanvasPlan) {
getCanvasByObjectNo(sessionState.userId, objectNo).then((res) => { getCanvasByObjectNo(sessionState.userId, objectNo).then((res) => {
@ -100,7 +113,7 @@ export default function CanvasLayout() {
handleCurrentPlan(res.at(-1).id) // last handleCurrentPlan(res.at(-1).id) // last
setPlanNum(res.length) setPlanNum(res.length)
} else { } else {
addNewPlan() addEmptyPlan()
} }
}) })
} }
@ -132,9 +145,27 @@ export default function CanvasLayout() {
</button> </button>
))} ))}
</div> </div>
<button className="plane-add" onClick={addNewPlan}> {plans.length < 10 && (
<span></span> <button
</button> className="plane-add"
onClick={() =>
JSON.parse(currentCanvasData()).objects.length > 0
? swalFire({
html: `${currentCanvasPlan.name} 을 복제하시겠습니까?`,
type: 'confirm',
confirmFn: () => {
addCopyPlan()
},
denyFn: () => {
addEmptyPlan()
},
})
: addEmptyPlan()
}
>
<span></span>
</button>
)}
</div> </div>
<CanvasFrame plan={plans.find((plan) => plan.isCurrent === true)} /> <CanvasFrame plan={plans.find((plan) => plan.isCurrent === true)} />
</div> </div>

View File

@ -72,6 +72,11 @@ export function usePlan() {
// }, 1000) // }, 1000)
} }
const currentCanvasData = () => {
removeMouseLines()
return addCanvas()
}
/** /**
* 실시간 캔버스 상태와 DB에 저장된 캔버스 상태를 비교하여 수정 여부를 판단 * 실시간 캔버스 상태와 DB에 저장된 캔버스 상태를 비교하여 수정 여부를 판단
*/ */
@ -231,6 +236,7 @@ export function usePlan() {
return { return {
canvas, canvas,
removeMouseLines, removeMouseLines,
currentCanvasData,
saveCanvas, saveCanvas,
addCanvas, addCanvas,
checkModifiedCanvasPlan, checkModifiedCanvasPlan,