Skip to content

Table card

The Table card renders a paginated Neops entity search with configurable columns, links, selection, editing, and task actions.

When to use it

Use it when dashboard readers need row-level entity data from a live backend query. Use Static data table when rows are already embedded inside the dashboard context as a JSON array.

Live example

The Card Lab supplies a deterministic constrained entity-search service to the production table. Mutation controls are omitted from this read-only fixture.

Requirements

Requirement Value
Dashboard types Standard and aggregation
Minimum size 5 columns by 2 rows
Data Paginated rows for one Neops entity type
Backend capabilities Entity search; task APIs for configured actions or edits
Permissions Entity read access plus task permissions for every configured action

Configuration

This card has no guided editor in SDK 5.2.0; configure it in expert JSON. The paths below are relative to cardConfig.data. Fields marked required come from the saved configuration contract; no implicit value should be assumed when one is omitted.

Table presentation

Path Type Required Default and visible effect
entityType String Yes No default. Values: device, interface, client, group. Selects the backend row service.
localCardFilter JMESPath expression No No filter. Filters this card’s incoming entity array before rendering.
title Interpolated string No No saved default. Shown above the table when non-empty.
description String No No saved default. Shown under the card title.
disableEdit Boolean No No saved default. Disables edit mode when true.
enableSingleSelect Boolean No No saved default. Omission behaves as false; setting true restricts selection to one row.
expandable Boolean No No saved default. Omission behaves as false; setting true enables row expansion when the host supplies expansion content.
batchText String No No saved default. Labels the selected-row batch state when provided.
searchDisabled Boolean No No saved default. Hides table search when true.
searchExpandable Boolean No No saved default. Omission behaves as false; setting true lets the search control expand and collapse.
hideCellEditButton Boolean No No saved default. Hides the per-cell edit affordance.
searchModelPlaceHolder String No No saved default. Sets the search input hint when provided.
selectable Boolean No No saved default. Omission behaves as false; setting true enables row selection.
sortable Boolean No No saved default. Omission behaves as false; setting true enables sorting for columns with header.orderKey.
itemsPerPageOptions Integer array No No saved default. When provided, the current backend page length is added if absent.
stickyHeader Boolean No No saved default. Omission behaves as false; setting true keeps headings visible while the table scrolls.
toolbarDisabled Boolean No No saved default. Omission behaves as false; setting true hides the toolbar.
allowToHidePagination Boolean No Runtime migration fallback false. Allows pagination controls to hide when all rows fit. Saved configurations written before card version 2 carried this as hidePagination; the card’s 1 to 2 migration renames it on load.
rowModalDisabled Boolean No false. Setting true removes the built-in “Show in dialog” row action; the actions column disappears entirely when no context-menu entry is configured either.
emptyMessage String No No elements found.. Replaces the message shown when the query returns no rows.

Row interaction

A click on a row body runs the configured drilldown. Clicks that land on interactive cell content, and clicks while a cell is in edit mode, are ignored. This is independent of the “Show in dialog” row action, which rowModalDisabled controls.

Path Type Required Default and visible effect
rowDrilldown Object No Omitted behaves as { "type": "entity-detail" } because the Table card always has an entityType.
rowDrilldown.type String enum Yes No default. entity-detail opens the row’s entity detail page, dashboard opens another dashboard, none makes rows inert.
rowDrilldown.urlPath String For dashboard No default. Dashboard path, resolved relative to the current dashboard.
rowDrilldown.params Object of JMESPath expressions No No extra query parameters. Each value is evaluated against the clicked row and merged into urlPath’s query string. Only non-empty strings, numbers, and booleans are emitted; objects, arrays, empty strings, and null results are dropped.

The entity-detail drilldown needs the host application to provide the SDK’s entity page routes. The Neops web client does; a host that does not gets one console warning and inert rows.

Columns

Path Type Required Default and visible effect
columns Array Yes No default. Defines columns in display order.
columns[].header Object Yes No default. Contains heading metadata.
columns[].header.data String No -. Visible heading label.
columns[].header.orderKey String No Not sortable. Backend ordering key for this column.
columns[].header.columnSize String No Grow. Values: xs, sm, md, lg, xl, xxl, grow.
columns[].header.visible Boolean No true. Hides the column when false.
columns[].labelExpression JMESPath expression Yes No default. Evaluated against each entity to produce the displayed value.
columns[].linkExpression JMESPath expression No No link. Evaluated per row; a result makes the cell navigate through the dashboard navigation helper.
columns[].domain String No Text-like fallback. Values include text, ip, date, number, choices, multiChoices, boolean, check, button, croneExpression.
columns[].showAs String No Inferred from the domain. Values include text, date, boolean-success, boolean-checkbox, action-cron, button-checks-facts.
columns[].showAsConfig Object No No renderer-specific settings. Shape depends on showAs.
columns[].listItemProperty String For multiChoices No default. Selects the label property from every array item.
columns[].editorConfig Object No Read-only cell. Adds edit behavior and requires a compatible domain.
columns[].editorConfig.editDisabled Boolean No false. Disables editing for this column when true.
columns[].editorConfig.domainConfig Object No No constraints. Configures numeric or choice editors.
columns[].editorConfig.domainConfig.min Number No No minimum.
columns[].editorConfig.domainConfig.max Number No No maximum.
columns[].editorConfig.domainConfig.precision Number No No explicit precision.
columns[].editorConfig.domainConfig.choices Array No Empty array. Static Carbon choice items.
columns[].editorConfig.domainConfig.choicesFromQuery String path No No dynamic choices. Reads choices from the current entity and takes precedence over choices.
columns[].editorConfig.editValueQuery JMESPath expression When editing No default. Reads the current edit value from the row.
columns[].editorConfig.editCellProperty String path With onGlobalSave No default. Names the property placed in the bulk edit payload.
columns[].editorConfig.onNewValue Action object For immediate task-backed edits No action. Executes after a changed value unless onGlobalSave is configured.

