Skip to content

Network topology diagram card

The Network topology diagram card renders devices and their links from the Neops Topology API and supports per-node dashboard navigation.

When to use it

Use it to explore a scoped network, inspect node or link details, and route from a selected node to a more specific dashboard.

Live example

The Card Lab supplies deterministic Topology API and device-attribute responses to the production card. The fixture includes nodeUrlExpression, so clicking a node exercises the normal dashboard-navigation path.

The screenshot below remains as a release-reference comparison.

Network diagram in detail density

Requirements

Requirement Value
Dashboard types Standard
Minimum size 4 columns by 4 rows
Data Topology nodes and links plus device attributes
Backend capabilities Topology query and device element search
Permissions Read access to topology and the displayed device fields

Configuration

The paths below are relative to cardConfig.data.

title

Property Value
Type string
Required No
Default No title
Values Plain text

Sets the card heading.

query

Property Value
Type Neops search query string
Required No
Default Dashboard device query, then *
Values A query that scopes the Topology API device set

Overrides the dashboard device search for this topology. A bounded query such as a group or site is normally required for links; a global * can return nodes without connected links.

limit

Property Value
Type Integer
Required No
Default Resolved maxNodes, normally 150
Values Positive backend topology limit

Limits devices requested from the Topology API.

densityMode

Property Value
Type string
Required No
Default auto
Values auto, detail, or cluster

Selects labelled node cards, compact dots, or automatic selection by node count.

autoThreshold

Property Value
Type Integer
Required No
Default 25
Values Integer at least 1

In auto mode, this node count and above uses cluster density.

showEndLabels

Property Value
Type Boolean
Required No
Default true
Values true or false

Shows source and target interface labels at the ends of links.

showLinkArrows

Property Value
Type Boolean
Required No
Default true
Values true or false

Shows link direction arrowheads.

showNodeModal

Property Value
Type Boolean
Required No
Default true
Values true or false

Opens node details on click when nodeUrlExpression does not resolve to a URL.

showLinkModal

Property Value
Type Boolean
Required No
Default true
Values true or false

Opens link details on click when linkUrlExpression does not resolve to a URL.

nodeUrlExpression

Property Value
Type JMESPath expression
Required No
Default No navigation
Values Per-node expression returning a dashboard URL string

When the expression resolves for a clicked node, navigation takes precedence over the node modal. Navigation uses the shared dashboard helper, so local filters from the dashboard being left are not carried to the target URL.

linkUrlExpression

Property Value
Type JMESPath expression
Required No
Default No navigation
Values Per-link expression returning a dashboard URL string

When it resolves for a clicked link, navigation takes precedence over the link modal.

maxNodes

Property Value
Type Integer
Required No
Default 150
Values Integer at least 1

Caps rendered nodes for layout performance. When a graph is larger, the renderer keeps the highest-degree nodes.

showNodeTooltip

Property Value
Type string
Required No
Default cluster
Values cluster, always, or never

Controls when hovering a node opens its tooltip.

showLinkTooltip

Property Value
Type Boolean
Required No
Default true
Values true or false

Controls link hover tooltips.

nodeFields

Property Value
Type Array of field objects
Required No
Default IP and Model attribute fields
Values Ordered field definitions

Controls fields displayed on detail-density nodes and in node details.

nodeFields[].source

Property Value
Type string
Required Yes
Default No default
Values attribute or jmes

Chooses a direct node attribute lookup or a JMESPath expression against the merged node object.

nodeFields[].key

Property Value
Type string
Required Yes
Default No default
Values Attribute key or JMESPath expression, depending on source

Selects the displayed value.

nodeFields[].label

Property Value
Type string
Required No
Default The configured key
Values Visible field label

Labels the value.

linkFields

Property Value
Type Array of field objects
Required No
Default The topology link’s built-in detail fields
Values Ordered field definitions

Overrides fields shown in link tooltips and modals.

linkFields[].source

Property Value
Type string
Required Yes
Default No default
Values attribute or jmes

Chooses role-prefixed endpoint attributes or a JMESPath expression against the whole link.

linkFields[].key

Property Value
Type string
Required Yes
Default No default
Values Attribute key or JMESPath expression

Selects the link value. Attribute keys are a configuration contract and are not derived from visible labels.

linkFields[].label

Property Value
Type string
Required No
Default The configured key
Values Visible field label

Labels the link value.

nodeTooltipFields

Property Value
Type Array of field objects
Required No
Default Falls back to nodeFields
Values Ordered field definitions with the same shape as nodeFields

Lets a hover tooltip show a different set of node values.

nodeTooltipFields[].source

Property Value
Type string
Required Yes
Default No default
Values attribute or jmes

Chooses how the tooltip value is resolved.

nodeTooltipFields[].key

Property Value
Type string
Required Yes
Default No default
Values Attribute key or JMESPath expression

Selects the tooltip value.

nodeTooltipFields[].label

Property Value
Type string
Required No
Default The configured key
Values Visible field label

Labels the tooltip value.

Examples

{
  "cardId": "network-diagram-topology",
  "data": {
    "title": "Site topology",
    "query": "groups.id: 42",
    "densityMode": "auto",
    "nodeFields": [
      { "source": "attribute", "key": "ip", "label": "IP" },
      { "source": "attribute", "key": "model", "label": "Model" }
    ],
    "nodeUrlExpression": "join('', ['/dashboards/device?deviceId=', to_string(id)])"
  }
}

Clicking a node whose expression returns a URL routes to the device dashboard instead of opening the detail modal.

Behavior

The card follows dashboard device-filter changes unless query overrides them, fetches topology plus device attributes, and lays out the result with Cytoscape. Hover and click behavior follows the configured tooltip, modal, and URL precedence rules. The renderer reacts to card resizing and scales portaled overlays with the dashboard.

Limitations and safety

Large graphs are intentionally capped and may omit low-degree nodes. JMESPath-generated URLs should point only to trusted in-application routes. Read access to a field remains controlled by the backend even when that field is named in configuration.