Recursão Avançada: Combinando Layouts Diferentes em um Gráfico Aninhado

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.