Timeseries: Migrate legend hideFrom (#67305)

This commit is contained in:
Adela Almasan 2023-04-26 15:46:18 -05:00 committed by GitHub
parent d80d984b52
commit 81792a8dce
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 144 additions and 1 deletions

View File

@ -1,6 +1,6 @@
import { cloneDeep } from 'lodash';
import { PanelModel, FieldConfigSource, FieldMatcherID } from '@grafana/data';
import { PanelModel, FieldConfigSource, FieldMatcherID, ReducerID } from '@grafana/data';
import { TooltipDisplayMode, SortOrder } from '@grafana/schema';
import { graphPanelChangedHandler } from './migrations';
@ -144,6 +144,116 @@ describe('Graph Migrations', () => {
panel.options = graphPanelChangedHandler(panel, 'graph', old, prevFieldConfig);
expect(panel.options.legend.width).toBe(200);
});
test('hide allZeros', () => {
const old = {
angular: {
legend: {
show: true,
values: false,
min: false,
max: false,
current: false,
total: false,
avg: false,
hideZero: true,
},
},
};
const panel = {} as PanelModel;
panel.options = graphPanelChangedHandler(panel, 'graph', old, prevFieldConfig);
expect(panel.fieldConfig.overrides).toHaveLength(1);
expect(panel.fieldConfig.overrides[0].matcher.options.reducer).toBe(ReducerID.allIsZero);
expect(panel.fieldConfig.overrides).toMatchInlineSnapshot(`
[
{
"matcher": {
"id": "byValue",
"options": {
"op": "gte",
"reducer": "allIsZero",
"value": 0,
},
},
"properties": [
{
"id": "custom.hideFrom",
"value": {
"legend": true,
"tooltip": true,
"viz": false,
},
},
],
},
]
`);
});
test('hide allZeros allNulls', () => {
const old = {
angular: {
legend: {
show: true,
values: false,
min: false,
max: false,
current: false,
total: false,
avg: false,
hideEmpty: true,
hideZero: true,
},
},
};
const panel = {} as PanelModel;
panel.options = graphPanelChangedHandler(panel, 'graph', old, prevFieldConfig);
expect(panel.fieldConfig.overrides).toHaveLength(2);
expect(panel.fieldConfig.overrides).toMatchInlineSnapshot(`
[
{
"matcher": {
"id": "byValue",
"options": {
"op": "gte",
"reducer": "allIsZero",
"value": 0,
},
},
"properties": [
{
"id": "custom.hideFrom",
"value": {
"legend": true,
"tooltip": true,
"viz": false,
},
},
],
},
{
"matcher": {
"id": "byValue",
"options": {
"op": "gte",
"reducer": "allIsNull",
"value": 0,
},
},
"properties": [
{
"id": "custom.hideFrom",
"value": {
"legend": true,
"tooltip": true,
"viz": false,
},
},
],
},
]
`);
});
});
describe('stacking', () => {

View File

@ -12,6 +12,7 @@ import {
FieldType,
NullValueMode,
PanelTypeChangedHandler,
ReducerID,
Threshold,
ThresholdsMode,
} from '@grafana/data';
@ -30,6 +31,7 @@ import {
StackingMode,
SortOrder,
GraphTransform,
ComparisonOperation,
} from '@grafana/schema';
import { defaultGraphConfig } from './config';
@ -350,6 +352,14 @@ export function graphToTimeseriesOptions(angular: any): { fieldConfig: FieldConf
if (angular.legend.sideWidth) {
options.legend.width = angular.legend.sideWidth;
}
if (legendConfig.hideZero) {
overrides.push(getLegendHideFromOverride(ReducerID.allIsZero));
}
if (legendConfig.hideEmpty) {
overrides.push(getLegendHideFromOverride(ReducerID.allIsNull));
}
}
const tooltipConfig = angular.tooltip;
@ -614,3 +624,26 @@ function migrateHideFrom(panel: {
});
}
}
function getLegendHideFromOverride(reducer: ReducerID.allIsZero | ReducerID.allIsNull) {
return {
matcher: {
id: FieldMatcherID.byValue,
options: {
reducer: reducer,
op: ComparisonOperation.GTE,
value: 0,
},
},
properties: [
{
id: 'custom.hideFrom',
value: {
tooltip: true,
viz: false,
legend: true,
},
},
],
};
}