import React from 'react'; import { TabbedContainer, TabConfig } from '@grafana/ui'; import { PanelData, TimeZone } from '@grafana/data'; import { runQueries } from './state/query'; import { StoreState, ExploreItemState, ExploreId } from 'app/types'; import { hot } from 'react-hot-loader'; import { connect } from 'react-redux'; import { ExploreDrawer } from 'app/features/explore/ExploreDrawer'; import { InspectJSONTab } from 'app/features/inspector/InspectJSONTab'; import { QueryInspector } from 'app/features/inspector/QueryInspector'; import { InspectStatsTab } from 'app/features/inspector/InspectStatsTab'; import { InspectDataTab } from 'app/features/inspector/InspectDataTab'; import { InspectErrorTab } from 'app/features/inspector/InspectErrorTab'; interface DispatchProps { runQueries: typeof runQueries; } interface Props extends DispatchProps { loading: boolean; width: number; exploreId: ExploreId; queryResponse?: PanelData; onClose: () => void; } export function ExploreQueryInspector(props: Props) { const { loading, width, onClose, queryResponse } = props; const dataFrames = queryResponse?.series || []; const error = queryResponse?.error; const statsTab: TabConfig = { label: 'Stats', value: 'stats', icon: 'chart-line', content: , }; const jsonTab: TabConfig = { label: 'JSON', value: 'json', icon: 'brackets-curly', content: , }; const dataTab: TabConfig = { label: 'Data', value: 'data', icon: 'database', content: ( ), }; const queryTab: TabConfig = { label: 'Query', value: 'query', icon: 'info-circle', content: props.runQueries(props.exploreId)} />, }; const tabs = [statsTab, queryTab, jsonTab, dataTab]; if (error) { const errorTab: TabConfig = { label: 'Error', value: 'error', icon: 'exclamation-triangle', content: , }; tabs.push(errorTab); } return ( {}}> ); } function mapStateToProps(state: StoreState, { exploreId }: { exploreId: ExploreId }) { const explore = state.explore; const item: ExploreItemState = explore[exploreId]!; const { loading, queryResponse } = item; return { loading, queryResponse, }; } const mapDispatchToProps: DispatchProps = { runQueries, }; export default hot(module)(connect(mapStateToProps, mapDispatchToProps)(ExploreQueryInspector));