mirror of
https://github.com/node-red/node-red.git
synced 2023-10-10 13:36:53 +02:00
Add workspace/z property to nodes
This commit is contained in:
parent
fa8dcdc87f
commit
31a3d1e91b
@ -120,6 +120,7 @@ RED.nodes = function() {
|
|||||||
if (n._def.category != "config") {
|
if (n._def.category != "config") {
|
||||||
node.x = n.x;
|
node.x = n.x;
|
||||||
node.y = n.y;
|
node.y = n.y;
|
||||||
|
node.z = n.z;
|
||||||
|
|
||||||
node.wires = [];
|
node.wires = [];
|
||||||
for(var i=0;i<n.outputs;i++) {
|
for(var i=0;i<n.outputs;i++) {
|
||||||
@ -218,7 +219,10 @@ RED.nodes = function() {
|
|||||||
RED.nodes.add(configNode);
|
RED.nodes.add(configNode);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
var node = {x:n.x,y:n.y,type:0,wires:n.wires};
|
if (n.z == null) {
|
||||||
|
n.z = 0;
|
||||||
|
}
|
||||||
|
var node = {x:n.x,y:n.y,z:n.z,type:0,wires:n.wires};
|
||||||
if (createNewIds) {
|
if (createNewIds) {
|
||||||
node.id = (1+Math.random()*4294967295).toString(16);
|
node.id = (1+Math.random()*4294967295).toString(16);
|
||||||
} else {
|
} else {
|
||||||
|
@ -13,6 +13,8 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
**/
|
**/
|
||||||
|
|
||||||
|
|
||||||
RED.view = function() {
|
RED.view = function() {
|
||||||
var space_width = 5000,
|
var space_width = 5000,
|
||||||
space_height = 5000,
|
space_height = 5000,
|
||||||
@ -21,6 +23,8 @@ RED.view = function() {
|
|||||||
node_width = 100,
|
node_width = 100,
|
||||||
node_height = 30;
|
node_height = 30;
|
||||||
|
|
||||||
|
var activeWorkspace = 0;
|
||||||
|
|
||||||
var selected_link = null,
|
var selected_link = null,
|
||||||
mousedown_link = null,
|
mousedown_link = null,
|
||||||
mousedown_node = null,
|
mousedown_node = null,
|
||||||
@ -281,7 +285,7 @@ RED.view = function() {
|
|||||||
mousePos[1] /= scaleFactor;
|
mousePos[1] /= scaleFactor;
|
||||||
mousePos[0] /= scaleFactor;
|
mousePos[0] /= scaleFactor;
|
||||||
|
|
||||||
var nn = { id:(1+Math.random()*4294967295).toString(16),x: mousePos[0],y:mousePos[1],w:node_width};
|
var nn = { id:(1+Math.random()*4294967295).toString(16),x: mousePos[0],y:mousePos[1],w:node_width,z:activeWorkspace};
|
||||||
|
|
||||||
nn.type = selected_tool;
|
nn.type = selected_tool;
|
||||||
nn._def = RED.nodes.getType(nn.type);
|
nn._def = RED.nodes.getType(nn.type);
|
||||||
@ -323,11 +327,13 @@ RED.view = function() {
|
|||||||
|
|
||||||
function selectAll() {
|
function selectAll() {
|
||||||
RED.nodes.eachNode(function(n) {
|
RED.nodes.eachNode(function(n) {
|
||||||
|
if (n.z == activeWorkspace) {
|
||||||
if (!n.selected) {
|
if (!n.selected) {
|
||||||
n.selected = true;
|
n.selected = true;
|
||||||
n.dirty = true;
|
n.dirty = true;
|
||||||
moving_set.push({n:n});
|
moving_set.push({n:n});
|
||||||
}
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
selected_link = null;
|
selected_link = null;
|
||||||
updateSelection();
|
updateSelection();
|
||||||
@ -572,7 +578,7 @@ RED.view = function() {
|
|||||||
if (mouse_mode != RED.state.JOINING) {
|
if (mouse_mode != RED.state.JOINING) {
|
||||||
// Don't bother redrawing nodes if we're drawing links
|
// Don't bother redrawing nodes if we're drawing links
|
||||||
|
|
||||||
var node = vis.selectAll(".nodegroup").data(RED.nodes.nodes,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});
|
||||||
node.exit().remove();
|
node.exit().remove();
|
||||||
|
|
||||||
var nodeEnter = node.enter().insert("svg:g").attr("class", "node nodegroup");
|
var nodeEnter = node.enter().insert("svg:g").attr("class", "node nodegroup");
|
||||||
@ -777,7 +783,7 @@ RED.view = function() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
var link = vis.selectAll(".link").data(RED.nodes.links);
|
var link = vis.selectAll(".link").data(RED.nodes.links.filter(function(d) { return d.source.z == activeWorkspace && d.target.z == activeWorkspace }));
|
||||||
|
|
||||||
link.enter().insert("svg:path",".node").attr("class","link")
|
link.enter().insert("svg:path",".node").attr("class","link")
|
||||||
.on("mousedown",function(d) {
|
.on("mousedown",function(d) {
|
||||||
@ -871,7 +877,7 @@ RED.view = function() {
|
|||||||
if (result) {
|
if (result) {
|
||||||
var new_nodes = result[0];
|
var new_nodes = result[0];
|
||||||
var new_links = result[1];
|
var new_links = result[1];
|
||||||
var new_ms = new_nodes.map(function(n) { return {n:n};});
|
var new_ms = new_nodes.map(function(n) { n.z = activeWorkspace; return {n:n};});
|
||||||
var new_node_ids = new_nodes.map(function(n){ return n.id; });
|
var new_node_ids = new_nodes.map(function(n){ return n.id; });
|
||||||
|
|
||||||
// TODO: pick a more sensible root node
|
// TODO: pick a more sensible root node
|
||||||
@ -956,6 +962,14 @@ RED.view = function() {
|
|||||||
mouse_mode = state;
|
mouse_mode = state;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
setWorkspace: function(z) {
|
||||||
|
activeWorkspace = z;
|
||||||
|
clearSelection();
|
||||||
|
RED.nodes.eachNode(function(n) {
|
||||||
|
n.dirty = true;
|
||||||
|
});
|
||||||
|
redraw();
|
||||||
|
},
|
||||||
redraw:redraw,
|
redraw:redraw,
|
||||||
dirty: function(d) {
|
dirty: function(d) {
|
||||||
if (d == null) {
|
if (d == null) {
|
||||||
|
Loading…
Reference in New Issue
Block a user