Skip to content

Neops Web Client 2.0.0

Released 2025-06-12

This release makes dashboards more flexible. Dashboard authors can turn JSON or entity facts into a searchable table, combine standard and aggregation cards on one dashboard, and see when a local card filter is responsible for an empty result.

At a glance

Area What changed Why it matters
Static data table A dashboard card can select any JSON array from the dashboard context and display its fields as columns. Facts that previously required a custom card can become a searchable, sortable table through configuration.
Dashboard types A mixed dashboard can contain compatible standard and aggregation cards together. Users can combine individual entity details and fleet-level summaries on one page.
Empty card state Cards report when their own local filter removed all available data. Users can distinguish a deliberate filter result from missing source data or a failed query.

Highlights

Turn nested facts into a useful table

The new static-data-table card follows a simple data path:

1. Source data 2. Select rows 3. Select fields 4. Show the result
Start with dashboard context or entity facts. A JMESPath expression selects one JSON array. Column expressions select values from each array item. Neops displays a searchable, sortable, paginated table.

For example, if a device stores an interfaces array in its facts, the card can select that array and display name and status as columns. The card does not require a dedicated Neops entity type for each row.

{
  "cardId": "static-data-table",
  "data": {
    "title": "Interface overview",
    "description": "Interfaces reported by this device",
    "tableConfigArguments": {
      "itemsPerPageOptions": [5, 10, 20],
      "sortable": true,
      "allowToHidePagination": true,
      "columns": [
        {
          "header": {
            "data": "Name",
            "orderKey": "name"
          },
          "labelExpression": "name"
        },
        {
          "header": {
            "data": "Status",
            "orderKey": "status"
          },
          "labelExpression": "status"
        }
      ]
    },
    "jmesPathToTableDataJsonArray": "device.facts.interfaces"
  }
}

The important settings are:

Setting Purpose
jmesPathToTableDataJsonArray Selects the JSON array that supplies the rows.
columns[].labelExpression Selects the displayed value from each row.
columns[].header.orderKey Enables sorting by the corresponding row field.
itemsPerPageOptions Defines the page-size choices available to the user.
allowToHidePagination Lets the table omit pagination controls when they are unnecessary.

The table also supports local text search, pagination, and sorting. If the JMESPath does not return an array, the card explains which expression failed instead of trying to render an invalid table.

Combine detail and overview cards on one dashboard

Before this release, a dashboard was effectively either standard or aggregation-focused. That made it difficult to place an individual device table beside a chart summarizing a larger result set.

The new dashboard types make the boundary explicit:

Dashboard type Intended content
Standard Cards that work with the current entity or ordinary result context.
Aggregation Cards that summarize grouped or aggregated results.
Mixed Both standard and aggregation cards, when their registrations declare support.

The dashboard editor uses each card’s compatibility declaration when offering cards. If an incompatible card is already present, Neops shows a clear placeholder naming the card type and dashboard type instead of failing silently.

Explain why a locally filtered card is empty

A card-level filter can intentionally narrow a shared dashboard result. Previously, when that filter removed every row, the empty card looked similar to a query that returned no source data.

From this release, the card identifies the local filter as the reason for the empty result. The user can review or remove that card’s filter without first debugging the global dashboard query.

Upgrade notes

Existing dashboards continue to use their current dashboard type. Choose the mixed type only when a new or updated dashboard needs both standard and aggregation cards.

The static data table is a new card, so there is no saved-configuration migration. Add it through the dashboard editor or as a new card configuration and make sure its JMESPath resolves to an array.

Technical details