动态组合 'preset' 布局
Dynamically combining 'preset' layouts
我正在尝试动态放置不同的代谢途径(遵循父节点中包含的预设布局的节点)。
通常我会为每个子节点定义位置,以免与父节点重叠。然而,图表(=生成的 json 包含请求的节点)是动态生成的,因此这不是一个选项。
有没有办法实现这一点,而不是在生成 json 时重新计算每个节点的位置。
例如:请求糖酵解 -> TCA -> 尿素
Current situation
Acceptable solution
如果您想手动执行此类操作,您可能需要使用一些代码,而不仅仅是指定布局。
let shiftPosition = (pos, delta) => ({ x: pos.x + delta.x, y: pos.y + delta.y });
let shiftNode = (node, delta) => shiftPosition( node.position(), delta );
let findDelta = parent => ({ x: 100, y: 100 }); // determine yourself
cy.nodes(':parent').forEach( parent => {
let delta = findDelta( parent );
parent.children().positions( node => shiftNode( node, delta ) );
} );
我正在尝试动态放置不同的代谢途径(遵循父节点中包含的预设布局的节点)。
通常我会为每个子节点定义位置,以免与父节点重叠。然而,图表(=生成的 json 包含请求的节点)是动态生成的,因此这不是一个选项。
有没有办法实现这一点,而不是在生成 json 时重新计算每个节点的位置。
例如:请求糖酵解 -> TCA -> 尿素
Current situation
Acceptable solution
如果您想手动执行此类操作,您可能需要使用一些代码,而不仅仅是指定布局。
let shiftPosition = (pos, delta) => ({ x: pos.x + delta.x, y: pos.y + delta.y });
let shiftNode = (node, delta) => shiftPosition( node.position(), delta );
let findDelta = parent => ({ x: 100, y: 100 }); // determine yourself
cy.nodes(':parent').forEach( parent => {
let delta = findDelta( parent );
parent.children().positions( node => shiftNode( node, delta ) );
} );