npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

node-red-dashboard-2-ui-gauge-duration

v0.1.3

Published

FlowFuse Dashboard gauge with configurable arc and needle animation duration

Readme

Configurable Duration Gauge for FlowFuse Dashboard

This is a copy of the official FlowFuse Dashboard ui-gauge widget, adapted as an independent third-party package, with configurable animation duration for the arc and needle.

Original source: FlowFuse/node-red-dashboard — ui-gauge. The original widget was created by the FlowFuse Dashboard contributors. This package is an independent modification, with the original Apache-2.0 license and attribution preserved; see NOTICE and UPSTREAM.md.

The added setting is Duration (ms) for Half and 3/4 gauges, with both Needle and Rounded styles. It exposes the duration already used by the original update(value, duration = 1000) method. The copied gauge types, styles, segments, typed inputs, and existing dynamic properties are retained.

  • Default: 1000 ms, matching the original behavior.
  • 0: update without animation.
  • Accepts finite numbers greater than or equal to zero.
  • Duration controls the D3 arc and needle transitions. It does not change the Tank waves or animations in other gauge types.
  • Initial rendering and resizing continue to use duration 0.

Duration Comparison

Both recordings compare 1000 ms, 500 ms, 100 ms, and 0 ms using half gauges with the needle style. Shorter durations reach the target sooner; 0 ms updates immediately. The initial wait has been trimmed from both GIFs.

Variable Values

Watch the arc and needle respond to changes in the displayed value at each duration.

Four gauges comparing 1000, 500, 100, and 0 ms animation durations with variable values

Step Changes

Compare the transition speed when the value jumps between the minimum and maximum.

Four gauges comparing 1000, 500, 100, and 0 ms animation durations during step changes

Installation

Requires Node-RED 3+ and an existing installation of @flowfuse/node-red-dashboard 1.34.0 or later. This package supports FlowFuse Dashboard (Dashboard 2).

Install from your Node-RED user directory:

cd ~/.node-red
npm install node-red-dashboard-2-ui-gauge-duration

Alternatively, install the compiled .tgz downloaded from GitHub Releases:

cd ~/.node-red
npm install /path/to/node-red-dashboard-2-ui-gauge-duration-0.1.3.tgz

Restart Node-RED. Add gauge duration from the Dashboard category, select a group, and set Duration (ms). The node uses the independent ui-gauge-duration type and can coexist with the original gauge.

To reuse settings from an exported flow, change type from ui-gauge to ui-gauge-duration on the desired nodes and add "duration": 1000. When importing a copy, let Node-RED generate new IDs.

Runtime Updates

The editor setting is sufficient. Optionally, use the Dashboard dynamic property convention:

msg.payload = 75;
msg.ui_update = { duration: 250 };
return msg;

This sets the duration for this and subsequent updates. You can also send msg.ui_update = { duration: 0 }. Dynamic duration is stored in Dashboard state for new clients; invalid values are ignored with a warning.

The original method remains update(value, duration = 1000). The main change is in the UIGaugeDial.vue value watcher:

this.update(val, this.props.duration ?? 1000)

Duration flows from the editor to the runtime, parent component, and dial. Changing only duration does not remount the dial or move its value; the setting takes effect on the next value change.

Development

npm ci
npm run build
npm test
npm pack

Node.js 20.19+ is required to build. The bundle at resources/ui-gauge-duration.umd.js includes D3 and CSS; Dashboard provides Vue and Vuex.

Source details and changes are documented in UPSTREAM.md. The Apache-2.0 license is preserved. The reference is the upstream main code downloaded on 2026-10-23, with manifest version 1.34.0.

Layout Compatibility

In the Grid layout, Dashboard has an internal automatic height rule specific to the native ui-gauge type in 3/4 mode. For the same height with this widget, explicitly set the height to 3 instead of automatic in that case.

Automated tests cover the runtime with a simulated Dashboard API and the compiled Vue components in a simulated DOM. A local smoke test with Node-RED 4 and Dashboard 1.34.0 also verified node loading, widget registration, dynamic duration state, and HTTP delivery of the Dashboard and widget bundle. Visual appearance still needs to be checked in your environment.