Thanks Michael,
This skip over the "if(data.$labelid & data.$labeltext)" confirms my
observations.
However if I look at the jit.js source code I see little difference in
the definition of arrow between ForceDirected and Hypertree.
Both appear to use the 'adj' field in a very similar way.
ForceDirect:
'arrow': {
'render': function(adj, canvas) {
var from = adj.nodeFrom.pos.getc(true),
to =
adj.nodeTo.pos.getc(true),
dim = adj.getData('dim'),
direction = adj.data.$direction,
inv = (direction && direction.length>1 && direction[0] !=
adj.nodeFrom.id);
this.edgeHelper.arrow.render(from, to, dim, inv, canvas);
},
'contains': function(adj, pos) {
var from = adj.nodeFrom.pos.getc(true),
to = adj.nodeTo.pos.getc(true);
return this.edgeHelper.arrow.contains(from, to, pos,
this.edge.epsilon);
}
}
HyperTree:
'arrow': {
'render': function(adj, canvas) {
var from = adj.nodeFrom.pos.getc(true),
to = adj.nodeTo.pos.getc(true),
r = adj.nodeFrom.scale,
dim = adj.getData('dim'),
direction = adj.data.$direction,
inv = (direction && direction.length>1 && direction[0] !=
adj.nodeFrom.id);
this.edgeHelper.arrow.render({x:from.x*r, y:from.y*r},
{x:to.x*r, y:to.y*r}, dim, inv, canvas);
},
'contains': function(adj, pos) {
var from = adj.nodeFrom.pos.getc(true),
to = adj.nodeTo.pos.getc(true),
r = adj.nodeFrom.scale;
this.edgeHelper.arrow.contains({x:from.x*r, y:from.y*r},
{x:to.x*r, y:to.y*r}, pos, this.edge.epsilon);
}
},
So it must be even deeper under the hood than I thought. Unless my
JSON definition is somewhat wrong.
Thanks again very much for taking of your precious time to look into
my problem.
I hope Nico, or someone else, can give some hint on where to look.
Cheers !
JB