Singlestat: Fixed unit not showing and switched to new unit picker (#20892)

This commit is contained in:
Torkel Ödegaard
2019-12-05 11:54:14 +01:00
committed by GitHub
parent 87485e24a4
commit 20fad92a80
4 changed files with 19 additions and 18 deletions
@@ -11,7 +11,7 @@ interface Props {
} }
function formatCreateLabel(input: string) { function formatCreateLabel(input: string) {
return `Unit suffix: ${input}`; return `Custom unit: ${input}`;
} }
export class UnitPicker extends PureComponent<Props> { export class UnitPicker extends PureComponent<Props> {
@@ -1,10 +1,8 @@
import { getValueFormats } from '@grafana/data';
import { GraphCtrl } from './module'; import { GraphCtrl } from './module';
export class AxesEditorCtrl { export class AxesEditorCtrl {
panel: any; panel: any;
panelCtrl: GraphCtrl; panelCtrl: GraphCtrl;
unitFormats: any;
logScales: any; logScales: any;
xAxisModes: any; xAxisModes: any;
xAxisStatOptions: any; xAxisStatOptions: any;
@@ -16,8 +14,6 @@ export class AxesEditorCtrl {
this.panel = this.panelCtrl.panel; this.panel = this.panelCtrl.panel;
this.$scope.ctrl = this; this.$scope.ctrl = this;
this.unitFormats = getValueFormats();
this.logScales = { this.logScales = {
linear: 1, linear: 1,
'log (base 2)': 2, 'log (base 2)': 2,
@@ -5,7 +5,7 @@
<p> <p>
Gauge visualizations within the Singlestat panel are deprecated. Please Gauge visualizations within the Singlestat panel are deprecated. Please
migrate this panel to use the Gauge panel migrate this panel to use the Gauge panel
<div class="gf-form-button-row"> <div class="gf-form-button-row">
<button class="btn btn-primary" ng-click="ctrl.migrateToGaugePanel(true)"> <button class="btn btn-primary" ng-click="ctrl.migrateToGaugePanel(true)">
Migrate to Gauge Panel Migrate to Gauge Panel
@@ -14,9 +14,9 @@
Show as single stat Show as single stat
</button> </button>
</div> </div>
<br/> <br/>
<div ng-if="ctrl.panel.sparkline.show"> <div ng-if="ctrl.panel.sparkline.show">
<b>NOTE:</b> Sparklines are not supported in the gauge panel <b>NOTE:</b> Sparklines are not supported in the gauge panel
</div> </div>
@@ -34,7 +34,7 @@
</div> </div>
</p> </p>
</div> </div>
<div class="section gf-form-group"> <div class="section gf-form-group">
<h5 class="section-heading">Value</h5> <h5 class="section-heading">Value</h5>
@@ -88,7 +88,7 @@
</div> </div>
<div class="gf-form"> <div class="gf-form">
<label class="gf-form-label width-6">Unit</label> <label class="gf-form-label width-6">Unit</label>
<div class="gf-form-dropdown-typeahead width-18" ng-model="ctrl.panel.format" dropdown-typeahead2="ctrl.unitFormats" dropdown-typeahead-on-select="ctrl.setUnitFormat($subItem)"></div> <unit-picker onChange="ctrl.setUnitFormat()" value="ctrl.panel.format" width="18" />
</div> </div>
<div class="gf-form"> <div class="gf-form">
<label class="gf-form-label width-6">Decimals</label> <label class="gf-form-label width-6">Decimals</label>
+13 -8
View File
@@ -21,12 +21,12 @@ import {
getDisplayProcessor, getDisplayProcessor,
getColorFromHexRgbOrName, getColorFromHexRgbOrName,
PanelEvents, PanelEvents,
formattedValueToString,
} from '@grafana/data'; } from '@grafana/data';
import { convertOldAngularValueMapping } from '@grafana/ui'; import { convertOldAngularValueMapping } from '@grafana/ui';
import { CoreEvents } from 'app/types'; import { CoreEvents } from 'app/types';
import kbn from 'app/core/utils/kbn';
import config from 'app/core/config'; import config from 'app/core/config';
import { MetricsPanelCtrl } from 'app/plugins/sdk'; import { MetricsPanelCtrl } from 'app/plugins/sdk';
import { LinkSrv } from 'app/features/panel/panellinks/link_srv'; import { LinkSrv } from 'app/features/panel/panellinks/link_srv';
@@ -52,7 +52,6 @@ class SingleStatCtrl extends MetricsPanelCtrl {
data: Partial<ShowData> = {}; data: Partial<ShowData> = {};
fontSizes: any[]; fontSizes: any[];
unitFormats: any[];
fieldNames: string[] = []; fieldNames: string[] = [];
invalidGaugeRange: boolean; invalidGaugeRange: boolean;
@@ -137,7 +136,6 @@ class SingleStatCtrl extends MetricsPanelCtrl {
this.fontSizes = ['20%', '30%', '50%', '70%', '80%', '100%', '110%', '120%', '150%', '170%', '200%']; this.fontSizes = ['20%', '30%', '50%', '70%', '80%', '100%', '110%', '120%', '150%', '170%', '200%'];
this.addEditorTab('Options', 'public/app/plugins/panel/singlestat/editor.html', 2); this.addEditorTab('Options', 'public/app/plugins/panel/singlestat/editor.html', 2);
this.addEditorTab('Value Mappings', 'public/app/plugins/panel/singlestat/mappings.html', 3); this.addEditorTab('Value Mappings', 'public/app/plugins/panel/singlestat/mappings.html', 3);
this.unitFormats = kbn.getUnitFormats();
} }
migrateToGaugePanel(migrate: boolean) { migrateToGaugePanel(migrate: boolean) {
@@ -149,9 +147,11 @@ class SingleStatCtrl extends MetricsPanelCtrl {
} }
} }
setUnitFormat(subItem: { value: any }) { setUnitFormat() {
this.panel.format = subItem.value; return (unit: string) => {
this.refresh(); this.panel.format = unit;
this.refresh();
};
} }
onSnapshotLoad(dataList: LegacyResponseData[]) { onSnapshotLoad(dataList: LegacyResponseData[]) {
@@ -371,7 +371,12 @@ class SingleStatCtrl extends MetricsPanelCtrl {
body += getSpan('singlestat-panel-prefix', panel.prefixFontSize, panel.colorPrefix, panel.prefix); body += getSpan('singlestat-panel-prefix', panel.prefixFontSize, panel.colorPrefix, panel.prefix);
} }
body += getSpan('singlestat-panel-value', panel.valueFontSize, panel.colorValue, data.display.text); body += getSpan(
'singlestat-panel-value',
panel.valueFontSize,
panel.colorValue,
formattedValueToString(data.display)
);
if (panel.postfix) { if (panel.postfix) {
body += getSpan('singlestat-panel-postfix', panel.postfixFontSize, panel.colorPostfix, panel.postfix); body += getSpan('singlestat-panel-postfix', panel.postfixFontSize, panel.colorPostfix, panel.postfix);
@@ -385,7 +390,7 @@ class SingleStatCtrl extends MetricsPanelCtrl {
function getValueText() { function getValueText() {
const data: ShowData = ctrl.data; const data: ShowData = ctrl.data;
let result = panel.prefix ? templateSrv.replace(panel.prefix, data.scopedVars) : ''; let result = panel.prefix ? templateSrv.replace(panel.prefix, data.scopedVars) : '';
result += data.display.text; result += formattedValueToString(data.display);
result += panel.postfix ? templateSrv.replace(panel.postfix, data.scopedVars) : ''; result += panel.postfix ? templateSrv.replace(panel.postfix, data.scopedVars) : '';
return result; return result;