|
|
|
@ -3,6 +3,7 @@ import $ from 'jquery'; |
|
|
|
|
import 'vendor/flot/jquery.flot'; |
|
|
|
|
import 'vendor/flot/jquery.flot.gauge'; |
|
|
|
|
import 'app/features/panel/panellinks/link_srv'; |
|
|
|
|
import { getDecimalsForValue } from '@grafana/ui'; |
|
|
|
|
|
|
|
|
|
import kbn from 'app/core/utils/kbn'; |
|
|
|
|
import config from 'app/core/config'; |
|
|
|
@ -190,7 +191,7 @@ class SingleStatCtrl extends MetricsPanelCtrl { |
|
|
|
|
data.value = 0; |
|
|
|
|
data.valueRounded = 0; |
|
|
|
|
} else { |
|
|
|
|
const decimalInfo = this.getDecimalsForValue(data.value); |
|
|
|
|
const decimalInfo = getDecimalsForValue(data.value); |
|
|
|
|
const formatFunc = getValueFormat(this.panel.format); |
|
|
|
|
|
|
|
|
|
data.valueFormatted = formatFunc( |
|
|
|
@ -243,47 +244,6 @@ class SingleStatCtrl extends MetricsPanelCtrl { |
|
|
|
|
this.render(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
getDecimalsForValue(value) { |
|
|
|
|
if (_.isNumber(this.panel.decimals)) { |
|
|
|
|
return { decimals: this.panel.decimals, scaledDecimals: null }; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
const delta = value / 2; |
|
|
|
|
let dec = -Math.floor(Math.log(delta) / Math.LN10); |
|
|
|
|
|
|
|
|
|
const magn = Math.pow(10, -dec); |
|
|
|
|
const norm = delta / magn; // norm is between 1.0 and 10.0
|
|
|
|
|
let size; |
|
|
|
|
|
|
|
|
|
if (norm < 1.5) { |
|
|
|
|
size = 1; |
|
|
|
|
} else if (norm < 3) { |
|
|
|
|
size = 2; |
|
|
|
|
// special case for 2.5, requires an extra decimal
|
|
|
|
|
if (norm > 2.25) { |
|
|
|
|
size = 2.5; |
|
|
|
|
++dec; |
|
|
|
|
} |
|
|
|
|
} else if (norm < 7.5) { |
|
|
|
|
size = 5; |
|
|
|
|
} else { |
|
|
|
|
size = 10; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
size *= magn; |
|
|
|
|
|
|
|
|
|
// reduce starting decimals if not needed
|
|
|
|
|
if (Math.floor(value) === value) { |
|
|
|
|
dec = 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
const result: any = {}; |
|
|
|
|
result.decimals = Math.max(0, dec); |
|
|
|
|
result.scaledDecimals = result.decimals - Math.floor(Math.log(size) / Math.LN10) + 2; |
|
|
|
|
|
|
|
|
|
return result; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
setValues(data) { |
|
|
|
|
data.flotpairs = []; |
|
|
|
|
|
|
|
|
@ -319,7 +279,7 @@ class SingleStatCtrl extends MetricsPanelCtrl { |
|
|
|
|
data.value = this.series[0].stats[this.panel.valueName]; |
|
|
|
|
data.flotpairs = this.series[0].flotpairs; |
|
|
|
|
|
|
|
|
|
const decimalInfo = this.getDecimalsForValue(data.value); |
|
|
|
|
const decimalInfo = getDecimalsForValue(data.value); |
|
|
|
|
|
|
|
|
|
data.valueFormatted = formatFunc( |
|
|
|
|
data.value, |
|
|
|
|