summaryrefslogtreecommitdiffhomepage
path: root/applications/luci-app-statistics/htdocs/luci-static/resources/statistics
diff options
context:
space:
mode:
authorJo-Philipp Wich <jo@mein.io>2023-04-03 12:45:50 +0200
committerJo-Philipp Wich <jo@mein.io>2023-04-03 12:47:47 +0200
commitdd1111407d8f0b1f7f761c5ebbe6ae43a268a4a4 (patch)
tree41e8984ccc8921babdfdc319204c5d90e3d8647f /applications/luci-app-statistics/htdocs/luci-static/resources/statistics
parent6b9a985fa7faecadb84a53fb85d7afa8791e93f1 (diff)
luci-app-statistics: add watt-ups for nut and skip unsupported values
Only render NUT charts for actually available data and add a chart definition for `watt-ups` values while we're at it. Ref: https://forum.openwrt.org/t/x/156246 Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Diffstat (limited to 'applications/luci-app-statistics/htdocs/luci-static/resources/statistics')
-rw-r--r--applications/luci-app-statistics/htdocs/luci-static/resources/statistics/rrdtool/definitions/nut.js233
1 files changed, 129 insertions, 104 deletions
diff --git a/applications/luci-app-statistics/htdocs/luci-static/resources/statistics/rrdtool/definitions/nut.js b/applications/luci-app-statistics/htdocs/luci-static/resources/statistics/rrdtool/definitions/nut.js
index 5d7a92f7fb..dbd25f6c07 100644
--- a/applications/luci-app-statistics/htdocs/luci-static/resources/statistics/rrdtool/definitions/nut.js
+++ b/applications/luci-app-statistics/htdocs/luci-static/resources/statistics/rrdtool/definitions/nut.js
@@ -7,125 +7,150 @@ return baseclass.extend({
title: _('UPS'),
rrdargs: function(graph, host, plugin, plugin_instance, dtype) {
- var voltages_ac = {
- title: "%H: AC voltages on UPS \"%pi\"",
- vlabel: "V",
- number_format: "%5.1lfV",
- data: {
- instances: {
- voltage: [ "input", "output" ]
- },
- options: {
- voltage_output : { color: "00e000", title: "Output voltage", noarea: true, overlay: true },
- voltage_input : { color: "ffb000", title: "Input voltage", noarea: true, overlay: true }
+ var definitions = [];
+ var instances;
+
+ function find_instances(dtype, wanted) {
+ var matching = graph.dataInstances(host, plugin, plugin_instance, dtype).filter(function(instance) {
+ return wanted.indexOf(instance) > -1;
+ });
+
+ return matching.length ? { [dtype]: matching } : null;
+ }
+
+ if ((instances = find_instances('voltage', [ 'input', 'output' ])) != null) {
+ definitions.push({
+ title: "%H: AC voltages on UPS \"%pi\"",
+ vlabel: "V",
+ number_format: "%5.1lfV",
+ data: {
+ instances: instances,
+ options: {
+ voltage_output : { color: "00e000", title: "Output voltage", noarea: true, overlay: true },
+ voltage_input : { color: "ffb000", title: "Input voltage", noarea: true, overlay: true }
+ }
+ }
+ });
+ }
+
+ if ((instances = find_instances('voltage', [ 'battery' ])) != null) {
+ definitions.push({
+ title: "%H: Battery voltage on UPS \"%pi\"",
+ vlabel: "V",
+ number_format: "%5.1lfV",
+ data: {
+ instances: instances,
+ options: {
+ voltage: { color: "0000ff", title: "Battery voltage", noarea: true, overlay: true }
+ }
}
- }
- };
+ });
+ }
- var voltages_dc = {
- title: "%H: Battery voltage on UPS \"%pi\"",
- vlabel: "V",
- number_format: "%5.1lfV",
- data: {
- instances: {
- voltage: [ "battery" ]
- },
- options: {
- voltage: { color: "0000ff", title: "Battery voltage", noarea: true, overlay: true }
+ if ((instances = find_instances('current', [ 'battery', 'output' ])) != null) {
+ definitions.push({
+ title: "%H: Current on UPS \"%pi\"",
+ vlabel: "A",
+ number_format: "%5.3lfA",
+ data: {
+ instances: instances,
+ options: {
+ current_output : { color: "00e000", title: "Output current", noarea: true, overlay: true },
+ current_battery: { color: "0000ff", title: "Battery current", noarea: true, overlay: true }
+ }
}
- }
- };
+ });
+ }
- var currents = {
- title: "%H: Current on UPS \"%pi\"",
- vlabel: "A",
- number_format: "%5.3lfA",
- data: {
- instances: {
- current: [ "battery", "output" ]
- },
- options: {
- current_output : { color: "00e000", title: "Output current", noarea: true, overlay: true },
- current_battery: { color: "0000ff", title: "Battery current", noarea: true, overlay: true }
+ if ((instances = find_instances('percent', [ 'charge', 'load' ])) != null) {
+ definitions.push({
+ title: "%H: Battery charge/load on UPS \"%pi\"",
+ vlabel: "Percent",
+ y_min: "0",
+ y_max: "100",
+ number_format: "%5.1lf%%",
+ data: {
+ instances: instances,
+ options: {
+ percent_charge: { color: "00ff00", title: "Charge level", noarea: true, overlay: true },
+ percent_load: { color: "ff0000", title: "Load", noarea: true, overlay: true }
+ }
}
- }
- };
+ });
+ }
- var percentage = {
- title: "%H: Battery charge/load on UPS \"%pi\"",
- vlabel: "Percent",
- y_min: "0",
- y_max: "100",
- number_format: "%5.1lf%%",
- data: {
- instances: {
- percent: [ "charge", "load" ]
- },
- options: {
- percent_charge: { color: "00ff00", title: "Charge level", noarea: true, overlay: true },
- percent_load: { color: "ff0000", title: "Load", noarea: true, overlay: true }
+ if ((instances = find_instances('temperature', [ 'battery' ])) != null) {
+ /* Note: This is in ISO8859-1 for rrdtool. Welcome to the 20th century. */
+ definitions.push({
+ title: "%H: Battery temperature on UPS \"%pi\"",
+ vlabel: "\u00b0C",
+ number_format: "%5.1lf\u00b0C",
+ data: {
+ instances: instances,
+ options: {
+ temperature_battery: { color: "ffb000", title: "Battery temperature", noarea: true }
+ }
}
- }
- };
+ });
+ }
- /* Note: This is in ISO8859-1 for rrdtool. Welcome to the 20th century. */
- var temperature = {
- title: "%H: Battery temperature on UPS \"%pi\"",
- vlabel: "\u00b0C",
- number_format: "%5.1lf\u00b0C",
- data: {
- instances: {
- temperature: "battery"
- },
- options: {
- temperature_battery: { color: "ffb000", title: "Battery temperature", noarea: true }
+ if ((instances = find_instances('timeleft', [ 'battery' ])) != null) {
+ definitions.push({
+ title: "%H: Time left on UPS \"%pi\"",
+ vlabel: "Minutes",
+ number_format: "%.1lfm",
+ data: {
+ instances: instances,
+ options: {
+ timeleft_battery: { color: "0000ff", title: "Time left", transform_rpn: "60,/", noarea: true }
+ }
}
- }
- };
+ });
+ }
- var timeleft = {
- title: "%H: Time left on UPS \"%pi\"",
- vlabel: "Minutes",
- number_format: "%.1lfm",
- data: {
- instances: {
- timeleft: [ "battery" ]
- },
- options: {
- timeleft_battery: { color: "0000ff", title: "Time left", transform_rpn: "60,/", noarea: true }
+ if ((instances = find_instances('power', [ 'watt-ups' ])) != null) {
+ definitions.push({
+ title: "%H: Power on UPS \"%pi\"",
+ vlabel: "Watt",
+ number_format: "%5.1lf%%",
+ data: {
+ instances: instances,
+ options: {
+ ['power_watt-ups']: { color: "00ff00", title: "Power level (Watt)" }
+ }
}
- }
- };
+ });
+ }
- var power = {
- title: "%H: Power on UPS \"%pi\"",
- vlabel: "Power",
- number_format: "%5.1lf%%",
- data: {
- instances: {
- power: [ "ups" ]
- },
- options: {
- power_ups: { color: "00ff00", title: "Power level" }
+ if ((instances = find_instances('power', [ 'ups' ])) != null) {
+ definitions.push({
+ title: "%H: Power on UPS \"%pi\"",
+ vlabel: "VA",
+ number_format: "%5.1lf%%",
+ data: {
+ instances: instances,
+ options: {
+ power_ups: { color: "00ff00", title: "Power level (VA)" }
+ }
}
- }
- };
+ });
+ }
- var frequencies = {
- title: "%H: Frequencies on UPS \"%pi\"",
- vlabel: "Hz",
- number_format: "%5.1lfHz",
- data: {
- instances: {
- frequency: [ "input", "output" ]
- },
- options: {
- frequency_output : { color: "00e000", title: "Output frequency", noarea: true, overlay: true },
- frequency_input : { color: "ffb000", title: "Input frequency", noarea: true, overlay: true }
+ if ((instances = find_instances('frequency', [ 'input', 'output' ])) != null) {
+ definitions.push({
+ title: "%H: Frequencies on UPS \"%pi\"",
+ vlabel: "Hz",
+ number_format: "%5.1lfHz",
+ data: {
+ instances: instances,
+ options: {
+ frequency_output : { color: "00e000", title: "Output frequency", noarea: true, overlay: true },
+ frequency_input : { color: "ffb000", title: "Input frequency", noarea: true, overlay: true }
+ }
}
- }
- };
+ });
+ }
- return [ voltages_ac, voltages_dc, currents, percentage, temperature, timeleft, power, frequencies ];
+ return definitions;
}
});