Propriétés locales

Vous pouvez affecter des valeurs sur le côté serveur pour des propriétés locales des objets parentNodeLayout et parentLinkLayout d'un noeud ou d'un lien :
Propriété Description
<nom de propriété locale côté client> Nom de la pseudo propriété de noeud ou de lien définie par des fonctions de méthode d'accès get ou de méthode d'accès set dans la classe d'agencement côté client correspondante. Toutes les propriétés locales de type nombre, booléen, point et rectangle peuvent être spécifiées.
Cet exemple définit deux propriétés locales avec un agencement hiérarchique (hierarchical) :
"parentNodeLayout":{
                  "linkStyle": 1,
                  "linkPriority": 123,
                  "fromPortIndex": 3,
                  "toPortIndex": 5
},
Dans cet exemple, les fonctions getLinkStyle et setLinkStyle de la classe HierarchicalLayout correspondent au nom de propriété locale linkStyle.
Dans le graphe envoyé au serveur, les objets parentNodeLayout et parentLinkLayout peuvent être présents sur tout noeud ou lien d'un graphe ou sous-graphe où nodeLayout et linkLayout sont présents. L'absence des objets parentNodeLayout et parentLinkLayout pour un noeud ou un lien donné indique qu'il n'y a pas de propriété d'agencement de noeuds ou de liens locale pour ce noeud ou ce lien.

Propriétés de noeud

Propriété Description
id Identificateur unique pour le noeud. Utilisé lors de la création de liens.
b Cadre de délimitation pour le noeud, spécifié sous la forme d'un tableau de quatre nombres (coordonnée x, coordonnée y, largeur et hauteur). Les valeurs du cadre de délimitation sont exprimées dans l'espace de coordonnées du parent du noeud.
parentNodeLayout Objet contenant des propriétés locales du noeud pour l'agencement de noeuds du graphe qui contient le noeud. Voir Propriétés locales.
parentLinkLayout Objet contenant des propriétés locales du noeud pour l'agencement de liens du graphe qui contient le noeud. Voir Propriétés locales.

Propriétés de lien

Propriété Description
id Identificateur unique pour le noeud. Utilisé lors de la création de liens, et par le client, lors de la mise à jour de son modèle après l'agencement côté serveur.
f Noeud de départ. Valeur d'ID provenant du noeud à l'origine du lien.
t Noeud d'arrivée. Valeur d'ID du noeud au niveau de la destination du lien.
fp Point de départ. Coordonnées facultatives du connecteur du from point, spécifiées sous la forme d'un tableau JSON de deux nombres pour les coordonnées x et y. S'il n'est pas spécifié, le from point est défini en utilisant le centre du noeud. La réponse du serveur omet cette propriété lorsque l'agencement n'a pas déplacé le point de connexion. Dans ce cas, le client doit conserver le point de connexion d'origine non modifié.
tp Point d'arrivée. Coordonnées facultatives du connecteur du to point, spécifiées sous la forme d'un tableau JSON de deux nombres pour les coordonnées x et y. S'il n'est pas spécifié, le to point est défini en utilisant le centre du noeud. La réponse du serveur omet cette propriété lorsque l'agencement n'a pas déplacé le point de connexion. Dans ce cas, le client doit conserver le point de connexion d'origine non modifié.
ip Liste facultative de points intermédiaires pour le lien, spécifiée sous la forme d'un tableau de tableaux de coordonnées (x,y), par exemple [[10,20], [30,40]]. Le lien est dessiné en passant par les points spécifiés. L'absence de cette propriété signifie que le lien est une ligne droite entre les noeuds.
sp Valeur true lorsque le départ du lien est verrouillé(BasicPort.isMovable renvoie la valeur true). Si cette propriété n'est pas spécifiée, le départ du lien n'est pas verrouillé.
ep Valeur true lorsque la fin du lien est verrouillée (BasicPort.isMovable renvoie la valeur true). Si cette propriété n'est pas spécifiée, la fin du lien n'est pas verrouillée.
w Largeur du lien.
parentNodeLayout Objet contenant des propriétés locales du lien pour l'agencement de noeuds du graphe qui contient le lien. Voir Propriétés locales.
parentLinkLayout Objet contenant des propriétés locales du lien pour l'agencement de liens du graphe qui contient le lien. Voir Propriétés locales.
Toutes les valeurs des éléments de géométrie (position des points et largeur) sont exprimées dans l'espace de coordonnées du parent du lien.
La réponse du serveur omet les liens non agencés par l'exécution de l'agencement de noeuds ou de l'agencement de liens. C'est la cas lorsqu'un point n'a pas été déplacé, ajouté ou supprimé.

