@ -2,16 +2,19 @@
import React , { ComponentClass , PureComponent } from 'react' ;
// Services
import { getTimeSrv } from '../time_srv' ;
import { getTimeSrv , TimeSrv } from '../time_srv' ;
// Components
import { PanelHeader } from './PanelHeader/PanelHeader' ;
import { DataPanel } from './DataPanel' ;
// Utils
import { applyPanelTimeOverrides } from 'app/features/dashboard/utils/panel' ;
// Types
import { PanelModel } from '../panel_model' ;
import { DashboardModel } from '../dashboard_model' ;
import { TimeRange , PanelProps } from 'app/types' ;
import { TimeData , PanelProps } from 'app/types' ;
export interface Props {
panel : PanelModel ;
@ -22,16 +25,22 @@ export interface Props {
export interface State {
refreshCounter : number ;
renderCounter : number ;
timeRange? : TimeRange ;
timeData : TimeData ;
}
export class PanelChrome extends PureComponent < Props , State > {
timeSrv : TimeSrv = getTimeSrv ( ) ;
constructor ( props ) {
super ( props ) ;
this . state = {
refreshCounter : 0 ,
renderCounter : 0 ,
timeData : {
timeInfo : '' ,
timeRange : this.timeSrv.timeRange ( ) ,
} ,
} ;
}
@ -46,13 +55,18 @@ export class PanelChrome extends PureComponent<Props, State> {
}
onRefresh = ( ) = > {
const timeSrv = getTimeSrv ( ) ;
const timeRange = timeSrv . timeRange ( ) ;
console . log ( 'onRefresh' ) ;
if ( ! this . isVisible ) {
return ;
}
const currTimeData = this . state . timeData ;
const { panel } = this . props ;
const timeData = applyPanelTimeOverrides ( panel , currTimeData ) ;
this . setState ( prevState = > ( {
. . . prevState ,
refreshCounter : this.state.refreshCounter + 1 ,
timeRange : timeRange ,
timeData ,
} ) ) ;
} ;
@ -70,7 +84,7 @@ export class PanelChrome extends PureComponent<Props, State> {
render() {
const { panel , dashboard } = this . props ;
const { refreshCounter , timeRange , renderCounter } = this . state ;
const { refreshCounter , timeData , renderCounter } = this . state ;
const { datasource , targets } = panel ;
const PanelComponent = this . props . component ;
@ -78,12 +92,12 @@ export class PanelChrome extends PureComponent<Props, State> {
console . log ( 'panelChrome render' ) ;
return (
< div className = "panel-container" >
< PanelHeader panel = { panel } dashboard = { dashboard } / >
< PanelHeader panel = { panel } dashboard = { dashboard } timeInfo = { timeData . timeInfo } / >
< div className = "panel-content" >
< DataPanel
datasource = { datasource }
queries = { targets }
timeRange = { timeRange }
timeRange = { timeData . time Range }
isVisible = { this . isVisible }
refreshCounter = { refreshCounter }
>
@ -93,7 +107,7 @@ export class PanelChrome extends PureComponent<Props, State> {
< PanelComponent
loading = { loading }
timeSeries = { timeSeries }
timeRange = { timeRange }
timeRange = { timeData . time Range }
options = { panel . getOptions ( ) }
renderCounter = { renderCounter }
/ >