Implementación del método layout

Dependiendo de las características del algoritmo de diseño, algunos de los pasos necesarios pueden ser distintos o innecesarios, o puede que sean necesarios otros pasos.
Dependiendo de la implementación concreta del algoritmo de diseño, deberán sustituirse otros métodos de la clase base de diseño de gráficos. Por ejemplo, si la subclase admite algunos de los parámetros genérico de la clase base, deberá sustituir el método supports[ParameterName] (consulte Parámetros y características de la clase base).
Para obtener más información sobre la clase ibm_ilog.graphlayout.GraphLayout, consulte la documentación de la biblioteca de clases.
Para implementar el método layout en el algoritmo de diseño personalizado de ejemplo:
  1. Obtenga el modelo de gráfico (getGraphModel() en la instancia de diseño).
    var model = this.getGraphModel();
    
  2. Obtenga la instancia del informe de diseño que se crea automáticamente al llamar al método performLayout de la superclase (getLayoutReport() en la instancia de diseño); consulte Utilización de un informe de diseño de gráficos.
    var report = this.getLayoutReport();
    
  3. Obtenga el parámetro región de diseño para calcular el área en que se colocarán los nodos.
    var rect = this.getCalcLayoutRegion();
    
  4. Obtenga un vector de los nodos (propiedad nodes en la instancia de modelo de diseño de gráficos).
    var nds = model.getNodes();
    
  5. Examine los nodos, saltándose los nodos fijos (isFixed(node) en la instancia de diseño) si así lo ha solicitado el usuario (isPreserveFixedNodes() en la instancia de diseño).
                    var count = nds.length;
                    for (var i = 0; i < count; i++) {
                        var node = nds[i];
                        ...
                    }
    
    
    (Para obtener más información sobre los nodos fijos, consulte Conservar nodos fijos ).
  6. Mueva cada nodo a las coordenadas recién calculadas dentro de la región de diseño:
    model.moveNode
    model.moveNode(node, x, y);
    
  7. Notifique a las escuchas de sucesos de diseño que se ha colocado un nodo nuevo. Esto permite al usuario implementar, por ejemplo, una barra de progreso si se ha registrado una escucha de sucesos de diseño en la instancia de diseño. (Para obtener más información sobre las escuchas de sucesos, consulte Utilización de las escuchas de sucesos).
    En la instancia de diseño, llame a:
    this.callLayoutStepPerformedIfNeeded();
    
  8. Por último, establezca el código en el informe de diseño.
    report.code = ibm_ilog.graphlayout.GraphLayoutReport.LAYOUT_DONE;
    
Una vez que haya implementado su propio algoritmo de diseño MyRandomLayout, puede utilizarlo directamente en el JavaScript de Dojo.