Implémentation de la méthode d'agencement

En fonction des caractéristiques de l'algorithme d'agencement, certaines étapes requises peuvent être différentes ou s'avérer non nécessaires, ou d'autres étapes peuvent être requises.
En fonction de l'implémentation particulière de votre algorithme d'agencement, d'autres méthodes de la classe d'agencement de graphe de base peuvent avoir besoin d'être substituées. Par exemple, si votre sous-classe prend en charge certains paramètres génériques de la classe de base, vous devez remplacer la méthode supports[ParameterName] (voir Paramètres et fonctions de la classe de base).
Pour plus d'informations sur la classe ibm_ilog.graphlayout.GraphLayout, reportez-vous à la documentation des bibliothèques de classe.
Pour implémenter la méthode layout dans l'exemple d'algorithme d'agencement personnalisé :
  1. Obtenez le modèle de graphe (getGraphModel() sur l'instance d'agencement).
    var model = this.getGraphModel();
    
  2. Obtenez l'instance du rapport d'agencement qui est automatiquement créé lorsque la méthode performLayout de la superclasse est appelée (getLayoutReport() sur l'instance d'agencement), voir Utilisation d'un rapport d'agencement de graphe.
    var report = this.getLayoutReport();
    
  3. Obtenez le paramètre de région d'agencement pour calculer la zone où les noeuds seront placés.
    var rect = this.getCalcLayoutRegion();
    
  4. Obtenez un vecteur des noeuds (propriété nodes sur l'instance de modèle d'agencement de graphe).
    var nds = model.getNodes();
    
  5. Parcourez les noeuds en ignorant les noeuds fixes (isFixed(node) sur l'instance d'agencement) si vous y êtes invité par l'utilisateur (isPreserveFixedNodes() sur l'instance d'agencement).
                    var count = nds.length;
                    for (var i = 0; i < count; i++) {
                        var node = nds[i];
                        ...
                    }
    
    
    (Pour plus de détails sur les noeuds fixes, voir Conserver les noeuds fixes).
  6. Déplacez chaque noeud vers les coordonnées nouvellement calculés à l'intérieur de la région d'agencement :
    model.moveNode
    model.moveNode(node, x, y);
    
  7. Notifiez les programmes d'écoute des événements d'agencement qu'un nouveau noeud a été positionné. Cela permet à l'utilisateur d'implémenter, par exemple, une barre de progression si le programme d'écoute d'événement d'agencement a été enregistré sur l'instance d'agencement. (Pour plus d'informations sur les programmes d'écoute d'événement, voir Utilisation des programmes d'écoute d'événement.)
    Sur l'instance d'agencement, appelez :
    this.callLayoutStepPerformedIfNeeded();
    
  8. Enfin, définissez le code dans le rapport d'agencement.
    report.code = ibm_ilog.graphlayout.GraphLayoutReport.LAYOUT_DONE;
    
Une fois que vous avez implémenté votre propre algorithme d'agencement MyRandomLayout, vous pouvez l'utiliser directement dans Dojo JavaScript.