mirror of
https://github.com/grafana/grafana.git
synced 2025-02-15 10:03:33 -06:00
* removed js-fields * added buttons * rename detectedField to field * removed unused things from `logParser.ts` * improve comment * wip * better way for statistics * better hide-stats button * update tests * updated tests and var names * made props optional again * fix padding * fix unused import * removed test * close elements * renamed `LogRowMessageDetectedFields` to `LogRowMessageDisplayedFields` * add active style to menu button * changed comment in logParser * updated ToolbarButton colors * rename `Data Links` to `Links` * fix stats button being wrongly highlighted
52 lines
1.5 KiB
TypeScript
52 lines
1.5 KiB
TypeScript
import { css } from '@emotion/css';
|
|
import React, { PureComponent } from 'react';
|
|
|
|
import { LogRowModel, Field, LinkModel, DataFrame } from '@grafana/data';
|
|
import { withTheme2, Themeable2 } from '@grafana/ui';
|
|
|
|
import { getAllFields } from './logParser';
|
|
|
|
export interface Props extends Themeable2 {
|
|
row: LogRowModel;
|
|
showDetectedFields: string[];
|
|
wrapLogMessage: boolean;
|
|
getFieldLinks?: (field: Field, rowIndex: number, dataFrame: DataFrame) => Array<LinkModel<Field>>;
|
|
}
|
|
|
|
class UnThemedLogRowMessageDisplayedFields extends PureComponent<Props> {
|
|
render() {
|
|
const { row, showDetectedFields, getFieldLinks, wrapLogMessage } = this.props;
|
|
const fields = getAllFields(row, getFieldLinks);
|
|
const wrapClassName = wrapLogMessage
|
|
? ''
|
|
: css`
|
|
white-space: nowrap;
|
|
`;
|
|
|
|
const line = showDetectedFields
|
|
.map((parsedKey) => {
|
|
const field = fields.find((field) => {
|
|
const { key } = field;
|
|
return key === parsedKey;
|
|
});
|
|
|
|
if (field !== undefined && field !== null) {
|
|
return `${parsedKey}=${field.value}`;
|
|
}
|
|
|
|
if (row.labels[parsedKey] !== undefined && row.labels[parsedKey] !== null) {
|
|
return `${parsedKey}=${row.labels[parsedKey]}`;
|
|
}
|
|
|
|
return null;
|
|
})
|
|
.filter((s) => s !== null)
|
|
.join(' ');
|
|
|
|
return <td className={wrapClassName}>{line}</td>;
|
|
}
|
|
}
|
|
|
|
export const LogRowMessageDisplayedFields = withTheme2(UnThemedLogRowMessageDisplayedFields);
|
|
LogRowMessageDisplayedFields.displayName = 'LogRowMessageDisplayedFields';
|