Node-RED UI Table Widget

0.4.5 · active · verified Sun Apr 19

This Node-RED UI widget node, currently at version 0.4.5, displays dynamic data as an interactive table within the Node-RED Dashboard. It expects `msg.payload` to contain an array of objects, with each object representing a row and its keys defining the column names. The node is actively maintained as part of the `node-red-ui-nodes` collection and leverages the powerful Tabulator.js library for its core table functionality. It offers extensive configuration options for columns, including width, alignment, and various data formatting options such as plain text, raw HTML, links, images, progress bars, traffic lights, color fills, and star ratings. Advanced users can also send commands to the table via `msg.payload` to manipulate data, apply filters, and interact directly with the underlying Tabulator API. Its key differentiator lies in its seamless integration into the Node-RED flow paradigm, making it straightforward to visualize dynamic data streams from IoT devices, APIs, or other Node-RED sources directly within a web-based dashboard.

Common errors

Warnings

Install

Imports

Quickstart

This Node-RED flow demonstrates basic installation via `npm` and how to populate the `ui-table` node with simple array data and send advanced commands to add rows dynamically. Import this JSON into Node-RED, ensure `node-red-dashboard` is installed, and deploy to see the table.

{
  "id": "a1b2c3d4.e5f6g7h8",
  "type": "tab",
  "label": "UI Table Quickstart",
  "disabled": false,
  "info": "",
  "nodes": [
    {
      "id": "1a2b3c4d.5e6f7a8b",
      "type": "inject",
      "z": "a1b2c3d4.e5f6g7h8",
      "name": "Send Simple Data",
      "props": [
        { "p": "payload" },
        { "p": "topic", "vt": "str" }
      ],
      "repeat": "",
      "crontab": "",
      "once": true,
      "onceDelay": 0.1,
      "topic": "",
      "payload": "[ { \"Name\": \"Kazuhito Yokoi\", \"Age\": \"35\", \"Favourite Color\": \"red\", \"Date Of Birth\": \"12/09/1983\" }, { \"Name\": \"Oli Bob\", \"Age\": \"12\", \"Favourite Color\": \"cyan\", \"Date Of Birth\": \"12/08/2017\" } ]",
      "payloadType": "json",
      "x": 180,
      "y": 100,
      "wires": [
        ["f9e8d7c6.b5a4a3a2"]
      ]
    },
    {
      "id": "f9e8d7c6.b5a4a3a2",
      "type": "ui_table",
      "z": "a1b2c3d4.e5f6g7h8",
      "name": "My Simple Table",
      "group": "group_1",
      "order": 1,
      "width": "0",
      "height": "0",
      "columns": [],
      "outputs": 0,
      "cts": false,
      "x": 450,
      "y": 100,
      "wires": []
    },
    {
      "id": "7a6b5c4d.3e2f1a0b",
      "type": "inject",
      "z": "a1b2c3d4.e5f6g7h8",
      "name": "Send Command: Add Row",
      "props": [
        { "p": "payload" },
        { "p": "topic", "vt": "str" }
      ],
      "repeat": "",
      "crontab": "",
      "once": false,
      "onceDelay": 0.1,
      "topic": "",
      "payload": "{\n    \"command\":\"addData\",\n    \"arguments\":[\n        {\n            \"Name\":\"New Row\",\n            \"Age\":\"25\",\n            \"Favourite Color\":\"green\",\n            \"Date Of Birth\":\"01/01/2025\"\n        },\n        true\n    ],\n    \"returnPromise\":false\n}",
      "payloadType": "json",
      "x": 210,
      "y": 160,
      "wires": [
        ["f9e8d7c6.b5a4a3a2"]
      ]
    },
    {
      "id": "group_1",
      "type": "ui_group",
      "name": "Default",
      "tab": "tab_1",
      "order": 1,
      "disp": true,
      "width": "6",
      "collapse": false,
      "className": ""
    },
    {
      "id": "tab_1",
      "type": "ui_tab",
      "name": "Home",
      "icon": "dashboard",
      "order": 1,
      "disabled": false,
      "hidden": false
    }
  ]
}

view raw JSON →