diff --git a/editor/js/graph.js b/editor/js/graph.js index 665a9e59798d8c97b88e2bd25c68dabe49be7917..2703e77996afd9abf7d7d51697ae8e086c4b2147 100644 --- a/editor/js/graph.js +++ b/editor/js/graph.js @@ -203,19 +203,27 @@ export class Graph extends ManagedData { return false; } - changeDetails(selectionDetails) { + changeDetails(selectionDetails, storeChange = true) { if (selectionDetails.node === true) { - this.changeNodeDetails(selectionDetails[NODE_ID], selectionDetails); + this.changeNodeDetails(selectionDetails[NODE_ID], selectionDetails, storeChange); } else if (selectionDetails.link === true) { this.changeLinkDetails( selectionDetails[LINK_SOURCE][NODE_ID], selectionDetails[LINK_TARGET][NODE_ID], - selectionDetails + selectionDetails, + storeChange ); } } - changeNodeDetails(nodeId, newDetails) { + changeDetailsOfCollection(collection) { + collection.forEach((el) => { + this.changeDetails(el, false); + }); + this.storeCurrentData("Changed details of collection"); + } + + changeNodeDetails(nodeId, newDetails, storeChange = true) { var nodes = this.data[GRAPH_NODES]; for (var i = 0; i < nodes.length; i++) { // Is relevant node? @@ -226,13 +234,17 @@ export class Graph extends ManagedData { // Change details nodes[i] = Object.assign(nodes[i], newDetails); + // All done - this.storeCurrentData("Changed node details"); + if (storeChange) { + this.storeCurrentData("Changed node details"); + } + return; } } - changeLinkDetails(sourceId, targetId, newDetails) { + changeLinkDetails(sourceId, targetId, newDetails, storeChange = true) { var links = this.data[GRAPH_LINKS]; for (var i = 0; i < links.length; i++) { // Is relevant link? @@ -246,8 +258,12 @@ export class Graph extends ManagedData { // Change details links[i] = Object.assign(links[i], newDetails); + // All done - this.storeCurrentData("Changed link details"); + if (storeChange) { + this.storeCurrentData("Changed link details"); + } + return; } } diff --git a/editor/js/tools/collecttool.js b/editor/js/tools/collecttool.js index 2f8775eae34d75a3d5ed4905e4ffa19985e67085..808603320cf3b8423566fefb267ea3ae779d79f9 100644 --- a/editor/js/tools/collecttool.js +++ b/editor/js/tools/collecttool.js @@ -20,8 +20,16 @@ export default class CollectTool extends Tool { } onMenuChange(key, value) { - if (key === COLLECTION_KEY) { - graph.changeDetails(value); + if (key !== COLLECTION_KEY) { + return; + } + + if (value === undefined) { + // Clear items if menue says its empty + state.clearSelectedItems(); + this.menu.value(COLLECTION_KEY, []); + } else { + graph.changeDetailsOfCollection(value); } } @@ -89,13 +97,6 @@ export default class CollectTool extends Tool { this.menu.value(COLLECTION_KEY, state.selectedItems); } - onMenuChange(key, value) { - if (key === COLLECTION_KEY && value === undefined) { - state.clearSelectedItems(); - this.menu.value(COLLECTION_KEY, []); - } - } - setupBoxSelect() { window.addEventListener("load", () => { // Source: https://github.com/vasturiano/force-graph/issues/151#issuecomment-735850938