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.