diff --git a/ui/src/dashboards/components/DashboardHeader.tsx b/ui/src/dashboards/components/DashboardHeader.tsx index 6bf7ee963..a046be369 100644 --- a/ui/src/dashboards/components/DashboardHeader.tsx +++ b/ui/src/dashboards/components/DashboardHeader.tsx @@ -15,6 +15,10 @@ import * as AppActions from 'src/types/actions/app' import * as DashboardsModels from 'src/types/dashboards' import * as QueriesModels from 'src/types/queries' +interface State { + selected: QueriesModels.TimeRange +} + interface Props { activeDashboard: string dashboard: DashboardsModels.Dashboard @@ -33,7 +37,7 @@ interface Props { isHidden: boolean } -class DashboardHeader extends Component { +class DashboardHeader extends Component { public static defaultProps: Partial = { zoomedTimeRange: { upper: null, @@ -41,6 +45,29 @@ class DashboardHeader extends Component { }, } + public static getDerivedStateFromProps(props: Props): Partial { + const {upper, lower} = props.zoomedTimeRange + + if (upper || lower) { + return {selected: {upper, lower}} + } + + return {} + } + + constructor(props: Props) { + super(props) + + const {timeRange, zoomedTimeRange} = props + + this.state = { + selected: { + upper: timeRange.upper || zoomedTimeRange.upper, + lower: timeRange.lower || zoomedTimeRange.lower, + }, + } + } + public render() { const {isHidden} = this.props @@ -65,14 +92,9 @@ class DashboardHeader extends Component { } private get optionsComponents(): JSX.Element { - const { - handleChooseAutoRefresh, - onManualRefresh, - autoRefresh, - handleChooseTimeRange, - timeRange: {upper, lower}, - zoomedTimeRange: {upper: zoomedUpper, lower: zoomedLower}, - } = this.props + const {handleChooseAutoRefresh, onManualRefresh, autoRefresh} = this.props + + const {selected} = this.state return ( <> @@ -86,11 +108,8 @@ class DashboardHeader extends Component { iconName="refresh" />