How to dynamically change the color of texts on a gauge-node?
So I want to be able to make the white text red or green depending on a positive or negative payload
How to dynamically change the color of texts on a gauge-node?
So I want to be able to make the white text red or green depending on a positive or negative payload
Hi,
you can use a mix of override CSS (Gauge ui-gauge | Node-RED Dashboard 2.0) and function node.
Here is a function node I use to add an icon based and change the color compring the previous temp value detect with the current value: red if the temp increase, blue if decrease and back if stable:
// Define the Icon
// Retrieve the previous temperature from the context
let prevTemp = context.get(msg.topic + "_pTemp") ?? null;
// Update the context with the current temperature
context.set(msg.topic + "_pTemp", msg.payload);
// Default values
let gIcon = "mdi-thermometer-off";
let gIconColor = "gIconColGray";
// Check if a previous temperature exists
if (prevTemp === null) {
gIcon = "mdi-thermometer"; // First time receiving data
gIconColor = "gIconColBlack"; // Neutral color
} else if (prevTemp > msg.payload) {
gIcon = "mdi-thermometer-minus"; // Temp decreased
gIconColor = "gIconColBlue"; // Cool color
} else if (prevTemp < msg.payload) {
gIcon = "mdi-thermometer-plus"; // Temp increased
gIconColor = "gIconColRed"; // Hot color
} else {
gIcon = "mdi-thermometer"; // No change
gIconColor = "gIconColBlack"; // Neutral color
}
msg.ui_update = {
label: "Temperatura",
gtype: "gauge-34",
gstyle: "rounded",
icon: gIcon,
units: "°C",
segments: [
{"color":"SkyBlue","from":10,"to":20},
{"color":"#5CD65C","from":20,"to":24},
{"color":"Orange","from":24,"to":30},
{"color":"Red","from":30,"to":100}],
min: 10,
max: 35
}
msg.class = gIconColor;
return msg;
And here is the related Dashboard2 Template node to apply the CSS override to update the text icon:
.gIconColRed .nrdb-ui-gauge-value label {
color: red !important;
}
.gIconColBlue .nrdb-ui-gauge-value label {
color: blue !important;
}
.gIconColBlack .nrdb-ui-gauge-value label {
color: black !important;
}
gIconColGray .nrdb-ui-gauge-value label {
color: gray !important;
}
Hope this help,
Giulio