mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Timeseries: Migrate legend hideFrom (#67305)
This commit is contained in:
parent
d80d984b52
commit
81792a8dce
@ -1,6 +1,6 @@
|
|||||||
import { cloneDeep } from 'lodash';
|
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 { TooltipDisplayMode, SortOrder } from '@grafana/schema';
|
||||||
|
|
||||||
import { graphPanelChangedHandler } from './migrations';
|
import { graphPanelChangedHandler } from './migrations';
|
||||||
@ -144,6 +144,116 @@ describe('Graph Migrations', () => {
|
|||||||
panel.options = graphPanelChangedHandler(panel, 'graph', old, prevFieldConfig);
|
panel.options = graphPanelChangedHandler(panel, 'graph', old, prevFieldConfig);
|
||||||
expect(panel.options.legend.width).toBe(200);
|
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', () => {
|
describe('stacking', () => {
|
||||||
|
@ -12,6 +12,7 @@ import {
|
|||||||
FieldType,
|
FieldType,
|
||||||
NullValueMode,
|
NullValueMode,
|
||||||
PanelTypeChangedHandler,
|
PanelTypeChangedHandler,
|
||||||
|
ReducerID,
|
||||||
Threshold,
|
Threshold,
|
||||||
ThresholdsMode,
|
ThresholdsMode,
|
||||||
} from '@grafana/data';
|
} from '@grafana/data';
|
||||||
@ -30,6 +31,7 @@ import {
|
|||||||
StackingMode,
|
StackingMode,
|
||||||
SortOrder,
|
SortOrder,
|
||||||
GraphTransform,
|
GraphTransform,
|
||||||
|
ComparisonOperation,
|
||||||
} from '@grafana/schema';
|
} from '@grafana/schema';
|
||||||
|
|
||||||
import { defaultGraphConfig } from './config';
|
import { defaultGraphConfig } from './config';
|
||||||
@ -350,6 +352,14 @@ export function graphToTimeseriesOptions(angular: any): { fieldConfig: FieldConf
|
|||||||
if (angular.legend.sideWidth) {
|
if (angular.legend.sideWidth) {
|
||||||
options.legend.width = 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;
|
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,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user