mirror of
				https://github.com/node-red/node-red.git
				synced 2025-03-01 10:36:34 +00:00 
			
		
		
		
	Minimise filtering of nodes on redraw
This commit is contained in:
		| @@ -192,7 +192,7 @@ RED.history = (function() { | ||||
|                     } | ||||
|                 } | ||||
|                 RED.view.dirty(ev.dirty); | ||||
|                 RED.view.redraw(); | ||||
|                 RED.view.redraw(true); | ||||
|                 RED.palette.refresh(); | ||||
|             } | ||||
|         } | ||||
|   | ||||
| @@ -169,7 +169,7 @@ var RED = (function() { | ||||
|             success: function(nodes) { | ||||
|                 RED.nodes.import(nodes); | ||||
|                 RED.view.dirty(false); | ||||
|                 RED.view.redraw(); | ||||
|                 RED.view.redraw(true); | ||||
|                 RED.comms.subscribe("status/#",function(topic,msg) { | ||||
|                     var parts = topic.split("/"); | ||||
|                     var node = RED.nodes.node(parts[1]); | ||||
| @@ -359,21 +359,6 @@ var RED = (function() { | ||||
|         RED.subflow.init(); | ||||
|         RED.view.init(); | ||||
|          | ||||
|         RED.view.on("selection-changed",function(selection) { | ||||
|             if (!selection.nodes) { | ||||
|                 RED.menu.setDisabled("btn-export-menu",true); | ||||
|                 RED.menu.setDisabled("btn-export-clipboard",true); | ||||
|                 RED.menu.setDisabled("btn-export-library",true); | ||||
|                 RED.menu.setDisabled("btn-convert-subflow",true); | ||||
|             } else { | ||||
|                 RED.menu.setDisabled("btn-export-menu",false); | ||||
|                 RED.menu.setDisabled("btn-export-clipboard",false); | ||||
|                 RED.menu.setDisabled("btn-export-library",false); | ||||
|                 RED.menu.setDisabled("btn-convert-subflow",false); | ||||
|             } | ||||
|         }); | ||||
|          | ||||
|          | ||||
|         RED.keyboard.add(/* ? */ 191,{shift:true},function(){showHelp();d3.event.preventDefault();}); | ||||
|         RED.comms.connect(); | ||||
|         loadNodeList(); | ||||
|   | ||||
| @@ -382,6 +382,18 @@ RED.library = (function() { | ||||
|      | ||||
|     return { | ||||
|         init: function() { | ||||
|             RED.view.on("selection-changed",function(selection) { | ||||
|                 if (!selection.nodes) { | ||||
|                     RED.menu.setDisabled("btn-export-menu",true); | ||||
|                     RED.menu.setDisabled("btn-export-clipboard",true); | ||||
|                     RED.menu.setDisabled("btn-export-library",true); | ||||
|                 } else { | ||||
|                     RED.menu.setDisabled("btn-export-menu",false); | ||||
|                     RED.menu.setDisabled("btn-export-clipboard",false); | ||||
|                     RED.menu.setDisabled("btn-export-library",false); | ||||
|                 } | ||||
|             }); | ||||
|              | ||||
|             loadFlowLibrary(); | ||||
|         }, | ||||
|         create: createUI, | ||||
|   | ||||
| @@ -174,6 +174,15 @@ RED.subflow = (function() { | ||||
|             RED.view.dirty(true); | ||||
|             RED.view.redraw(); | ||||
|         }); | ||||
|          | ||||
|         RED.view.on("selection-changed",function(selection) { | ||||
|             if (!selection.nodes) { | ||||
|                 RED.menu.setDisabled("btn-convert-subflow",true); | ||||
|             } else { | ||||
|                 RED.menu.setDisabled("btn-convert-subflow",false); | ||||
|             } | ||||
|         }); | ||||
|          | ||||
|     } | ||||
|          | ||||
|     function createSubflow() { | ||||
| @@ -379,7 +388,7 @@ RED.subflow = (function() { | ||||
|         }); | ||||
|          | ||||
|         RED.view.dirty(true); | ||||
|         RED.view.redraw(); | ||||
|         RED.view.redraw(true); | ||||
|     } | ||||
|      | ||||
|      | ||||
|   | ||||
| @@ -32,6 +32,8 @@ RED.view = (function() { | ||||
|  | ||||
|     var activeWorkspace = 0; | ||||
|     var activeSubflow = null; | ||||
|     var activeNodes = []; | ||||
|     var activeLinks = []; | ||||
|      | ||||
|     var workspaceScrollPositions = {}; | ||||
|  | ||||
| @@ -231,6 +233,15 @@ RED.view = (function() { | ||||
|  | ||||
|     var drag_line = vis.append("svg:path").attr("class", "drag_line"); | ||||
|  | ||||
|     function updateActiveNodes() { | ||||
|         activeNodes = RED.nodes.nodes.filter(function(d) { | ||||
|             return d.z == activeWorkspace; | ||||
|         }); | ||||
|         activeLinks = RED.nodes.links.filter(function(d) { | ||||
|             return d.source.z == activeWorkspace && d.target.z == activeWorkspace; | ||||
|         }) | ||||
|     } | ||||
|      | ||||
|     var workspace_tabs = RED.tabs.create({ | ||||
|         id: "workspace-tabs", | ||||
|         onchange: function(tab) { | ||||
| @@ -273,9 +284,10 @@ RED.view = (function() { | ||||
|  | ||||
|             clearSelection(); | ||||
|             RED.nodes.eachNode(function(n) { | ||||
|                     n.dirty = true; | ||||
|                 n.dirty = true; | ||||
|             }); | ||||
|             updateSelection(); | ||||
|             updateActiveNodes(); | ||||
|             redraw(); | ||||
|         }, | ||||
|         ondblclick: function(tab) { | ||||
| @@ -294,10 +306,12 @@ RED.view = (function() { | ||||
|                 } | ||||
|             }); | ||||
|             RED.menu.setDisabled("btn-workspace-delete",workspace_tabs.count() == 1); | ||||
|             updateActiveNodes(); | ||||
|         }, | ||||
|         onremove: function(tab) { | ||||
|             RED.menu.setDisabled("btn-workspace-delete",workspace_tabs.count() == 1); | ||||
|             RED.menu.removeItem("btn-workspace-menu-"+tab.id.replace(".","-")); | ||||
|             updateActiveNodes(); | ||||
|         } | ||||
|     }); | ||||
|  | ||||
| @@ -327,6 +341,7 @@ RED.view = (function() { | ||||
|         RED.menu.setAction('btn-workspace-delete',function() { | ||||
|             deleteWorkspace(activeWorkspace); | ||||
|         }); | ||||
|         updateActiveNodes(); | ||||
|     } | ||||
|  | ||||
|     function deleteWorkspace(id) { | ||||
| @@ -563,6 +578,7 @@ RED.view = (function() { | ||||
|         } | ||||
|         if (mouse_mode == RED.state.IMPORT_DRAGGING) { | ||||
|             RED.keyboard.remove(/* ESCAPE */ 27); | ||||
|             updateActiveNodes(); | ||||
|             setDirty(true); | ||||
|         } | ||||
|         redraw(); | ||||
| @@ -644,6 +660,7 @@ RED.view = (function() { | ||||
|                 clearSelection(); | ||||
|                 nn.selected = true; | ||||
|                 moving_set.push({n:nn}); | ||||
|                 updateActiveNodes(); | ||||
|                 updateSelection(); | ||||
|                 redraw(); | ||||
|  | ||||
| @@ -886,6 +903,7 @@ RED.view = (function() { | ||||
|         RED.history.push({t:'delete',nodes:removedNodes,links:removedLinks,subflowOutputs:removedSubflowOutputs,subflowInputs:removedSubflowInputs,dirty:startDirty}); | ||||
|  | ||||
|         selected_link = null; | ||||
|         updateActiveNodes(); | ||||
|         updateSelection(); | ||||
|         redraw(); | ||||
|     } | ||||
| @@ -980,6 +998,7 @@ RED.view = (function() { | ||||
|                 var link = {source: src, sourcePort:src_port, target: dst}; | ||||
|                 RED.nodes.addLink(link); | ||||
|                 RED.history.push({t:'add',links:[link],dirty:dirty}); | ||||
|                 updateActiveNodes(); | ||||
|                 setDirty(true); | ||||
|             } else { | ||||
|             } | ||||
| @@ -1220,7 +1239,8 @@ RED.view = (function() { | ||||
|                 vis.selectAll(".subflowinput").remove(); | ||||
|             } | ||||
|              | ||||
|             var node = vis.selectAll(".nodegroup").data(RED.nodes.nodes.filter(function(d) { return d.z == activeWorkspace }),function(d){return d.id}); | ||||
|             //var node = vis.selectAll(".nodegroup").data(RED.nodes.nodes.filter(function(d) { return d.z == activeWorkspace }),function(d){return d.id}); | ||||
|             var node = vis.selectAll(".nodegroup").data(activeNodes,function(d){return d.id}); | ||||
|             node.exit().remove(); | ||||
|  | ||||
|             var nodeEnter = node.enter().insert("svg:g").attr("class", "node nodegroup"); | ||||
| @@ -1579,9 +1599,7 @@ RED.view = (function() { | ||||
|         } | ||||
|  | ||||
|         var link = vis.selectAll(".link").data( | ||||
|             RED.nodes.links.filter(function(d) { | ||||
|                 return d.source.z == activeWorkspace && d.target.z == activeWorkspace; | ||||
|             }), | ||||
|             activeLinks, | ||||
|             function(d) { | ||||
|                 return d.source.id+":"+d.sourcePort+":"+d.target.id+":"+d.target.i; | ||||
|             } | ||||
| @@ -1756,7 +1774,7 @@ RED.view = (function() { | ||||
|                     dirty:RED.view.dirty() | ||||
|                 }); | ||||
|  | ||||
|  | ||||
|                 updateActiveNodes(); | ||||
|                 redraw(); | ||||
|             } | ||||
|         } catch(error) { | ||||
| @@ -1972,7 +1990,10 @@ RED.view = (function() { | ||||
|         showWorkspace: function(id) { | ||||
|             workspace_tabs.activateTab(id); | ||||
|         }, | ||||
|         redraw: function() { | ||||
|         redraw: function(updateActive) { | ||||
|             if (updateActive) { | ||||
|                 updateActiveNodes(); | ||||
|             } | ||||
|             RED.nodes.eachSubflow(function(sf) { | ||||
|                 if (workspace_tabs.contains(sf.id)) { | ||||
|                     workspace_tabs.renameTab(sf.id,"Subflow: "+sf.name); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user