import { Component } from 'react'; import { Subscription } from 'rxjs'; import { EventBus, LegacyGraphHoverEvent, LegacyGraphHoverClearEvent, DataHoverEvent, DataHoverClearEvent, BusEventBase, } from '@grafana/data'; import { Trans } from '@grafana/i18n'; import { CustomScrollbar } from '@grafana/ui'; import { DataHoverView } from 'app/features/visualization/data-hover/DataHoverView'; interface Props { eventBus: EventBus; } interface State { event?: BusEventBase; } export class CursorView extends Component { subscription = new Subscription(); state: State = {}; componentDidMount() { const { eventBus } = this.props; this.subscription.add( eventBus.subscribe(DataHoverEvent, (event) => { this.setState({ event }); }) ); this.subscription.add( eventBus.subscribe(DataHoverClearEvent, (event) => { this.setState({ event }); }) ); this.subscription.add( eventBus.subscribe(LegacyGraphHoverEvent, (event) => { this.setState({ event }); }) ); this.subscription.add( eventBus.subscribe(LegacyGraphHoverClearEvent, (event) => { this.setState({ event }); }) ); } componentWillUnmount() { this.subscription.unsubscribe(); } render() { const { event } = this.state; if (!event) { return (
No events yet
); } const { type, payload, origin } = event; return ( {/* eslint-disable-next-line @grafana/i18n/no-untranslated-strings */}

event.origin: {(origin as any)?.path}

{/* eslint-disable-next-line @grafana/i18n/no-untranslated-strings */} event.type: {type} {Boolean(payload) && ( <>
{JSON.stringify(payload.point, null, '  ')}
{payload.data && ( )} )}
); } }