mirror of https://github.com/grafana/grafana
Transformations: Make sidebar subscribe to panel's query runner (#23785)
* Make panel edit sidebar options use lates data from panel query runner * Update select's z-index * Reviewpull/23747/head^2
parent
45dfa20467
commit
eae11f53f3
@ -0,0 +1,31 @@ |
||||
import { PanelData } from '@grafana/data'; |
||||
import { useEffect, useRef, useState } from 'react'; |
||||
import { PanelModel } from '../../state'; |
||||
import { Unsubscribable } from 'rxjs'; |
||||
|
||||
export const usePanelLatestData = (panel: PanelModel): [PanelData | null, boolean] => { |
||||
const querySubscription = useRef<Unsubscribable>(null); |
||||
const [latestData, setLatestData] = useState<PanelData>(null); |
||||
|
||||
useEffect(() => { |
||||
querySubscription.current = panel |
||||
.getQueryRunner() |
||||
.getData() |
||||
.subscribe({ |
||||
next: data => setLatestData(data), |
||||
}); |
||||
|
||||
return () => { |
||||
if (querySubscription.current) { |
||||
console.log('unsubscribing'); |
||||
querySubscription.current.unsubscribe(); |
||||
} |
||||
}; |
||||
}, [panel]); |
||||
|
||||
return [ |
||||
latestData, |
||||
// TODO: make this more clever, use PanelData.state
|
||||
!!(latestData && latestData.series), |
||||
]; |
||||
}; |
||||
Loading…
Reference in new issue