import React, { Fragment, PureComponent } from 'react'; import { LogsModel, LogRow } from 'app/core/logs_model'; interface LogsProps { className?: string; data: LogsModel; loading: boolean; } const EXAMPLE_QUERY = '{job="default/prometheus"}'; const Entry: React.SFC = props => { const { entry, searchMatches } = props; if (searchMatches && searchMatches.length > 0) { let lastMatchEnd = 0; const spans = searchMatches.reduce((acc, match, i) => { // Insert non-match if (match.start !== lastMatchEnd) { acc.push(<>{entry.slice(lastMatchEnd, match.start)}); } // Match acc.push( {entry.substr(match.start, match.length)} ); lastMatchEnd = match.start + match.length; // Non-matching end if (i === searchMatches.length - 1) { acc.push(<>{entry.slice(lastMatchEnd)}); } return acc; }, []); return <>{spans}; } return <>{props.entry}; }; export default class Logs extends PureComponent { render() { const { className = '', data } = this.props; const hasData = data && data.rows && data.rows.length > 0; return (
{hasData ? (
{data.rows.map(row => (
{row.timeLocal}
))}
) : null} {!hasData ? (
Enter a query like {EXAMPLE_QUERY}
) : null}
); } }