178 lines
4 KiB
JavaScript
178 lines
4 KiB
JavaScript
/* 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;
|
|
}
|
|
});
|