diff --git a/src/component/Canvas/pingpu.vue b/src/component/Canvas/pingpu.vue index df795f69..59d53846 100644 --- a/src/component/Canvas/pingpu.vue +++ b/src/component/Canvas/pingpu.vue @@ -24,6 +24,7 @@ O_BLENDMODE: "object.blendMode", }; const ACTIONS = { + ADD: "add", SELECT: "select", UPDATE: "update", DELETE: "delete", @@ -168,24 +169,25 @@ }; const setCanvasData = async () => { canvas.clear(); - const cwidth = canvas.width; - const cheight = canvas.height; - for (let i = 0; i < props.list.length; i++) { let item = props.list[i]; - let pattern = await setFill(item); - let rect = new fabric.Rect({ - id: item.id, - width: cwidth, - height: cheight, - fill: pattern, - - ...item.object, - }); - canvas.add(rect); + await addObject(item); } canvas.renderAll(); }; + const addObject = async (item) => { + const cwidth = canvas.width; + const cheight = canvas.height; + let pattern = await setFill(item); + let rect = new fabric.Rect({ + id: item.id, + width: cwidth, + height: cheight, + fill: pattern, + ...item.object, + }); + canvas.add(rect); + }; const setFill = async (item) => { if (!item) return null; const cwidth = canvas.width; @@ -280,6 +282,10 @@ canvas.add(object); } canvas.renderAll(); + } else if (item.action === ACTIONS.DELETE) { + canvas.remove(object); + } else if (item.action === ACTIONS.ADD) { + await addObject(item.data); } } canvas.renderAll(); diff --git a/src/component/Canvas/test.vue b/src/component/Canvas/test.vue index 7153f8d9..0f72a932 100644 --- a/src/component/Canvas/test.vue +++ b/src/component/Canvas/test.vue @@ -21,6 +21,7 @@ > → +