@ -1,7 +1,6 @@
import { identity } from 'lodash' ;
import { identity , isEqual , sortBy } from 'lodash' ;
import { useEffect , useMemo , useRef , useState } from 'react' ;
import * as React from 'react' ;
import { usePrevious } from 'react-use' ;
import {
AbsoluteTimeRange ,
@ -9,7 +8,6 @@ import {
createFieldConfigRegistry ,
DashboardCursorSync ,
DataFrame ,
dateTime ,
EventBus ,
FieldColorModeId ,
FieldConfigSource ,
@ -17,6 +15,7 @@ import {
LoadingState ,
SplitOpen ,
ThresholdsConfig ,
TimeRange ,
} from '@grafana/data' ;
import { PanelRenderer } from '@grafana/runtime' ;
import {
@ -44,7 +43,7 @@ interface Props {
data : DataFrame [ ] ;
height : number ;
width : number ;
absolu teRange : Absolute TimeRange;
tim eRange : TimeRange ;
timeZone : TimeZone ;
loadingState : LoadingState ;
annotations? : DataFrame [ ] ;
@ -67,7 +66,7 @@ export function ExploreGraph({
height ,
width ,
timeZone ,
absolu teRange,
tim eRange ,
onChangeTime ,
loadingState ,
annotations ,
@ -84,19 +83,6 @@ export function ExploreGraph({
toggleLegendRef ,
} : Props ) {
const theme = useTheme2 ( ) ;
const previousTimeRange = usePrevious ( absoluteRange ) ;
const baseTimeRange = loadingState === LoadingState . Loading && previousTimeRange ? previousTimeRange : absoluteRange ;
const timeRange = useMemo (
( ) = > ( {
from : dateTime ( baseTimeRange . from ) ,
to : dateTime ( baseTimeRange . to ) ,
raw : {
from : dateTime ( baseTimeRange . from ) ,
to : dateTime ( baseTimeRange . to ) ,
} ,
} ) ,
[ baseTimeRange . from , baseTimeRange . to ]
) ;
const fieldConfigRegistry = useMemo (
( ) = > createFieldConfigRegistry ( getGraphFieldConfig ( defaultGraphConfig ) , 'Explore' ) ,
@ -156,6 +142,7 @@ export function ExploreGraph({
const structureRev = useStructureRev ( dataWithConfig ) ;
const onHiddenSeriesChangedRef = useRef ( onHiddenSeriesChanged ) ;
const previousHiddenFrames = useRef < string [ ] | undefined > ( undefined ) ;
useEffect ( ( ) = > {
if ( onHiddenSeriesChangedRef . current ) {
@ -166,7 +153,13 @@ export function ExploreGraph({
hiddenFrames . push ( getFrameDisplayName ( frame ) ) ;
}
} ) ;
onHiddenSeriesChangedRef . current ( hiddenFrames ) ;
if (
previousHiddenFrames . current === undefined ||
! isEqual ( sortBy ( hiddenFrames ) , sortBy ( previousHiddenFrames . current ) )
) {
previousHiddenFrames . current = hiddenFrames ;
onHiddenSeriesChangedRef . current ( hiddenFrames ) ;
}
}
} , [ dataWithConfig ] ) ;