Skip to content

Commit fd0c354

Browse files
fix for issue #1158
1 parent 7eb2405 commit fd0c354

File tree

1 file changed

+60
-22
lines changed

1 file changed

+60
-22
lines changed

root/thruk/javascript/thruk-2.46.3.js

+60-22
Original file line numberDiff line numberDiff line change
@@ -4273,53 +4273,91 @@ function perf_table(write, state, plugin_output, perfdata, check_command, pnp_ur
42734273
/* figures out where warning/critical values should go
42744274
* on the perfbars
42754275
*/
4276-
function plot_point(value, max, size) {
4277-
return(Math.round((Math.abs(value) / max * 100) / 100 * size));
4276+
function plot_point(value, min, max, size) {
4277+
diff = max - min;
4278+
value = value - min;
4279+
//console.log(Math.round(value * size / diff));
4280+
return(Math.round(value * size / diff));
42784281
}
42794282

42804283
/* return human readable perfdata */
42814284
function perf_parse_data(check_command, state, plugin_output, perfdata) {
42824285
var size = 75;
42834286
var result = [];
42844287
var worst_graphs = {};
4288+
var min = '';
4289+
var max = '';
42854290
for(var nr=0; nr<perfdata.length; nr++) {
42864291
var d = perfdata[nr];
4287-
if(d.max == '' && d.unit == '%') { d.max = 100; }
4288-
if(d.max == '' && d.crit_max != '') { d.max = d.crit_max; }
4289-
if(d.max == '' && d.warn_max != '') { d.max = d.warn_max; }
4290-
if(d.val !== '' && d.max !== '') {
4291-
var perc = (Math.abs(d.val) / (d.max-d.min) * 100).toFixed(2);
4292-
if(perc < 5) { perc = 5; }
4293-
if(perc > 100) { perc = 100; }
4292+
4293+
if (d.max !== '') { max = d.max; }
4294+
if (d.min !== '') { min = d.min; }
4295+
4296+
if(max == '' && d.unit == '%') { max = 100; }
4297+
if(max == '' && d.crit_max != '') { max = d.crit_max+0.15*(d.crit_max-d.crit_min); }
4298+
if(max == '' && d.warn_max != '') { max = d.warn_max+0.15*(d.crit_max-d.crit_min); }
4299+
if(min == '' && d.unit == '%') { min = 0; }
4300+
if(min == '' && d.crit_min != '') { min = d.crit_min-0.15*(d.crit_max-d.crit_min); }
4301+
if(min == '' && d.warn_min != '') { min = d.warn_min-0.15*(d.crit_max-d.crit_min); }
4302+
4303+
if(d.val !== '' && max !== '') {
4304+
var perc = plot_point(d.val, min, max, size);
4305+
//console.log(JSON.stringify(d));
4306+
42944307
var pic = 'thermok.png';
4295-
if(state == 1) { var pic = 'thermwarn.png'; }
4296-
if(state == 2) { var pic = 'thermcrit.png'; }
4297-
if(state == 4) { var pic = 'thermgrey.png'; }
4298-
perc = Math.round(perc / 100 * size);
4308+
4309+
if (d.crit_max && d.crit_min && d.warn_max && d.warn_min) { /* range */
4310+
if (d.crit_max > d.warn_max) { /* alert if outside range */
4311+
if (d.val <= d.warn_min) { var pic = 'thermwarn.png'; }
4312+
if (d.val <= d.crit_min) { var pic = 'thermcrit.png'; }
4313+
if (d.val >= d.warn_max) { var pic = 'thermwarn.png'; }
4314+
if (d.val >= d.crit_max) { var pic = 'thermcrit.png'; }
4315+
}
4316+
if (d.crit_max < d.warn_max) { /* alert if inside range */
4317+
if (d.val >= d.warn_min) { var pic = 'thermwarn.png'; }
4318+
if (d.val >= d.crit_min) { var pic = 'thermcrit.png'; }
4319+
if (d.val <= d.warn_max) { var pic = 'thermwarn.png'; }
4320+
if (d.val <= d.crit_max) { var pic = 'thermcrit.png'; }
4321+
}
4322+
}
4323+
if (d.crit_max && !d.crit_min && d.warn_max && !d.warn_min) {
4324+
if (d.crit_max > d.warn_max) { /* alert if above threshold */
4325+
if (d.val >= d.warn_max) { var pic = 'thermwarn.png'; }
4326+
if (d.val >= d.crit_max) { var pic = 'thermcrit.png'; }
4327+
}
4328+
if (d.crit_max < d.warn_max) { /* alert if below threshold */
4329+
if (d.val <= d.warn_max) { var pic = 'thermwarn.png'; }
4330+
if (d.val <= d.crit_max) { var pic = 'thermcrit.png'; }
4331+
}
4332+
}
4333+
4334+
if(perc <= 3) { perc = 3; }
4335+
if(perc >= size-3) { perc = size-3; }
4336+
42994337
var warn_perc_min = null;
4300-
if(d.warn_min != '' && d.warn_min > d.min) {
4301-
warn_perc_min = plot_point(d.warn_min, d.max, size);
4338+
if(d.warn_min != '' && d.warn_min > min) {
4339+
warn_perc_min = plot_point(d.warn_min, min, max, size);
43024340
if(warn_perc_min == 0) {warn_perc_min = null;}
43034341
}
43044342
var crit_perc_min = null;
4305-
if(d.crit_min != '' && d.crit_min > d.min) {
4306-
crit_perc_min = plot_point(d.crit_min, d.max, size);
4343+
if(d.crit_min != '' && d.crit_min > min) {
4344+
crit_perc_min = plot_point(d.crit_min, min, max, size)
43074345
if(crit_perc_min == 0) {crit_perc_min = null;}
43084346
if(crit_perc_min == warn_perc_min) {warn_perc_min = null;}
43094347
}
43104348
var warn_perc_max = null;
4311-
if(d.warn_max != '' && d.warn_max < d.max) {
4312-
warn_perc_max = plot_point(d.warn_max, d.max, size);
4349+
if(d.warn_max != '' && d.warn_max < max) {
4350+
warn_perc_max = plot_point(d.warn_max, min, max, size);
43134351
if(warn_perc_max == size) {warn_perc_max = null;}
43144352
}
43154353
var crit_perc_max = null;
4316-
if(d.crit_max != '' && d.crit_max < d.max) {
4317-
crit_perc_max = plot_point(d.crit_max, d.max, size);
4354+
if(d.crit_max != '' && d.crit_max < max) {
4355+
crit_perc_max = plot_point(d.crit_max, min, max, size)
43184356
if(crit_perc_max == size) {crit_perc_max = null;}
43194357
if(crit_perc_max == warn_perc_max) {warn_perc_max = null;}
43204358
}
43214359
var graph = {
4322-
title: d.key + ': ' + perf_reduce(d.val, d.unit) + ' of ' + perf_reduce(d.max, d.unit),
4360+
title: d.key + ': ' + perf_reduce(d.val, d.unit) + ((d.max) ? ' of ' + perf_reduce(d.max, d.unit) : ''),
43234361
div_width: size,
43244362
img_width: perc,
43254363
pic: pic,

0 commit comments

Comments
 (0)