123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 |
- /* Licensed to the public under the Apache License 2.0. */
- 'use strict';
- 'require baseclass';
- return baseclass.extend({
- title: _('APC UPS'),
- rrdargs: function(graph, host, plugin, plugin_instance, dtype) {
- var rv = [];
- /*
- * Types and instances supported by APC UPS
- * e.g. ups_types -> [ 'timeleft', 'charge', 'percent', 'voltage' ]
- * e.g. ups_inst['voltage'] -> [ 'input', 'battery' ]
- */
- var ups_types = graph.dataTypes(host, plugin, plugin_instance),
- ups_inst = {};
- for (var i = 0; i < ups_types.length; i++)
- ups_inst[ups_types[i]] = graph.dataInstances(host, plugin, plugin_instance, ups_types[i]);
- /* Check if hash table or array is empty or nil-filled */
- function empty(t) {
- for (var k in t)
- if (t[k] != null)
- return false;
- return true;
- }
- /* Append graph definition but only types/instances which are */
- /* supported and available to the plugin and UPS. */
- function add_supported(t, defs) {
- var def_inst = defs['data']['instances'];
- if (L.isObject(def_inst)) {
- for (var k in def_inst) {
- if (ups_types.filter(function(t) { return t == k }).length) {
- for (var i = def_inst[k].length - 1; i >= 0; i--)
- if (!ups_inst[k].filter(function(n) { return n == def_inst[k][i] }).length)
- def_inst[k].splice(i, 1);
- if (def_inst[k].length == 0)
- def_inst[k] = null; /* can't assign v: immutable */
- }
- else {
- def_inst[k] = null; /* can't assign v: immutable */
- }
- }
- if (empty(def_inst))
- return;
- }
- t.push(defs);
- }
- /* Graph definitions for APC UPS measurements MUST use only 'instances': */
- /* e.g. instances = { voltage = { "input", "output" } } */
- var voltagesdc = {
- title: "%H: Voltages on APC UPS - Battery",
- vlabel: "Volts DC",
- alt_autoscale: true,
- number_format: "%5.1lfV",
- data: {
- instances: {
- voltage: [ "battery" ]
- },
- options: {
- voltage: { title: "Battery voltage", noarea: true }
- }
- }
- };
- add_supported(rv, voltagesdc);
- var voltagesac = {
- title: "%H: Voltages on APC UPS - AC",
- vlabel: "Volts AC",
- alt_autoscale: true,
- 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 }
- }
- }
- };
- add_supported(rv, voltagesac);
- var percentload = {
- title: "%H: Load on APC UPS ",
- vlabel: "Percent",
- y_min: "0",
- y_max: "100",
- number_format: "%5.1lf%%",
- data: {
- instances: {
- percent: [ "load" ]
- },
- options: {
- percent_load: { color: "00ff00", title: "Load level" }
- }
- }
- };
- add_supported(rv, percentload);
- var charge_percent = {
- title: "%H: Battery charge on APC UPS ",
- vlabel: "Percent",
- y_min: "0",
- y_max: "100",
- number_format: "%5.1lf%%",
- data: {
- instances: {
- charge: [ "" ]
- },
- options: {
- charge: { color: "00ff0b", title: "Charge level" }
- }
- }
- };
- add_supported(rv, charge_percent);
- var temperature = {
- title: "%H: Battery temperature on APC UPS ",
- vlabel: "\u00b0C",
- number_format: "%5.1lf\u00b0C",
- data: {
- instances: {
- temperature: [ "" ]
- },
- options: {
- temperature: { color: "ffb000", title: "Battery temperature" } }
- }
- };
- add_supported(rv, temperature);
- var timeleft = {
- title: "%H: Time left on APC UPS ",
- vlabel: "Minutes",
- number_format: "%.1lfm",
- data: {
- instances: {
- timeleft: [ "" ]
- },
- options: {
- timeleft: { color: "0000ff", title: "Time left" }
- }
- }
- };
- add_supported(rv, timeleft);
- var frequency = {
- title: "%H: Incoming line frequency on APC UPS ",
- vlabel: "Hz",
- number_format: "%5.0lfhz",
- data: {
- instances: {
- frequency: [ "input" ]
- },
- options: {
- frequency_input: { color: "000fff", title: "Line frequency" }
- }
- }
- };
- add_supported(rv, frequency);
- return rv;
- }
- });
|