import React from 'react'; import { LoadingState } from '@grafana/data'; import { SceneComponentProps, SceneDataProvider, SceneDataTransformer, sceneGraph, SceneObjectBase, SceneObjectRef, SceneObjectState, VizPanel, } from '@grafana/scenes'; import { t } from 'app/core/internationalization'; import { InspectTab } from 'app/features/inspector/types'; import { GetDataOptions } from 'app/features/query/state/PanelQueryRunner'; import { InspectDataTab as InspectDataTabOld } from '../../inspector/InspectDataTab'; export interface InspectDataTabState extends SceneObjectState { panelRef: SceneObjectRef; options: GetDataOptions; } export class InspectDataTab extends SceneObjectBase { public constructor(state: Omit) { super({ ...state, options: { withTransforms: true, withFieldConfig: true, }, }); } public getTabLabel() { return t('dashboard.inspect.data-tab', 'Data'); } public getTabValue() { return InspectTab.Data; } public onOptionsChange = (options: GetDataOptions) => { this.setState({ options }); }; static Component = ({ model }: SceneComponentProps) => { const { options } = model.useState(); const panel = model.state.panelRef.resolve(); const dataProvider = sceneGraph.getData(panel); const { data } = getDataProviderToSubscribeTo(dataProvider, options.withTransforms).useState(); const timeRange = sceneGraph.getTimeRange(panel); if (!data) {
No data found
; } return ( ); }; } function hasTransformations(dataProvider: SceneDataProvider) { if (dataProvider instanceof SceneDataTransformer) { return dataProvider.state.transformations.length > 0; } return false; } function getDataProviderToSubscribeTo(dataProvider: SceneDataProvider, withTransforms: boolean) { if (withTransforms && dataProvider instanceof SceneDataTransformer) { return dataProvider.state.$data!; } return dataProvider; }