Propiedades locales

Puede asignar valores en el servidor para propiedades locales en los objetos parentNodeLayout y parentLinkLayout de un nodo o enlace:
Propiedad Descripción
<nombre de propiedad local del cliente> Nombre de la seudopropiedad del nodo o enlace definida por las funciones de obtención y establecimiento en la clase de diseño en el cliente correspondiente. Se pueden especificar todas las propiedades locales de tipo number, boolean, point y rectangle.
En este ejemplo se establecen valores para cuatro propiedades locales con un diseño hierarchical:
"parentNodeLayout":{
                  "linkStyle": 1,
                  "linkPriority": 123,
                  "fromPortIndex": 3,
                  "toPortIndex": 5
},
En este ejemplo, las funciones getLinkStyle y setLinkStyle de la clase HierarchicalLayout se corresponden con el nombre de la propiedad local linkStyle.
En el gráfico publicado en el servidor, los objetos parentNodeLayout y parentLinkLayout pueden estar en cualquier nodo o enlace de un gráfico o subgráfico donde haya nodeLayout y linkLayout. La ausencia de los objetos parentNodeLayout y parentLinkLayout para un nodo o enlace determinado indica que no hay ningún diseño de nodos local o propiedad de diseño de enlaces para este nodo o enlace.

Propiedades de los nodos

Propiedad Descripción
id Identificador exclusivo del nodo. Se utiliza cuando se crean enlaces.
b Recuadro delimitador del nodo, especificado como una matriz de cuatro números (coordenada x, coordenada y, anchura y altura). Los valores del recuadro delimitador se expresan en el espacio de coordenadas del padre del nodo.
parentNodeLayout Objeto que contiene las propiedades locales del nodo para el diseño de nodos del gráfico que contiene el nodo. Consulte Propiedades locales .
parentLinkLayout Objeto que contiene las propiedades locales del nodo para el diseño de enlaces del gráfico que contiene el nodo. Consulte Propiedades locales .

Propiedades de los enlaces

Propiedad Descripción
id Identificador exclusivo del nodo. Se utiliza cuando se crean enlaces y también lo puede utilizar el cliente al actualizar su propio modelo tras ejecutar el diseño en el servidor.
f Desde nodo. El ID del nodo en el origen del enlace.
t A nodo. El ID del nodo en el destino del enlace.
fp Desde punto. La coordenada opcional del conector from point, especificada como una matriz JSON de dos números para las coordenadas x e y. Si no se especifica, el from point se establece utilizando el centro del nodo. La respuesta del servidor omite esta propiedad cuando el diseño no ha movido el punto de conexión. En este caso, el cliente debe mantener el punto de conexión original sin modificar.
tp A punto. La coordenada opcional del conector to point, especificada como una matriz JSON de dos números para las coordenadas x e y. Si no se especifica, el to point se establece utilizando el centro del nodo. La respuesta del servidor omite esta propiedad cuando el diseño no ha movido el punto de conexión. En este caso, el cliente debe mantener el punto de conexión original sin modificar.
ip Lista opcional de puntos intermedios para el enlace, especificada como una matriz de matrices de coordenadas (x,y), por ejemplo [[10,20], [30,40]]. El enlace se traza mediante los puntos especificados. La ausencia de esta propiedad significa que el enlace es una línea recta entre los nodos.
sp Verdadero cuando el inicio de enlace está fijado(BasicPort.isMovable devuelve true). Si no se especifica, el inicio de enlace no está fijado.
ep Verdadero cuando el final de enlace está fijado(BasicPort.isMovable devuelve true). Si no se especifica, el final de enlace no está fijado.
w Ancho del enlace.
parentNodeLayout Objeto que contiene las propiedades locales del enlace para el diseño de nodos del gráfico que contiene el enlace. Consulte Propiedades locales .
parentLinkLayout Objeto que contiene las propiedades locales del enlace para el diseño de enlaces del gráfico que contiene el enlace. Consulte Propiedades locales .
Todos los valores de los elemento geométricos (posición del punto y ancho) se expresan en el espacio de coordenadas del padre del enlace.
La respuesta del servidor omite los enlaces que no haya presentado el diseño de nodos o el diseño de enlaces. Este comportamiento se produce cuando un punto no se ha movido, añadido o eliminado.

Subgráficos

Todas las propiedades válidas para un nodo también son válidas para un subgráfico. Las propiedades siguientes también son válidas en un subgráfico:
Propiedad Descripción
gb Recuadro delimitador del gráfico dentro del subgráfico, especificado como una matriz de cuatro números (coordenada x, coordenada y, anchura y altura). Los valores del recuadro delimitador se expresan en el mismo espacio de coordenadas del padre del subgráfico. Sirven para calcular los márgenes del subgráfico.
m Define la matriz de transformación del espacio de coordenadas del gráfico dentro del subgráfico en el espacio de coordenadas del subgráfico. Se especifica como una matriz de seis números (xx, xy, yx, yy, dx y dy). La ausencia de esta propiedad es equivalente a especificar una matriz de identidad.
Si un subgráfico del cliente está en el estado contraído (Subgraph.isCollapsed devuelve true), no describen los nodos y enlaces del subgráfico. En su lugar, describe el subgráfico como si fuera un nodo normal.

Gráficos anidados con enlaces intergráficos

Cualquier nodo puede contener un subgráfico y cualquier pareja de nodos de cualquier gráfico o subgráfico se puede conectar. Para enlazarlos es importante que cada nodo se pueda identificar de forma exclusiva.
En el ejemplo siguiente se especifica un gráfico con un subgráfico y un enlace intergráficos:
{
"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]]}
]
}
El subgráfico de este ejemplo se define como un nodo con un recuadro delimitador. Hay un enlace intergráficos que va de un nodo del subgráfico a otro nodo del gráfico padre. El código de servidor no necesita ninguna estructura de denominación, siempre y cuando todos los nodos, de todos los subgráficos, tengan ID exclusivos. Si se encuentra un ID duplicado, el diseño del gráfico falla.
La descripción JSON de un enlace intergráficos que empieza o acaba en un nodo dentro de un subgráfico contraído finaliza mientras su otro extremo se encuentra en un gráfico que no está contraído debe utilizar el nodo del extremo visible en lugar del nodo del extremo original. El nodo del extremo visible es el padre más cercano del nodo del extremo que no está en un estado contraído.