From 3a1890ec506c8040bb480d72060c78752d6eb4b1 Mon Sep 17 00:00:00 2001 From: Maximilian Giller <m.giller@tu-bs.de> Date: Fri, 7 Jan 2022 15:57:27 +0100 Subject: [PATCH] Implemented deleting multiple nodes at once and disabling storing temporarily --- editor/js/graph.js | 21 ++++++++++++++++++++- editor/js/manageddata.js | 13 +++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/editor/js/graph.js b/editor/js/graph.js index 665a9e5..b8d432c 100644 --- a/editor/js/graph.js +++ b/editor/js/graph.js @@ -117,7 +117,7 @@ export class Graph extends ManagedData { var classIndex = this.nodeTypes.indexOf(typeClass); if (classIndex <= -1) { - return 'black'; + return "black"; } return COLOR_PALETTE[classIndex % COLOR_PALETTE.length]; @@ -139,6 +139,25 @@ export class Graph extends ManagedData { this.storeCurrentData("Deleted node with id [" + nodeId + "]"); } + deleteNodes(nodeIds) { + if (nodeIds === undefined || nodeIds.length <= 0) { + return; + } + + try { + this.disableStoring(); + + nodeIds.forEach((id) => { + this.deleteNode(id); + }); + } finally { + // Gotta make sure that storing is turned back on again + this.enableStoring(); + } + + this.storeCurrentData("Deleted nodes with ids [" + nodeIds.join(",") + "]"); + } + stopPhysics() { this.data[GRAPH_NODES].forEach((n) => { n.fx = n.x; diff --git a/editor/js/manageddata.js b/editor/js/manageddata.js index c35a2bb..d5c01d4 100644 --- a/editor/js/manageddata.js +++ b/editor/js/manageddata.js @@ -8,6 +8,7 @@ export default class ManagedData { this.history = []; // Newest state is always at 0 this.historyPosition = 0; this.savedHistoryId = 0; + this.storingEnabled = true; this.storeCurrentData("Initial state", false); } @@ -39,6 +40,14 @@ export default class ManagedData { this.updateUnsavedChangesHandler(); } + disableStoring() { + this.storingEnabled = false; + } + + enableStoring() { + this.storingEnabled = true; + } + onUndo() {} onRedo() {} @@ -83,6 +92,10 @@ export default class ManagedData { } storeCurrentData(description, relevantChanges = true) { + if (this.storingEnabled === false) { + return; + } + var formattedData = this.storableData(this.data); var nextId = 0; -- GitLab