diff --git a/packages/node_modules/@node-red/editor-client/src/js/keymap.json b/packages/node_modules/@node-red/editor-client/src/js/keymap.json index 13cefe691..cd6d2e384 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/keymap.json +++ b/packages/node_modules/@node-red/editor-client/src/js/keymap.json @@ -47,7 +47,6 @@ "alt-s u": "core:select-upstream-nodes", "alt-s d": "core:select-downstream-nodes", "alt-s c": "core:select-connected-nodes", - "alt-s d": "core:select-downstream-nodes", "shift-?": "core:show-help", "w": "core:scroll-view-up", "d": "core:scroll-view-right", diff --git a/packages/node_modules/@node-red/editor-client/src/js/nodes.js b/packages/node_modules/@node-red/editor-client/src/js/nodes.js index d39fe48ff..cc55565f2 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/nodes.js +++ b/packages/node_modules/@node-red/editor-client/src/js/nodes.js @@ -35,7 +35,7 @@ RED.nodes = (function() { var initialLoad; var dirty = false; -RED.ll = function() { return nodeLinks} + function setDirty(d) { dirty = d; RED.events.emit("workspace:dirty",{dirty:dirty}); @@ -617,29 +617,38 @@ RED.ll = function() { return nodeLinks} return false; } - function getAllFlowNodes(node) { - var visited = {}; - visited[node.id] = true; - var nns = [node]; - var stack = [node]; - while(stack.length !== 0) { - var n = stack.shift(); - var childLinks = [].concat(nodeLinks[n.id].in).concat(nodeLinks[n.id].out); - for (var i=0;i 0) { + var n = nodes.shift(); + visited.add(n); + var links = []; + if (!direction || direction === 'up') { + links = links.concat(nodeLinks[n.id].in); + } + if (!direction || direction === 'down') { + links = links.concat(nodeLinks[n.id].out); + } + links.forEach(function(l) { + if (!visited.has(l.source)) { + nodes.push(l.source); + } + if (!visited.has(l.target)) { + nodes.push(l.target); + } + }) + } + return Array.from(visited); + } + function convertWorkspace(n) { var node = {}; @@ -2247,6 +2256,8 @@ RED.ll = function() { return nodeLinks} identifyImportConflicts: identifyImportConflicts, getAllFlowNodes: getAllFlowNodes, + getAllUpstreamNodes: getAllUpstreamNodes, + getAllDownstreamNodes: getAllDownstreamNodes, createExportableNodeSet: createExportableNodeSet, createCompleteNodeSet: createCompleteNodeSet, updateConfigNodeUsers: updateConfigNodeUsers, diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/view-tools.js b/packages/node_modules/@node-red/editor-client/src/js/ui/view-tools.js index e335d3907..2d5bbeb63 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/view-tools.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/view-tools.js @@ -16,14 +16,20 @@ RED.view.tools = (function() { - function selectAllConnected() { - console.log(args); + function selectConnected(type) { var selection = RED.view.selection(); var visited = new Set(); if (selection.nodes && selection.nodes.length > 0) { selection.nodes.forEach(function(n) { if (!visited.has(n)) { - var connected = RED.nodes.getAllFlowNodes(n); + var connected; + if (type === 'all') { + connected = RED.nodes.getAllFlowNodes(n); + } else if (type === 'up') { + connected = RED.nodes.getAllUpstreamNodes(n); + } else if (type === 'down') { + connected = RED.nodes.getAllDownstreamNodes(n); + } connected.forEach(function(nn) { visited.add(nn) }) } }); @@ -32,40 +38,6 @@ RED.view.tools = (function() { } - function selectDownstream() { - selectStream('source','target') - } - function selectUpstream() { - selectStream('target','source') - } - function selectStream(from,to) { - var selection = RED.view.selection(); - var visited = new Set(); - if (selection.nodes && selection.nodes.length > 0) { - var nodes = []; - selection.nodes.forEach(function(n) { - visited.add(n); - var filter = {}; - filter[from] = {id:n.id} - var initialLinks = RED.nodes.filterLinks(filter); - nodes = nodes.concat(initialLinks.map(function(n){return n[to]})); - }) - while(nodes.length > 0) { - var n = nodes.shift(); - visited.add(n); - var filter = {}; - filter[from] = {id:n.id} - var links = RED.nodes.filterLinks(filter); - links.forEach(function(l) { - if (!visited.has(l[to])) { - nodes.push(l[to]); - } - }) - } - RED.view.select({nodes:Array.from(visited)}); - } - } - function alignToGrid() { var selection = RED.view.selection(); if (selection.nodes) { @@ -256,9 +228,9 @@ RED.view.tools = (function() { RED.actions.add("core:step-selection-down", function() { moveSelection(0,RED.view.gridSize());}); RED.actions.add("core:step-selection-left", function() { moveSelection(-RED.view.gridSize(),0);}); - RED.actions.add("core:select-connected-nodes", selectAllConnected); - RED.actions.add("core:select-downstream-nodes", selectDownstream); - RED.actions.add("core:select-upstream-nodes", selectUpstream); + RED.actions.add("core:select-connected-nodes", function() { selectConnected("all") }); + RED.actions.add("core:select-downstream-nodes", function() { selectConnected("down") }); + RED.actions.add("core:select-upstream-nodes", function() { selectConnected("up") }); }, /** * Aligns all selected nodes to the current grid diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/view.js b/packages/node_modules/@node-red/editor-client/src/js/ui/view.js index e6bf6476c..e00972148 100755 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/view.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/view.js @@ -2992,6 +2992,7 @@ RED.view = (function() { enterActiveGroup(ag); activeGroup.selected = true; } + console.log(d3.event); var cnodes = RED.nodes.getAllFlowNodes(mousedown_node); for (var n=0;n 30 ? 25 : 8; + if (edgeDelta < targetEdgeDelta) { + if (clickPosition < 0) { + cnodes = RED.nodes.getAllUpstreamNodes(mousedown_node); + } else { + cnodes = RED.nodes.getAllDownstreamNodes(mousedown_node); + } + } else { + cnodes = RED.nodes.getAllFlowNodes(mousedown_node); + } for (var n=0;n