grafana/public/app/features/dashboard/components/PanelEditor/usePanelLatestData.ts
Dominik Prokop eae11f53f3
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

* Review
2020-04-22 19:21:48 +02:00

32 lines
870 B
TypeScript

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),
];
};