如何使 mxCompactTreeLayout 从右到左?反转不工作
How to make mxCompactTreeLayout right to left? invert not working
更新#1:
这里有一些新的线索,看起来invert
只是交换了source
和target
的边,但没有改变树的方向。
交换root和v1的效果和set invert
to true
是一样的
const root = graph.insertVertex(parent, 'root', 'Root', 0, 0, 60, 40);
const v1 = graph.insertVertex(parent, 'child-2', 'Child 1', 0, 0, 60, 40);
graph.insertEdge(parent, null, null, root, v1);
const v2 = graph.insertVertex(parent, 'child-1', 'Child 2', 0, 0, 60, 40);
graph.insertEdge(parent, null, null, root, v2);
新演示:https://codepen.io/hungtcs/pen/eYpRGNg
有没有办法改变树的方向(从右到左)?
来源:
我想创建一个从右到左的紧凑树布局,最后我找到了 mxCompactTreeLayout
的 inverted
变量,但是它不起作用,我的 live demo
mxCompactTreeLayout.invert Specifies if edge directions should be inverted
这是inverted为false的情况
inverted为真时是这样的,布局被破坏
我认为开箱即用是不可能的,但如果您更改 mxCompactTreeLayout
的一些内部结构,它可能会起作用:
有这个attachParent函数:
mxCompactTreeLayout.prototype.attachParent = function(node, height)
{
var x = this.nodeDistance + this.levelDistance;
var y2 = (height - node.width) / 2 - this.nodeDistance;
var y1 = y2 + node.width + 2 * this.nodeDistance - height;
node.child.offsetX = x + node.height;
node.child.offsetY = y1;
node.contour.upperHead = this.createLine(node.height, 0,
this.createLine(x, y1, node.contour.upperHead));
node.contour.lowerHead = this.createLine(node.height, 0,
this.createLine(x, y2, node.contour.lowerHead));
};
不知道为什么 offsetX 取决于高度,但是如果您将那个赋值更改为 -(x + node.height)
,您的示例将如下所示:
只需添加:
layout.attachParent = function(node, height)
{
var x = this.nodeDistance + this.levelDistance;
var y2 = (height - node.width) / 2 - this.nodeDistance;
var y1 = y2 + node.width + 2 * this.nodeDistance - height;
node.child.offsetX = -(x + node.height);
node.child.offsetY = y1;
node.contour.upperHead = this.createLine(node.height, 0,
this.createLine(x, y1, node.contour.upperHead));
node.contour.lowerHead = this.createLine(node.height, 0,
this.createLine(x, y2, node.contour.lowerHead));
};
更新#1:
这里有一些新的线索,看起来invert
只是交换了source
和target
的边,但没有改变树的方向。
交换root和v1的效果和set invert
to true
const root = graph.insertVertex(parent, 'root', 'Root', 0, 0, 60, 40);
const v1 = graph.insertVertex(parent, 'child-2', 'Child 1', 0, 0, 60, 40);
graph.insertEdge(parent, null, null, root, v1);
const v2 = graph.insertVertex(parent, 'child-1', 'Child 2', 0, 0, 60, 40);
graph.insertEdge(parent, null, null, root, v2);
新演示:https://codepen.io/hungtcs/pen/eYpRGNg
有没有办法改变树的方向(从右到左)?
来源:
我想创建一个从右到左的紧凑树布局,最后我找到了 mxCompactTreeLayout
的 inverted
变量,但是它不起作用,我的 live demo
mxCompactTreeLayout.invert Specifies if edge directions should be inverted
这是inverted为false的情况
inverted为真时是这样的,布局被破坏
我认为开箱即用是不可能的,但如果您更改 mxCompactTreeLayout
的一些内部结构,它可能会起作用:
有这个attachParent函数:
mxCompactTreeLayout.prototype.attachParent = function(node, height)
{
var x = this.nodeDistance + this.levelDistance;
var y2 = (height - node.width) / 2 - this.nodeDistance;
var y1 = y2 + node.width + 2 * this.nodeDistance - height;
node.child.offsetX = x + node.height;
node.child.offsetY = y1;
node.contour.upperHead = this.createLine(node.height, 0,
this.createLine(x, y1, node.contour.upperHead));
node.contour.lowerHead = this.createLine(node.height, 0,
this.createLine(x, y2, node.contour.lowerHead));
};
不知道为什么 offsetX 取决于高度,但是如果您将那个赋值更改为 -(x + node.height)
,您的示例将如下所示:
只需添加:
layout.attachParent = function(node, height)
{
var x = this.nodeDistance + this.levelDistance;
var y2 = (height - node.width) / 2 - this.nodeDistance;
var y1 = y2 + node.width + 2 * this.nodeDistance - height;
node.child.offsetX = -(x + node.height);
node.child.offsetY = y1;
node.contour.upperHead = this.createLine(node.height, 0,
this.createLine(x, y1, node.contour.upperHead));
node.contour.lowerHead = this.createLine(node.height, 0,
this.createLine(x, y2, node.contour.lowerHead));
};