mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Fixes #15477
This commit is contained in:
parent
abddb442a1
commit
92972eed7b
@ -10,6 +10,20 @@ describe('PanelModel', () => {
|
||||
type: 'table',
|
||||
showColumns: true,
|
||||
targets: [{ refId: 'A' }, { noRefId: true }],
|
||||
options: {
|
||||
thresholds: [
|
||||
{
|
||||
color: '#F2495C',
|
||||
index: 1,
|
||||
value: 50,
|
||||
},
|
||||
{
|
||||
color: '#73BF69',
|
||||
index: 0,
|
||||
value: null,
|
||||
},
|
||||
],
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
@ -35,6 +49,21 @@ describe('PanelModel', () => {
|
||||
expect(saveModel.events).toBe(undefined);
|
||||
});
|
||||
|
||||
it('should restore -Infinity value for base threshold', () => {
|
||||
expect(model.options.thresholds).toEqual([
|
||||
{
|
||||
color: '#F2495C',
|
||||
index: 1,
|
||||
value: 50,
|
||||
},
|
||||
{
|
||||
color: '#73BF69',
|
||||
index: 0,
|
||||
value: -Infinity,
|
||||
},
|
||||
]);
|
||||
});
|
||||
|
||||
describe('when changing panel type', () => {
|
||||
beforeEach(() => {
|
||||
model.changeType('graph', true);
|
||||
|
@ -3,7 +3,7 @@ import _ from 'lodash';
|
||||
|
||||
// Types
|
||||
import { Emitter } from 'app/core/utils/emitter';
|
||||
import { DataQuery, TimeSeries } from '@grafana/ui';
|
||||
import { DataQuery, TimeSeries, Threshold } from '@grafana/ui';
|
||||
import { TableData } from '@grafana/ui/src';
|
||||
|
||||
export interface GridPos {
|
||||
@ -91,7 +91,9 @@ export class PanelModel {
|
||||
timeFrom?: any;
|
||||
timeShift?: any;
|
||||
hideTimeOverride?: any;
|
||||
options: object;
|
||||
options: {
|
||||
[key: string]: any;
|
||||
};
|
||||
|
||||
maxDataPoints?: number;
|
||||
interval?: string;
|
||||
@ -119,6 +121,8 @@ export class PanelModel {
|
||||
_.defaultsDeep(this, _.cloneDeep(defaults));
|
||||
// queries must have refId
|
||||
this.ensureQueryIds();
|
||||
|
||||
this.restoreInfintyForThresholds();
|
||||
}
|
||||
|
||||
ensureQueryIds() {
|
||||
@ -131,6 +135,19 @@ export class PanelModel {
|
||||
}
|
||||
}
|
||||
|
||||
restoreInfintyForThresholds() {
|
||||
if (this.options && this.options.thresholds) {
|
||||
this.options.thresholds = this.options.thresholds.map((threshold: Threshold) => {
|
||||
// JSON serialization of -Infinity is 'null' so lets convert it back to -Infinity
|
||||
if (threshold.index === 0 && threshold.value === null) {
|
||||
return { ...threshold, value: -Infinity };
|
||||
}
|
||||
|
||||
return threshold;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
getOptions(panelDefaults) {
|
||||
return _.defaultsDeep(this.options || {}, panelDefaults);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user