import React, { Fragment, PureComponent } from 'react'; import Highlighter from 'react-highlight-words'; import { RawTimeRange } from 'app/types/series'; import { LogsModel } from 'app/core/logs_model'; import { findHighlightChunksInText } from 'app/core/utils/text'; import { Switch } from 'app/core/components/Switch/Switch'; import Graph from './Graph'; const graphOptions = { series: { bars: { show: true, lineWidth: 5, // barWidth: 10, }, // stack: true, }, yaxis: { tickDecimals: 0, }, }; interface LogsProps { className?: string; data: LogsModel; loading: boolean; position: string; range?: RawTimeRange; onChangeTime?: (range: RawTimeRange) => void; } interface LogsState { showLabels: boolean; showLocalTime: boolean; showUtc: boolean; } export default class Logs extends PureComponent { state = { showLabels: true, showLocalTime: true, showUtc: false, }; onChangeLabels = (event: React.SyntheticEvent) => { const target = event.target as HTMLInputElement; this.setState({ showLabels: target.checked, }); }; onChangeLocalTime = (event: React.SyntheticEvent) => { const target = event.target as HTMLInputElement; this.setState({ showLocalTime: target.checked, }); }; onChangeUtc = (event: React.SyntheticEvent) => { const target = event.target as HTMLInputElement; this.setState({ showUtc: target.checked, }); }; render() { const { className = '', data, loading = false, position, range } = this.props; const { showLabels, showLocalTime, showUtc } = this.state; const hasData = data && data.rows && data.rows.length > 0; const cssColumnSizes = ['4px']; if (showUtc) { cssColumnSizes.push('minmax(100px, max-content)'); } if (showLocalTime) { cssColumnSizes.push('minmax(100px, max-content)'); } if (showLabels) { cssColumnSizes.push('minmax(100px, 25%)'); } cssColumnSizes.push('1fr'); const logEntriesStyle = { gridTemplateColumns: cssColumnSizes.join(' '), }; return (
{hasData && data.meta && (
{data.meta.map(item => (
{item.label}: {item.value}
))}
)}
{loading &&
}
{hasData && data.rows.map(row => (
{showUtc &&
{row.timestamp}
} {showLocalTime &&
{row.timeLocal}
} {showLabels && (
{row.labels}
)}
))}
{!loading && !hasData && 'No data was returned.'}
); } }