动态组合“预设”布局

时间:2017-04-18 11:20:59

标签: cytoscape.js

我正在尝试动态放置不同的代谢途径(遵循父节点中包含的预设布局的节点)。

通常我会为每个子节点定义位置,以便不与父节点重叠。但是,图形(=生成包含所请求节点的json)是动态生成的,因此这不是一个选项。

有没有办法实现这一点,缺少在生成json时重新计算每个节点的位置。

例如:请求糖酵解 - > TCA - >脲

Current situation

Acceptable solution

1 个答案:

答案 0 :(得分:0)

如果你想做一些手动的话,你可能不得不使用一些代码,而不只是指定一个布局。

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 ) );
} );