|
|
@@ -23,7 +23,7 @@ RED.view = (function() { |
|
|
|
scaleFactor = 1, |
|
|
|
node_width = 100, |
|
|
|
node_height = 30; |
|
|
|
|
|
|
|
|
|
|
|
var touchLongPressTimeout = 1000, |
|
|
|
startTouchDistance = 0, |
|
|
|
startTouchCenter = [], |
|
|
@@ -339,7 +339,7 @@ RED.view = (function() { |
|
|
|
lasso.remove(); |
|
|
|
lasso = null; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (!touchStartTime) { |
|
|
|
var point = d3.mouse(this); |
|
|
|
lasso = vis.append('rect') |
|
|
@@ -697,7 +697,7 @@ RED.view = (function() { |
|
|
|
var minX = 0; |
|
|
|
var minY = 0; |
|
|
|
var node; |
|
|
|
|
|
|
|
|
|
|
|
for (var i=0;i<moving_set.length;i++) { |
|
|
|
node = moving_set[i]; |
|
|
|
if (node.ox == null && node.oy == null) { |
|
|
@@ -911,9 +911,9 @@ RED.view = (function() { |
|
|
|
|
|
|
|
dblClickPrimed = (lastClickNode == mousedown_node); |
|
|
|
lastClickNode = mousedown_node; |
|
|
|
|
|
|
|
|
|
|
|
var i; |
|
|
|
|
|
|
|
|
|
|
|
if (d.selected && d3.event.ctrlKey) { |
|
|
|
d.selected = false; |
|
|
|
for (i=0;i<moving_set.length;i+=1) { |
|
|
@@ -986,7 +986,7 @@ RED.view = (function() { |
|
|
|
options.push({name:"edit",disabled:(moving_set.length != 1),onselect:function() { RED.editor.edit(mdn);}}); |
|
|
|
options.push({name:"select",onselect:function() {selectAll();}}); |
|
|
|
options.push({name:"undo",disabled:(RED.history.depth() === 0),onselect:function() {RED.history.pop();}}); |
|
|
|
|
|
|
|
|
|
|
|
RED.touch.radialMenu.show(obj,pos,options); |
|
|
|
resetMouseVars(); |
|
|
|
} |
|
|
@@ -1008,6 +1008,39 @@ RED.view = (function() { |
|
|
|
//var l = d._def.label; |
|
|
|
//l = (typeof l === "function" ? l.call(d) : l)||""; |
|
|
|
var l = d.name ? d.name : d.id; |
|
|
|
|
|
|
|
|
|
|
|
/**********************************************************************/ |
|
|
|
//Add requirements |
|
|
|
d.requirementError = false; |
|
|
|
d.requirements = new Array(); |
|
|
|
requirements.forEach(function(r) { |
|
|
|
if (r.type == d.type) d.requirements.push(r); |
|
|
|
}); |
|
|
|
|
|
|
|
//check for conflicts with other nodes: |
|
|
|
d.requirements.forEach(function(r) { |
|
|
|
RED.nodes.eachNode(function (n2) { |
|
|
|
if (n2 != d && n2.requirements != null ) { |
|
|
|
n2.requirements.forEach(function(r2) { |
|
|
|
if (r["resource"] == r2["resource"]) { |
|
|
|
if (r["shareable"] == false) { |
|
|
|
console.log("Conflict: shareable '"+r["resource"]+"' "+d.name+" and "+n2.name); |
|
|
|
d.requirementError = true; |
|
|
|
} |
|
|
|
else |
|
|
|
if (r["setting"] != r2["setting"]) { |
|
|
|
console.log("Conflict: "+ d.name + " setting['"+r["setting"]+"'] and "+n2.name+" setting['"+r2["setting"]+"']"); |
|
|
|
d.requirementError = true; |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
}); |
|
|
|
}); |
|
|
|
|
|
|
|
/**********************************************************************/ |
|
|
|
|
|
|
|
d.w = Math.max(node_width,calculateTextWidth(l)+(d._def.inputs>0?7:0) ); |
|
|
|
d.h = Math.max(node_height,(Math.max(d.outputs,d._def.inputs)||0) * 15); |
|
|
|
|
|
|
@@ -1071,7 +1104,7 @@ RED.view = (function() { |
|
|
|
touchStartTime = setTimeout(function() { |
|
|
|
showTouchMenu(obj,pos); |
|
|
|
},touchLongPressTimeout); |
|
|
|
nodeMouseDown.call(this,d) |
|
|
|
nodeMouseDown.call(this,d) |
|
|
|
}) |
|
|
|
.on("touchend", function(d) { |
|
|
|
clearTimeout(touchStartTime); |
|
|
@@ -1097,11 +1130,11 @@ RED.view = (function() { |
|
|
|
//node.append("rect").attr("class", "node-gradient-bottom").attr("rx", 6).attr("ry", 6).attr("height",30).attr("stroke","none").attr("fill","url(#gradient-bottom)").style("pointer-events","none"); |
|
|
|
|
|
|
|
if (d._def.icon) { |
|
|
|
|
|
|
|
|
|
|
|
var icon_group = node.append("g") |
|
|
|
.attr("class","node_icon_group") |
|
|
|
.attr("x",0).attr("y",0); |
|
|
|
|
|
|
|
|
|
|
|
var icon_shade = icon_group.append("rect") |
|
|
|
.attr("x",0).attr("y",0) |
|
|
|
.attr("class","node_icon_shade") |
|
|
@@ -1110,14 +1143,14 @@ RED.view = (function() { |
|
|
|
.attr("fill","#000") |
|
|
|
.attr("fill-opacity","0.05") |
|
|
|
.attr("height",function(d){return Math.min(50,d.h-4);}); |
|
|
|
|
|
|
|
|
|
|
|
var icon = icon_group.append("image") |
|
|
|
.attr("xlink:href","icons/"+d._def.icon) |
|
|
|
.attr("class","node_icon") |
|
|
|
.attr("x",0) |
|
|
|
.attr("width","30") |
|
|
|
.attr("height","30"); |
|
|
|
|
|
|
|
|
|
|
|
var icon_shade_border = icon_group.append("path") |
|
|
|
.attr("d",function(d) { return "M 30 1 l 0 "+(d.h-2)}) |
|
|
|
.attr("class","node_icon_shade_border") |
|
|
@@ -1132,7 +1165,7 @@ RED.view = (function() { |
|
|
|
//icon.attr('class','node_icon_shade node_icon_shade_'+d._def.align); |
|
|
|
//icon.attr('class','node_icon_shade_border node_icon_shade_border_'+d._def.align); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//if (d._def.inputs > 0 && d._def.align == null) { |
|
|
|
// icon_shade.attr("width",35); |
|
|
|
// icon.attr("transform","translate(5,0)"); |
|
|
@@ -1141,7 +1174,7 @@ RED.view = (function() { |
|
|
|
//if (d._def.outputs > 0 && "right" == d._def.align) { |
|
|
|
// icon_shade.attr("width",35); //icon.attr("x",5); |
|
|
|
//} |
|
|
|
|
|
|
|
|
|
|
|
var img = new Image(); |
|
|
|
img.src = "icons/"+d._def.icon; |
|
|
|
img.onload = function() { |
|
|
@@ -1154,7 +1187,7 @@ RED.view = (function() { |
|
|
|
// icon_shade_border.attr("d",function(d){return "M "+(d.w-30)+" 1 l 0 "+(d.h-2);}); |
|
|
|
//} |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
//icon.style("pointer-events","none"); |
|
|
|
icon_group.style("pointer-events","none"); |
|
|
|
} |
|
|
@@ -1251,7 +1284,7 @@ RED.view = (function() { |
|
|
|
//thisNode.selectAll(".node_icon_shade_right").attr("x",function(d){return d.w-30;}); |
|
|
|
//thisNode.selectAll(".node_icon_shade_border_right").attr("d",function(d){return "M "+(d.w-30)+" 1 l 0 "+(d.h-2)}); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var numOutputs = d.outputs; |
|
|
|
var y = (d.h/2)-((numOutputs-1)/2)*13; |
|
|
|
d.ports = d.ports || d3.range(numOutputs); |
|
|
@@ -1313,7 +1346,7 @@ RED.view = (function() { |
|
|
|
thisNode.selectAll(".node_icon_shade").attr("height",function(d){return d.h;}); |
|
|
|
thisNode.selectAll(".node_icon_shade_border").attr("d",function(d){ return "M "+(("right" == d._def.align) ?0:30)+" 1 l 0 "+(d.h-2)}); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
thisNode.selectAll('.node_right_button').attr("transform",function(d){ |
|
|
|
var x = d.w-6; |
|
|
|
if (d._def.button.toggle && !d[d._def.button.toggle]) { |
|
|
@@ -1384,7 +1417,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 }),function(d) { return d.source.id+":"+d.sourcePort+":"+d.target.id+":"+d.targetPort;}); |
|
|
|
|
|
|
|
var linkEnter = link.enter().insert("g",".node").attr("class","link"); |
|
|
|
|
|
|
|
|
|
|
|
linkEnter.each(function(d,i) { |
|
|
|
var l = d3.select(this); |
|
|
|
l.append("svg:path").attr("class","link_background link_path") |
|
|
@@ -1548,7 +1581,7 @@ RED.view = (function() { |
|
|
|
* - attached to mouse for placing - 'IMPORT_DRAGGING' |
|
|
|
*/ |
|
|
|
function importNodes(newNodesStr,touchImport) { |
|
|
|
|
|
|
|
|
|
|
|
var createNewIds = true; |
|
|
|
var useStorage = false; |
|
|
|
|
|
|
@@ -1592,7 +1625,7 @@ RED.view = (function() { |
|
|
|
var minY = 0; |
|
|
|
var i; |
|
|
|
var node; |
|
|
|
|
|
|
|
|
|
|
|
for (i=0;i<new_ms.length;i++) { |
|
|
|
node = new_ms[i]; |
|
|
|
node.n.selected = true; |