|
|
|
@ -40,13 +40,23 @@ interface RowProps { |
|
|
|
|
allRows: LogRow[]; |
|
|
|
|
highlighterExpressions?: string[]; |
|
|
|
|
row: LogRow; |
|
|
|
|
showDuplicates: boolean; |
|
|
|
|
showLabels: boolean | null; // Tristate: null means auto
|
|
|
|
|
showLocalTime: boolean; |
|
|
|
|
showUtc: boolean; |
|
|
|
|
onClickLabel?: (label: string, value: string) => void; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function Row({ allRows, highlighterExpressions, onClickLabel, row, showLabels, showLocalTime, showUtc }: RowProps) { |
|
|
|
|
function Row({ |
|
|
|
|
allRows, |
|
|
|
|
highlighterExpressions, |
|
|
|
|
onClickLabel, |
|
|
|
|
row, |
|
|
|
|
showDuplicates, |
|
|
|
|
showLabels, |
|
|
|
|
showLocalTime, |
|
|
|
|
showUtc, |
|
|
|
|
}: RowProps) { |
|
|
|
|
const previewHighlights = highlighterExpressions && !_.isEqual(highlighterExpressions, row.searchWords); |
|
|
|
|
const highlights = previewHighlights ? highlighterExpressions : row.searchWords; |
|
|
|
|
const needsHighlighter = highlights && highlights.length > 0; |
|
|
|
@ -55,15 +65,10 @@ function Row({ allRows, highlighterExpressions, onClickLabel, row, showLabels, s |
|
|
|
|
}); |
|
|
|
|
return ( |
|
|
|
|
<> |
|
|
|
|
<div className={row.logLevel ? `logs-row-level logs-row-level-${row.logLevel}` : ''}> |
|
|
|
|
{row.duplicates > 0 && ( |
|
|
|
|
<div className="logs-row-level__duplicates" title={`${row.duplicates} duplicates`}> |
|
|
|
|
{Array.apply(null, { length: row.duplicates }).map((bogus, index) => ( |
|
|
|
|
<div className="logs-row-level__duplicate" key={`${index}`} /> |
|
|
|
|
))} |
|
|
|
|
</div> |
|
|
|
|
)} |
|
|
|
|
</div> |
|
|
|
|
{showDuplicates && ( |
|
|
|
|
<div className="logs-row-duplicates">{row.duplicates > 0 ? `${row.duplicates + 1}x` : null}</div> |
|
|
|
|
)} |
|
|
|
|
<div className={row.logLevel ? `logs-row-level logs-row-level-${row.logLevel}` : ''} /> |
|
|
|
|
{showUtc && ( |
|
|
|
|
<div className="logs-row-time" title={`Local: ${row.timeLocal} (${row.timeFromNow})`}> |
|
|
|
|
{row.timestamp} |
|
|
|
@ -228,6 +233,7 @@ export default class Logs extends PureComponent<LogsProps, LogsState> { |
|
|
|
|
const { dedup, deferLogs, hiddenLogLevels, renderAll, showLocalTime, showUtc } = this.state; |
|
|
|
|
let { showLabels } = this.state; |
|
|
|
|
const hasData = data && data.rows && data.rows.length > 0; |
|
|
|
|
const showDuplicates = dedup !== LogsDedupStrategy.none; |
|
|
|
|
|
|
|
|
|
// Filtering
|
|
|
|
|
const filteredData = filterLogLevels(data, hiddenLogLevels); |
|
|
|
@ -257,7 +263,12 @@ export default class Logs extends PureComponent<LogsProps, LogsState> { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Grid options
|
|
|
|
|
const cssColumnSizes = ['3px']; // Log-level indicator line
|
|
|
|
|
const cssColumnSizes = []; |
|
|
|
|
if (showDuplicates) { |
|
|
|
|
cssColumnSizes.push('max-content'); |
|
|
|
|
} |
|
|
|
|
// Log-level indicator line
|
|
|
|
|
cssColumnSizes.push('3px'); |
|
|
|
|
if (showUtc) { |
|
|
|
|
cssColumnSizes.push('minmax(100px, max-content)'); |
|
|
|
|
} |
|
|
|
@ -341,6 +352,7 @@ export default class Logs extends PureComponent<LogsProps, LogsState> { |
|
|
|
|
allRows={processedRows} |
|
|
|
|
highlighterExpressions={highlighterExpressions} |
|
|
|
|
row={row} |
|
|
|
|
showDuplicates={showDuplicates} |
|
|
|
|
showLabels={showLabels} |
|
|
|
|
showLocalTime={showLocalTime} |
|
|
|
|
showUtc={showUtc} |
|
|
|
@ -355,6 +367,7 @@ export default class Logs extends PureComponent<LogsProps, LogsState> { |
|
|
|
|
key={row.key + row.duplicates} |
|
|
|
|
allRows={processedRows} |
|
|
|
|
row={row} |
|
|
|
|
showDuplicates={showDuplicates} |
|
|
|
|
showLabels={showLabels} |
|
|
|
|
showLocalTime={showLocalTime} |
|
|
|
|
showUtc={showUtc} |
|
|
|
|