diff options
author | Jo-Philipp Wich <jo@mein.io> | 2023-04-03 12:45:50 +0200 |
---|---|---|
committer | Jo-Philipp Wich <jo@mein.io> | 2023-04-03 12:47:47 +0200 |
commit | dd1111407d8f0b1f7f761c5ebbe6ae43a268a4a4 (patch) | |
tree | 41e8984ccc8921babdfdc319204c5d90e3d8647f /applications/luci-app-statistics/htdocs/luci-static/resources/statistics | |
parent | 6b9a985fa7faecadb84a53fb85d7afa8791e93f1 (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.js | 233 |
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; } }); |