Recursividad avanzada: combinación de distintos diseños en un gráfico anidado

La necesidad de combinar diseños surge cuando se cumple al menos una de las siguientes condiciones:
  • El algoritmo de diseño que se aplicará a los subgráficos no es el mismo que el algoritmo necesario para el gráfico superior.
  • Hay que aplicar diseños diferentes a subgráficos distintos.
  • Debe aplicarse el mismo algoritmo de diseño a gráficos distintos, pero con valores diferentes.
En estos casos de recursividad avanzada, donde se desea aplicar diferentes diseños a distintos subgráficos, debe especificar qué diseño debe utilizarse para cada subgráfico. Puede especificar el diseño de nodos o enlaces que se utilizará para cualquier Subgraph llamado a los métodos setNodeLayout o setLinkLayout del Subgraph.
Ejemplo de código de 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);
Si no se especifica ningún diseño para un determinado Subgraph, se copia el diseño de su padre. De este modo, no es necesario establecer el diseño en todos los subgráficos, sino sólo en los subgráficos que requieren un diseño diferente o parámetros diferentes.