mirror of https://github.com/grafana/grafana.git
				
				
				
			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