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 { swalFire } = useSwal()
const { getCanvasByObjectNo, delCanvasById, checkModifiedCanvasPlan, saveCanvas } = usePlan()
const { getCanvasByObjectNo, delCanvasById, checkModifiedCanvasPlan, saveCanvas, currentCanvasData } = usePlan()
const handleCurrentPlan = (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}` }])
handleCurrentPlan(planNum)
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(() => {
if (!currentCanvasPlan) {
getCanvasByObjectNo(sessionState.userId, objectNo).then((res) => {
@ -100,7 +113,7 @@ export default function CanvasLayout() {
handleCurrentPlan(res.at(-1).id) // last
setPlanNum(res.length)
} else {
addNewPlan()
addEmptyPlan()
}
})
}
@ -132,9 +145,27 @@ export default function CanvasLayout() {
</button>
))}
</div>
<button className="plane-add" onClick={addNewPlan}>
<span></span>
</button>
{plans.length < 10 && (
<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>
<CanvasFrame plan={plans.find((plan) => plan.isCurrent === true)} />
</div>

View File

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