Recursão Simples: Aplicando o Mesmo Layout a Todos os Subgráficos

É possível aplicar o mesmo layout onde existam as duas condições a seguir:
  • O mesmo algoritmo de layout precisa ser aplicado ao gráfico superior e a todos os seus subgráficos.
  • As configurações do algoritmo de layout (ou seja, os parâmetros de layout) precisam ser iguais para o gráfico superior e para todos os subgráficos.
A figura a seguir mostra um exemplo de onde um Layout de Árvore é aplicado ao gráfico superior, bem como a todos os seus subgráficos. Além disso, as configurações do algoritmo de Layout de Árvore são iguais para todos os gráficos: o aplicativo não precisa, por exemplo, de uma direção do fluxo no gráfico superior e de uma diferente nos subgráficos.
Exemplo
de um layout recursivo de um gráfico aninhado que mostra à esquerda, a
Parte 1 contendo a Rede 1 com dois subgráficos, as Redes 1.1 e 1.2 e à
direita, a Parte 2 contendo a Rede 2 com dois subgráficos, as Redes 2.1 e
2.2. Leia a Parte 1 antes da Parte 2. A Rede 1 contém um nó no primeiro
nível, três nós no segundo nível e dois nós no terceiro nível. Os
nós no segundo e terceiro níveis são organizados horizontalmente. O nó 1
vincula-se a todos os nós no segundo nível. O nó do meio no segundo nível
vincula-se aos dois nós no terceiro nível.
A Rede 2 possui o mesmo layout que a Rede 1. A Rede 1.1 contém um nó no
primeiro nível, dois nós no segundo nível e três nós no terceiro nível. Os
nós no segundo e terceiro níveis são organizados horizontalmente. O nó 1
vincula-se a todos os nós no segundo nível. O nó à direita do segundo
nível vincula-se a todos os nós no terceiro nível. A Rede 2.1 possui o
mesmo layout que a Rede 1.1. A Rede 1.2 contém um nó no primeiro nível e
três nós no segundo nível. Os nós no segundo nível são organizados
horizontalmente.
O nó 1
vincula-se a todos os nós no segundo nível. A Rede 2.2 possui o
mesmo layout que a Rede 1.2.
Exemplo de um Layout Recursivo de um Gráfico Aninhado
Obtaining such recursive layouts is easy. Você deve especificar o layout de gráfico na instância Diagram ou Graph de nível superior e chamar o método performGraphLayout. The layout is done recursively, because the recursive argument of the method is true by default.

Mecanismo Interno

O mecanismo interno é baseado no princípio de que uma instância de layout é usada apenas para um gráfico e não é reutilizada para seus subgráficos. Portanto, a instância de Layout de Árvore é automaticamente “clonada” usando o método ibm_ilog.graphlayout.GraphLayout.copy().
O layout de gráfico é aplicado a um modelo de gráfico e o mesmo princípio se aplica aos modelos de gráfico: uma instância de modelo de gráfico é usada apenas para um gráfico e não é reutilizada para subgráficos.
Os modelos de gráfico para os subgráficos são criados por chamadas para o método ibm_ilog.graphlayout.GraphLayout.copy() que, por sua vez, cria o modelo de gráfico usando o método ibm_ilog.graphlayout.GraphLayout.getGraphModel().
All these operations are done automatically, in a transparent way. Tudo o que você deve fazer é chamar o método performGraphLayout com o argumento recursive configurado como true ou omitido.

Exemplo de Código Dojo

O exemplo de código a seguir mostra como aplicar um único algoritmo de layout a um gráfico aninhado:
var diagram = dijit.byId("diagram");
var treeLayout = new ibm_ilog.graphlayout.tree.TreeLayout();
diagram.attr("nodeLayout", treeLayout);
diagram.performGraphLayout(true);