Sous-graphes

Toutes les propriétés valides pour un noeud sont aussi valides pour un sous-graphe. Les propriétés suivantes sont également valides pour un sous-graphe :
Propriété Description
gb Cadre de délimitation du graphe à l'intérieur du sous-graphe, spécifié sous la forme d'un tableau de quatre nombres (coordonnée x, coordonnée y, largeur et hauteur). Les valeurs du cadre de délimitation sont exprimées dans le même espace de coordonnées que le parent du sous-graphe. Elles servent à calculer les marges du sous-graphe.
m Définit la matrice de transformation de l'espace de coordonnées du graphe à l'intérieur du sous-graphe en l'espace de coordonnées du sous-graphe. Elle est spécifiée sous la forme de six numéros (xx, xy, yx, yy, dx et dy). L'absence de cette propriété équivaut à spécifier une matrice d'identité.
Si le sous-graphe côté client est à l'état réduit (Subgraph.isCollapsed renvoie la valeur true), ne décrit pas les noeuds et les liens du sous-graphe, mais décrit le sous-graphe comme s'il s'agissait d'un noeud classique.

Graphes imbriqués avec des liens intergraphes

Tout noeud peut contenir un sous-graphe et deux noeuds de n'importe quel graphe ou sous-graphe peuvent être reliés. Pour ce faire, il est important que chaque noeud soit identifiable de manière unique.
Voici un exemple de graphe avec un sous-graphe et un lien intergraphe.
{
"nodeLayout": {"algorithm":"forcedirected"},
"nodes":[
   {"id":"object1", "b":[120, 400, 20, 20]},
   {"id":"object2", "b":[170, 400, 20, 20]},
   {
      "id":"subgraph1", 
      "b":[500,300,200,200],
      "gb":[510,310,180,180],
      "m":[1,0,0,1,12,30],
      "nodeLayout": {"algorithm":"forcedirected"},
      "nodes":[
         {"id":"subgraph1/object1", "b":[0, 0, 20, 20]},
         {"id":"subgraph1/object2", "b":[100, 120, 20, 20]}
      ],
      "links":[
         {"id":"igLink", "f":"subgraph1/object1", "t":"object2"}
      ]
   }
],

"links":[
   {"id":"myLink", "f":"object1", "t":"object2", "ip":[[20,20],[40,20],[40,40]]}
]
}
Le sous-graphe ce cet exemple est défini en tant que noeud avec un cadre de délimitation. Un lien intergraphe relie un noeud du sous-graphe à un noeud du graphe parent. Aucune structure de dénomination n'est requise par le code de serveur dans la mesure où tous les noeuds ont un ID unique dans tous les sous-graphes. Si un ID en double est trouvé, l'agencement de graphe échoue.
La description JSON d'un lien intergraphe commençant ou se terminant sur un noeud à l'intérieur d'un sous-graphe réduit alors que l'autre extrémité est située dans un graphe non réduit doit utiliser le noeud de l'extrémité visible et non le noeud de l'extrémité d'origine. Le noeud de l'extrémité visible est le parent le plus proche du noeud de l'extrémité qui n'est pas à l'état réduit.