import { AbsoluteTimeRange, DataQueryResponse, GrafanaTheme2, LoadingState, SplitOpen, TimeZone } from '@grafana/data'; import { Alert, Button, Collapse, TooltipDisplayMode, useStyles2, useTheme2 } from '@grafana/ui'; import { ExploreGraph } from './ExploreGraph'; import React from 'react'; import { css } from '@emotion/css'; type Props = { logsVolumeData?: DataQueryResponse; absoluteRange: AbsoluteTimeRange; timeZone: TimeZone; splitOpen: SplitOpen; width: number; onUpdateTimeRange: (timeRange: AbsoluteTimeRange) => void; onLoadLogsVolume: () => void; }; export function LogsVolumePanel(props: Props) { const { width, logsVolumeData, absoluteRange, timeZone, splitOpen, onUpdateTimeRange, onLoadLogsVolume } = props; const theme = useTheme2(); const styles = useStyles2(getStyles); const spacing = parseInt(theme.spacing(2).slice(0, -2), 10); const height = 150; let LogsVolumePanelContent; if (!logsVolumeData) { return null; } else if (logsVolumeData?.error) { return ( {logsVolumeData.error.data?.message || logsVolumeData.error.statusText || logsVolumeData.error.message} ); } else if (logsVolumeData?.state === LoadingState.Loading) { LogsVolumePanelContent = Logs volume is loading...; } else if (logsVolumeData?.data) { if (logsVolumeData.data.length > 0) { LogsVolumePanelContent = ( ); } else { LogsVolumePanelContent = No volume data.; } } const zoomRatio = logsLevelZoomRatio(logsVolumeData, absoluteRange); let zoomLevelInfo; if (zoomRatio !== undefined && zoomRatio < 1) { zoomLevelInfo = ( <> Reload logs volume