A necessidade de combinar layouts surge quando pelo menos uma
das seguintes condições é atendida:
- O algoritmo de layout a ser aplicado em subgráficos não é igual ao algoritmo necessário para o gráfico superior.
- Layouts diferentes precisam ser aplicados a subgráficos diferentes.
- O mesmo algoritmo de layout precisa ser aplicado a diferentes gráficos mas com diferentes configurações.
In these cases of advanced
recursion, where you want to apply different layouts
to different subgraphs, you must specify which layout must be used
for which subgraph. É possível especificar o layout de nó ou de link a
ser usado para qualquer
Subgraph chamando os métodos
setNodeLayout ou
setLinkLayout do
Subgraph.
Exemplo de Código Dojo
var diagram = dijit.byId("diagram"); // use a tree layout for the top-level graph: var treeLayout = new ibm_ilog.graphlayout.tree.TreeLayout(); diagram.attr("nodeLayout", treeLayout); // use a grid layout for the first subgraph: var gridLayout = new ibm_ilog.graphlayout.grid.GridLayout(); subgraph1.setNodelayout(gridLayout); // use another tree layout with different parameters for the second subgraph: var treeLayout2 = new ibm_ilog.graphlayout.tree.TreeLayout(); treeLayout2.setFlowDirection(ibm_ilog.graphlayout.Direction.BOTTOM); subgraph2.setNodelayout(treeLayout2 ); // perform layout recursively: diagram.performGraphLayout(true);
Se nenhum layout for especificado para um determinado
Subgraph, o layout de seu pai
será copiado.
Portanto, não é necessário configurar o layout em todos os subgráficos,
mas apenas em subgráficos que requerem um layout diferente ou parâmetros
diferentes.