heroButton is the primary toolbar action. toolbar and globalMenu are ordered arrays of secondary actions.

Path Type Required Default and visible effect
heroButton Menu action object No No visible primary action when omitted at runtime.
heroButton.label String Yes Button label.
heroButton.type String enum Yes Action behavior. EXECUTE_TASK can open the task panel with selected IDs or the current scoped query.
heroButton.column Integer For column-edit actions Column index used by column-edit actions.
heroButton.onClick Action object For execution actions Task configuration used by execution actions.
toolbar Array of menu action objects No Empty or omitted produces no secondary toolbar actions.
toolbar[].label String Yes Visible action label.
toolbar[].type String enum Yes Supports EDIT_ALL_SELECTED, EDIT_SPECIFIC_COLUMN, EXECUTE_TASK_FOR_SELECTED, and EXECUTE_TASK_ON_TASK_PANEL_FOR_SELECTED.
toolbar[].column Integer For EDIT_SPECIFIC_COLUMN Zero-based column index used by that action.
toolbar[].onClick Action object For execution actions Task configuration for execution action types.
globalMenu Array of menu action objects No Empty or omitted produces no global menu actions.
globalMenu[].label String Yes Visible menu label.
globalMenu[].type String enum Yes Supports column editing and selected-row task execution; unsupported values show a configuration error.
globalMenu[].column Integer For EDIT_SPECIFIC_COLUMN Zero-based column index used by that action.
globalMenu[].onClick Action object For execution actions Task configuration for execution actions.
onGlobalSave Action object No No bulk save. When present, edited cells are collected and sent through one task instead of executing per-cell tasks.

The shared Action shape below is used at:

  • heroButton.onClick
  • toolbar[].onClick
  • globalMenu[].onClick
  • onGlobalSave
  • columns[].editorConfig.onNewValue
Property Type Required Default and effect
uniqueTaskName String When executing No default. Exact task unique name.
executeOnType String enum When executing No default. CLIENT, DEVICE, GENERIC, GLOBAL, GROUP, or INTERFACE.
valueProperty String path When an immediate edit passes the new value No default. Places the edited value into nested task arguments.
staticTaskArguments Object No Empty object. Merged into task input.
successResult Result object No Built-in success notification. Optional fields: title, message, and severity info, error, or success.
errorResult Result object No Built-in error notification. Optional fields: title, message, and severity info, error, or success.

Examples

Read-only device inventory

{
  "cardId": "table",
  "data": {
    "entityType": "device",
    "title": "Devices",
    "description": "Current dashboard scope",
    "enableSingleSelect": false,
    "expandable": false,
    "batchText": "Device(s) selected",
    "searchExpandable": true,
    "searchModelPlaceHolder": "Search devices",
    "selectable": false,
    "sortable": true,
    "heroButton": null,
    "toolbar": [],
    "globalMenu": [],
    "columns": [
      {
        "header": { "data": "Hostname", "orderKey": "hostname", "columnSize": "grow" },
        "labelExpression": "hostname",
        "listItemProperty": "hostname"
      },
      {
        "header": { "data": "IP", "orderKey": "ip", "columnSize": "md" },
        "labelExpression": "ip",
        "domain": "ip",
        "listItemProperty": "ip"
      }
    ],
    "itemsPerPageOptions": [10, 25, 50],
    "stickyHeader": true,
    "toolbarDisabled": false
  }
}

The card shows paginated device rows with backend sorting and no mutation actions.

Behavior

The card subscribes to the chosen entity context, uses its page and page length, and rebuilds the table model when rows change. Cell links resolve per row and navigate through the dashboard helper. Edit actions either execute immediately per cell or accumulate changes for onGlobalSave; configuring both produces a warning and the bulk-save path wins.

Limitations and safety

This is an expert-only configuration surface with no schema-driven editor in this SDK version. Task-backed menu and edit actions can mutate managed systems, so use least-privilege backend permissions and test target selection carefully. For a read-only table, omit edit and task actions and set selectable to false.

See Static data table for an array already present in dashboard context.